您如何跟踪特定用户流中跨不同文件调用的所有方法?
在不同的点放置断点并观察回溯似乎不是最有效的方法。
相反,我想 -
1) 在感兴趣的项目中的所有方法之间放置一个断点。
2) 让所有的断点运行一个打印出文件名和方法名的调试器命令。
3) 编辑断点,使程序在命中断点后继续执行。 (当您编辑特定的 断点。)所以我们不会在任何断点处停止。
4) 禁用所有断点,直到我到达我需要处理的流程。
5) 在开始流程之前启用所有断点。 使用这种方法,我们不必在不同的地方手动放置断点来了解执行流程。流程完成后,我只需查看调试器控制台即可了解执行流程。
现在,问题 - 我们如何使用 lldb 命令来做到这一点? 将不胜感激任何输入/建议。
最佳答案
您不能使用 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
等将禁用这些位置。
这可能会有点慢,因为您的应用会一直启动和停止。但它会按照您的要求进行。
关于ios - 跨 Xcode 项目中的所有方法设置调试器断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427445/