的XCode不会停止在断点方法从LLDB
- 的XCode 7.2.1
- iPad的视网膜的iOS 9.2模拟器
我有几个断点在一个特定的类在XCode项目设置。 我在下面讨论的一切都发生在这个类文件中。的XCode不会停止在断点方法从LLDB
我在-(int16_t)areaNbr
上设置了断点,方法是单击装订线,并且不设置任何条件或任何内容。我通过LLDB提示符运行breakpoint list
,证实它们存在于LLDB中。
项目方案设置为构建调试,而不是发布。
我运行在模拟器的项目,并在一个比问题,当时我想去的LLDB提示,并呼吁po [self areaNbr]
并通过areaNbr
步骤不同的方法在断点处停止。
请注意,因为这可能是非常相关的,我在调用-(int16_t)areaNbr
目前该项目本身没有代码,我能得到这个停在我的断点上-(int16_t)areaNbr
,如果我加入一些代码调用该方法的项目。
例如,如果我添加类似NSLog(@"... %d", [self areaNbr])
我知道这个问题已经无关编译消失只是因为没有调用它的方法,因为如果这是真的,那么我对po [self areaNbr]
呼叫不能随地吐痰将结果输出到调试器窗口,如下图所示。所以这个方法正在被编译,并且当然被调试器识别为执行的目的......仅仅是为了步进目的。
仅供参考,[self area]
正在恢复 “Area01”
拨打LLDB breakpoint list
返回以下
默认情况下,LLDB不会在断点处停止手叫码。大多数人使用expr
& expr -O --
即po
来打印值&对象,并且如果他们停在他们为其他目的设置的断点处而感到恼火。
然而,很容易控制这种行为,只需使用:
(lldb) expr -i 0 -- [self areaNbr]
然后你会停在你的断点。
在这个例子中,我忽略了-O是打印对象的部分,因为如果你只是想调用这个方法,你可能不会在计算表达式后对结果调用description
。
您可以通过执行看到表达式求所有选项:
(lldb) help expr
真正起作用的全是鳄梨酱'莫莱莫尔......辉煌。 –
如果你想想看够长,你就会明白为什么从本身执行代码时LLDB不接受断点。 – Avi
您不应该使用'po'来打印'uint16_t'。 “po”是“** p ** rint ** o **对象”。使用'p'作为原始类型。 –
尝试'表达式-i false - [self areaNbr]'。祝你好运。 – Avi