Подтвердить что ты не робот

Ошибка: не удалось создать структуру: не удалось прочитать eax

Для отладки на симуляторе iOS я имел возможность считывать регистр $eax и получать сообщение об ошибке. Тем не менее, я не знаю, если это новая версия XCode 4.6 и iOS 6.1, я больше не могу этого делать.

(lldb) po $eax
error: Couldn't materialize struct: Couldn't read eax (materialize)
Errored out in Execute, couldn't PrepareToExecuteJITExpression

Что теперь? Кроме того, eax не находится в реальном устройстве, что мне делать?

4b9b3361

Ответ 1

Согласно этому руководству LLDB, вы можете использовать:

register read

Чтобы проверить регистры общего назначения текущего потока

Ответ 2

В то время как trojanfoe дал отличный ответ, что-то, что может помочь другим, заключается в том, что если вы пытаетесь напечатать $eax в результате исключения, которое не отображает сообщение, убедитесь, что вы находитесь в рамке objc_exception_throw в Навигатор отладки ( + 6) при печати. В противном случае вы получите ошибку "не может материализоваться" выше.

Ответ 3

Убедитесь, что ваша текущая схема сборки находится в режиме отладки, потому что в противном случае скомпилированное приложение будет оптимизировано путем удаления дополнительной информации для отладки.

Если вы настраиваете собственные схемы сборки, перейдите в "Настройки сборки" → "Генерация кода" → "Уровень оптимизации", установите значение "Нет [-O0]".