错误:无法实现struct:无法读取eax

时间:2013-02-05 09:41:31

标签: objective-c debugging

对于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不在真实设备中,我该怎么办?

3 个答案:

答案 0 :(得分:28)

虽然trojanfoe给出了一个很好的答案,但也可能对其他人有所帮助的是,如果你因为没有显示消息的异常而试图打印$ eax,请确保你在objc_exception_throw框架中打印出来时,Debug Navigator( + 6 )。否则你将得到上面的“无法实现”错误。

答案 1 :(得分:18)

根据this LLDB guide,您可以使用:

register read

检查当前线程的通用寄存器

答案 2 :(得分:3)

确保您当前的构建方案处于调试模式,否则将通过剥离用于调试的其他信息来优化已编译的应用程序。

如果您要设置自己的构建方案,请转到构建设置 - >代码生成 - >优化级别,将值设置为“无[-O0]”。