Log*_*Rex 4 xcode objective-c ios lldb
我在XCode项目的特定类中设置了几个断点.我在下面讨论的所有内容都发生在这个类文件中.
我-(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"
breakpoint list在LLDB中调用返回以下内容
默认情况下,lldb不会在手动调用的代码中的断点处停止.大多数人使用expr&expr -O --即po打印价值和物品,如果他们停在他们为其他目的设定的断点时感到恼火.
但是,很容易控制此行为,只需使用:
(lldb) expr -i 0 -- [self areaNbr]
Run Code Online (Sandbox Code Playgroud)
然后你会在你的断点处停下来.
在这个例子中,我省略了-O这是对象打印部分,因为如果你只是想调用这个方法,你可能不关心description在计算表达式之后调用结果.
您可以通过执行以下操作查看表达式评估的所有选项:
(lldb) help expr
Run Code Online (Sandbox Code Playgroud)