在调试其他内容时遇到这种现象并且很好奇:
(lldb) po (NSException *)($eax)
$3 = 0x0d16c510 Test exception message
(lldb) expr NSException *$exception = (NSException *)($eax)
(lldb) po $exception
$exception = 0x00000000 <nil>
我正在6.1模拟器中运行iOS应用程序。为什么在引用$ eax直接给我一个对象时,分配一个方便变量给我nil?
答案 0 :(得分:0)
我尝试使用Xcode 4.6.2重现这一点但不能。我创建了一个模板iOS应用程序并在模拟器中启动它。我没有去找到我在寄存器中有异常的地方 - 但是寄存器值在这里很重要。
(lldb) reg read eax
eax = 0x10004005
(lldb) p (NSException*) ($eax)
(NSException *) $0 = 0x10004005 <not an Objective-C object>
(lldb) expr NSException*$exception = (NSException *)($eax)
(lldb) p $exception
(NSException *) $exception = 0x10004005 <not an Objective-C object>
(lldb)
在您的示例中$exception
的值为0x0,但是当我使用4.6.2尝试此操作时,它看起来像是在工作。您使用的是什么版本的Xcode? p>