-
XCode 7.2.1
-
iPad Retina iOS 9.2模拟器
我在XCode项目的特定类中设置了几个断点 . 我在下面讨论的所有内容都发生在这个类文件中 .
我通过点击装订线在 -(int16_t)areaNbr
上设置了断点,并且没有设置条件或任何内容 . 我确认,就LLDB而言,它们存在于LLDB提示符中运行 breakpoint list
.
项目方案设置为构建用于调试,而不是发布 .
我在模拟器中运行项目,并在断点处停止 in a different method than the one in question ,此时我想转到LLDB提示符并调用 po [self areaNbr]
并逐步执行 areaNbr
.
请注意,因为这可能非常相关, I have NO code in the project itself that calls-(int16_t)areaNbr
现在,如果我向调用该方法的项目添加一些代码,我可以在 -(int16_t)areaNbr
上的断点处停止 .
例如,如果我添加像 NSLog(@"... %d", [self areaNbr])
这样的东西
我知道这个问题与编译方法无关,因为没有人调用它,因为如果这是真的,那么我对 po [self areaNbr]
的调用不会将结果吐出到调试器窗口,如下图所示 . 因此,该方法正在被编译,并且当然被调试器识别为执行目的...而不是用于步进目的 .
仅供参考, [self area]
正在返回"Area01"
在LLDB中调用 breakpoint list
将返回以下内容
1 回答
默认情况下,lldb不会在手动调用的代码中的断点处停止 . 大多数人使用
expr
&expr -O --
即po
来打印值和对象,如果他们在为其他目的设置的断点处停下来,他们会感到恼火 .但是,很容易控制此行为,只需使用:
然后你会在你的断点处停下来 .
在这个例子中,我省略了-O这是对象打印部分,因为如果你只想调用这个方法,你可能不关心在计算表达式后对结果调用
description
.您可以通过执行以下操作查看表达式评估的所有选项: