对于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不在真实设备中,我该怎么办?
答案 0 :(得分:28)
虽然trojanfoe给出了一个很好的答案,但也可能对其他人有所帮助的是,如果你因为没有显示消息的异常而试图打印$ eax,请确保你在objc_exception_throw框架中打印出来时,Debug Navigator(⌘ + 6 )。否则你将得到上面的“无法实现”错误。
答案 1 :(得分:18)
答案 2 :(得分:3)
确保您当前的构建方案处于调试模式,否则将通过剥离用于调试的其他信息来优化已编译的应用程序。
如果您要设置自己的构建方案,请转到构建设置 - >代码生成 - >优化级别,将值设置为“无[-O0]”。