7

我曾经从模拟器中运行的应用程序中获取异常详细信息,如下所示:

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 中获取异常详细信息?

4

3 回答 3

26

如果您objc_exception_throw在调用任何可能引发异常的库之前中断所选的堆栈帧是代码中的最后一帧。那时 lldb 不允许您访问某些寄存器(有关可能的解释,请参阅此答案

要获取异常详细信息,您必须选择objc_exception_throw堆栈帧:

选择 objc_exception_throw 堆栈帧

现在po $eaxpo $rax如果您在 OS X 64 位、po $r0iPhone/iPad、po $x0arm64 上运行)应该为您提供异常详细信息。

于 2013-03-05T23:12:19.447 回答
3

我没有什么要添加的,只需使用这个很棒的指南,它可以帮助您使用在控制台中打印异常描述的操作(脚本)设置异常断点。

于 2015-04-16T09:54:39.573 回答
-3

去 :

Product -> Scheme -> Edit Scheme -> Run on the left -> diagnostics tab 

然后启用僵尸

于 2013-03-08T17:01:23.663 回答