如何在Xcode中自动设置所有方法的断点?

41

如何在Xcode自动设置所有方法的断点?我想了解我的程序如何运行,以及当我与用户界面交互时调用哪些方法。

3个回答

61
  1. 在Xcode中运行您的应用程序。
  2. 按下⌘⌃Y(Debug -> Pause)。
  3. 进入调试器控制台:⌘⇧C
  4. 键入breakpoint set -r . -s <PRODUCT_NAME>(插入您的应用程序名称)。

lldb将会回答类似于以下内容...

Breakpoint 1: 4345 locations

现在只需按下“继续”按钮。

breakpoint set是lldb用于创建断点的命令。位置是使用正则表达式(-r)指定的函数/方法名称,例如.可以匹配任何方法。-s选项用于将范围限制为您的可执行文件(需要排除框架)。

当您运行应用程序时,lldb现在会在主可执行文件的函数被调用时中断。

要禁用断点,请键入breakpoint delete 1(插入正确的断点号)。


感谢详细的解释。我尝试展示断点列表,并且它起作用了,但是如何在lldb上对所有方法设置断点? - Matrosov Oleksandr
2
以上描述中的第三点是:如果您的应用程序名为“MyFooApp”,请在调试器控制台中键入breakpoint set -r . -s MyFooApp - Nikolai Ruhe
谢谢,现在它可以工作了(是我的错 - 我输入项目名称时犯了一个错误 :) 抱歉)。非常感谢您 - 它运行得很好! - Matrosov Oleksandr
这会更新代码编辑器中显示的断点吗?我想在查看它们后删除断点...本质上运行代码覆盖测试。 - William Entriken
2
有没有可能仅针对特定的文件或类进行操作?例如,我只想处理我的类,而不是导入的/CocoaPod文件。 - Chris Paveglio

16

有许多可能性,但没有办法仅为您的函数设置断点。您可以尝试:

breakpoint set -r '\[ClassName .*\]$'

将断点添加到类中的所有方法

breakpoint set -f file.m -p ' *- *\('

将断点添加到文件中的所有方法

您还可以将它与多个文件一起使用:

breakpoint set -f file1.m -f file2.m -p ' *- *\('

快捷方式:

br se -f file1.m -f file2.m -p ' *- *\('

您可以为所有类中具有某个前缀(也可以只是您自己的类)的所有方法添加断点

br se -r . -s Prefix

这行代码(wzbozon回答):

breakpoint set -n viewDidLoad

将在所有类中的所有方法viewDidLoad上设置断点。

我尝试过,但无法仅在我们自己的方法上设置断点。


16

有些情况下,仅在某些方法上设置断点会更方便。

使用LLDB,我们可以按名称在所有ViewDidLoad方法上设置断点,例如。

(lldb) breakpoint set -n ViewDidLoad

这里的"-n"表示按名称。

同时,我们可以按选择器名称设置断点:

(lldb) breakpoint set -S alignLeftEdges:

这里的"-S"表示选择器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接