2013-06-06 19 views
1

就遇到了这个现象,同时调试别的东西很好奇: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?

回答

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?

+0

很奇怪 - 我也使用Xcode 4.6.2(4H1003)。让我试着在今天晚上的一个干净的项目中再现它,看看它是否仍然存在。 – Arkaaito