Xcode奇怪的调试器问题?

时间:2016-04-15 01:49:05

标签: ios xcode debugging lldb

两个整数,一个是使用integerForKey:方法从NSUserDefaults加载的。有没有人看到过这样的行为? 结果显然应该是2,或者为时已晚,我应该睡觉? 这太奇怪了......

enter image description here

1 个答案:

答案 0 :(得分:2)

是的,这是一个错误,请将其与lldb.llvm.org bugzilla一起提交。

注意,po只是简写:运行基本的“expr”命令将参数计算为表达式,然后在结果上调用description方法。

表达式命令的工作方式是,如果表达式足以解释,我们就这样做,否则我们JIT表达式并将其插入到debugee中并运行它。错误在解释器中,显然它不能用签名整数做mod。无符号整数类型正常工作,JIT结果也正确。例如,在Kurt的例子中:

(lldb) expr n % m
(int) $5 = 0

那不对!但是:

(lldb) expr (void) printf ("%d\n", n % m)
2
(lldb)

因为表达式涉及函数调用,所以我们无法解释它并且不得不JIT它,这使计算正确。这也是一个非常粗略的解决方法,但也请提交一个错误。