在Xcode项目中的所有方法中设置调试器断点

时间:2016-05-25 03:45:17

标签: ios xcode debugging lldb

如何跟踪特定用户流中不同文件中调用的所有方法?

将断点放在不同的点并观察回溯似乎不是最有效的方法。

相反,我想 -

1)在感兴趣的项目中的所有方法上放置一个断点。

2)使所有断点运行调试器命令,该命令打印出文件名和方法名称。

3)编辑断点,以便在命中断点后程序继续执行。 (编辑特定内容时,此选项可用 断点。)所以我们不要在任何断点处停下来。

4)禁用所有断点,直到达到我需要处理的流程。

5)在开始流之前启用所有断点。 使用这种方法,我们不必手动将断点放在不同的位置以理解执行流程。流程完成后,我可以查看调试器控制台并找出执行流程。

现在,问题 - 我们如何使用lldb命令执行此操作? 非常感谢任何意见/建议。

3 个答案:

答案 0 :(得分:1)

您无法使用Xcode断点接口执行此操作,但在lldb控制台中您可以执行以下操作:

(lldb) break set -r . -s AppName
Breakpoint 1: 478 locations.
(lldb) br com add
Enter your debugger command(s).  Type 'DONE' to end.
> bt 
> continue 
> DONE
(lldb)

设置"符号名称匹配正则表达式断点"在名为AppName的二进制/共享库中的所有名称("。"匹配所有内容)上。如果不使用-s选项,它将匹配所有符号。那会很有效但很慢......

该命令打印一个回溯并继续。

这只会产生一个断点,所以你可以这样做:

(lldb) break disable 1

直到你需要它,然后启用它:

(lldb) break enable 1

如果您只想捕捉一些方法,可以调整正则表达式,如果您发现自己对某些地方不感兴趣,可以单独禁用断点内的位置。这样做了。

(lldb) break list 1

将显示所有位置,并且:

(lldb) break disable 1.2-1.10 1.15

等。将禁用位置。

这可能会有点慢,因为你的应用程序将启动&一直停下来。但它会做你要求的。

答案 1 :(得分:0)

您可以在不同文件中的所有方法上放置断点,并在该方法中跟踪执行情况,单击Stepover。

Step over -  shortcut - f6, it stops execution at next loc.

另外,您也可以在输出窗口中输入“po VariableName”来检查特定变量或数组的值。

答案 2 :(得分:0)

您可以通过添加符号异常断点来添加相关方法名称。