我曾经从模拟器中运行的应用程序中获取异常详细信息,如下所示:
po $eax
自从我升级到XCode 4.6后,它就停止了工作;我总是得到这个错误:
error: warning: couldn't get object pointer (substituting NULL):
Couldn't find '_cmd' with appropriate type in scope
Couldn't materialize struct: Couldn't read eax (materialize)
Errored out in Execute, couldn't PrepareToExecuteJITExpression
我见过人们推荐使用它:
register read eax
但是这给了我这个错误:
eax = error: unavailable
如何在XCode 4.6中获取异常详细信息?
答案 0 :(得分:26)
如果在objc_exception_throw
中断,则在调用可能抛出异常的任何库之前,所选的堆栈帧是代码中的最后一帧。此时lldb不允许您访问某些寄存器(有关可能的解释,请参阅this answer。
要获取异常详细信息,您必须选择objc_exception_throw
堆栈帧:
现在po $eax
(po $rax
如果您在OS X 64位上运行,则在iPhone / iPad上运行po $r0
,在arm64上运行po $x0
)应该会为您提供异常详细信息。
答案 1 :(得分:3)
我没有任何要添加的东西,只需使用this awesome guide帮助您使用操作(脚本)设置异常断点,该操作在控制台中打印异常描述。
答案 2 :(得分:-3)
转到:
Product -> Scheme -> Edit Scheme -> Run on the left -> diagnostics tab
然后启用僵尸