LLDB方便变量对象分配是否为零?

时间:2013-06-06 03:00:04

标签: xcode lldb

在调试其他内容时遇到这种现象并且很好奇:

(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?

1 个答案:

答案 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?