XCode 未在从 LLDB 调用的方法中的断点处停止
XCode not stopping on breakpoint in method called from LLDB
- XCode 7.2.1
- iPad 视网膜 iOS 9.2 模拟器
我在 XCode 项目的特定 class 中设置了几个断点。
我在下面讨论的所有内容都发生在这个 class 文件中。
我通过单击装订线在 -(int16_t)areaNbr
上设置断点,并且不设置任何条件或任何东西。我从 LLDB 提示符 运行ning breakpoint list
确认它们就 LLDB 而言存在。
项目方案设置为调试构建,而非发布。
我 运行 模拟器中的项目,并在断点处停止 与所讨论的方法不同 ,此时我想转到 LLDB 提示符并调用 po [self areaNbr]
并单步执行 areaNbr
.
请注意,因为这可能非常相关,我在项目本身中没有调用
的代码
-(int16_t)areaNbr
现在,如果我向调用该方法的项目添加一些代码,我可以让它在 -(int16_t)areaNbr
的断点处停止。
例如,如果我添加 NSLog(@"... %d", [self areaNbr])
我知道这个问题与编译掉方法无关,因为没有任何东西调用它,因为如果那是真的,那么我对 po [self areaNbr]
的调用不会将结果吐出给调试器window如下图。因此,该方法正在被编译,并且肯定被调试器识别为存在以用于执行目的...只是不用于步进目的。
仅供参考,[self area]
返回 "Area01"
在 LLDB returns 中调用 breakpoint list
如下
默认情况下,lldb不会在手动调用代码的断点处停止。大多数人使用 expr
和 expr -O --
即 po
来打印值和对象,如果他们在为其他目的设置的断点处停止,他们会很生气。
然而,控制这种行为很容易,只需使用:
(lldb) expr -i 0 -- [self areaNbr]
然后你会在你的断点处停止。
在这个例子中,我省略了对象打印部分 -O,因为如果你只想调用这个方法,你可能不关心在结果上调用 description
表达式被评估。
您可以通过执行以下操作查看表达式评估的所有选项:
(lldb) help expr
- XCode 7.2.1
- iPad 视网膜 iOS 9.2 模拟器
我在 XCode 项目的特定 class 中设置了几个断点。 我在下面讨论的所有内容都发生在这个 class 文件中。
我通过单击装订线在 -(int16_t)areaNbr
上设置断点,并且不设置任何条件或任何东西。我从 LLDB 提示符 运行ning breakpoint list
确认它们就 LLDB 而言存在。
项目方案设置为调试构建,而非发布。
我 运行 模拟器中的项目,并在断点处停止 与所讨论的方法不同 ,此时我想转到 LLDB 提示符并调用 po [self areaNbr]
并单步执行 areaNbr
.
请注意,因为这可能非常相关,我在项目本身中没有调用
的代码
-(int16_t)areaNbr
现在,如果我向调用该方法的项目添加一些代码,我可以让它在 -(int16_t)areaNbr
的断点处停止。
例如,如果我添加 NSLog(@"... %d", [self areaNbr])
我知道这个问题与编译掉方法无关,因为没有任何东西调用它,因为如果那是真的,那么我对 po [self areaNbr]
的调用不会将结果吐出给调试器window如下图。因此,该方法正在被编译,并且肯定被调试器识别为存在以用于执行目的...只是不用于步进目的。
仅供参考,[self area]
返回 "Area01"
在 LLDB returns 中调用 breakpoint list
如下
默认情况下,lldb不会在手动调用代码的断点处停止。大多数人使用 expr
和 expr -O --
即 po
来打印值和对象,如果他们在为其他目的设置的断点处停止,他们会很生气。
然而,控制这种行为很容易,只需使用:
(lldb) expr -i 0 -- [self areaNbr]
然后你会在你的断点处停止。
在这个例子中,我省略了对象打印部分 -O,因为如果你只想调用这个方法,你可能不关心在结果上调用 description
表达式被评估。
您可以通过执行以下操作查看表达式评估的所有选项:
(lldb) help expr