Ответ 1
Согласно этому руководству LLDB, вы можете использовать:
register read
Чтобы проверить регистры общего назначения текущего потока
Для отладки на симуляторе 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 не находится в реальном устройстве, что мне делать?
Согласно этому руководству LLDB, вы можете использовать:
register read
Чтобы проверить регистры общего назначения текущего потока
В то время как trojanfoe дал отличный ответ, что-то, что может помочь другим, заключается в том, что если вы пытаетесь напечатать $eax в результате исключения, которое не отображает сообщение, убедитесь, что вы находитесь в рамке objc_exception_throw в Навигатор отладки (⌘ + 6) при печати. В противном случае вы получите ошибку "не может материализоваться" выше.
Убедитесь, что ваша текущая схема сборки находится в режиме отладки, потому что в противном случае скомпилированное приложение будет оптимизировано путем удаления дополнительной информации для отладки.
Если вы настраиваете собственные схемы сборки, перейдите в "Настройки сборки" → "Генерация кода" → "Уровень оптимизации", установите значение "Нет [-O0]".