我正在尝试使用Xcode的LLDB控制台来更改变量。我想使用断点的调试器命令来做到这一点,所以我的程序执行永远不会停止,我想手动更改变量。我正在使用Xcode 6.LLDB expr命令不改变变量
使用expression命令,我可以看到Xcode中的变量变化。我的断点位于myBoolValue == NO的检查上。如果我在发出表达式命令后检查myBoolValue的值,Xcode告诉我值为NO,但if语句永远不会正确计算,并且“do neat stuff”永远不会执行。
我LLDB表达改变变量: EXPR myBoolValue = NO;
当我执行这个命令,LLDB呼应如下: (BOOL)$ 0 = NO
缺少什么我在这里,为什么我看到的是myBoolValue改变,但if语句中的代码永远不会执行?
编辑:如果我使用Xcode更改值(不使用LLDB expr命令),if-check仍不能正确评估。我确信Xcode在发布的lldb提示符下发布了相同的命令,但if-check从未正确评估过程仍然很奇怪。
编辑2:这是汇编代码。我编辑了我的问题中的代码以匹配此程序集的代码。基本上同样的事情,但与NSLog声明作为我整洁的东西。
感谢您的评论。我编辑了我的原始问题以发布程序集。我还对代码做了一些小调整,将get neat stuff方法改为调用NSUserDefaults,并将代码体改为NSLog语句。 – Baxpin 2014-10-13 15:09:17
我希望看到的一件事就是您停下的位置的小符号“>”。它看起来像你会在这两种斑点 Ltmp1的: CMP R1,#0 < - 这里 BNE LBB0_2 < - 或HERE 一两件事,我看到的是有趣的,但..你比较“R1 “到#0。你可以做 (LLDB)框架VAR -L - myBoolValue 如果我们被告知(通过调试信息),其myBoolValue是在栈上的某个地方(在调试可能建立),我们肯定会改变堆栈上的价值,但我们不知道要更改“r1”中的值,因此即使编辑了“myBoolValue”,其在r1中的副本也不会受到影响 – 2014-10-13 17:45:03
对不起,我误解了您所要求的内容。我已经更新了这个问题,以显示程序停止在程序集的屏幕截图 – Baxpin 2014-10-21 16:58:45