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

标签 ios xcode debugging lldb

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

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

相反,我想 -

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/

相关文章:

objective-c - Objective C 中项目的 “Swift Language Version” (SWIFT_VERSION) build设置错误

debugging - 本地 Azure 待办事项列表

windows - Windows 崩溃对话框中十六进制数字的含义

IOS:多个数组显示在单个 Tableview 上

iphone - 自定义 UITableViewCell 在 init* 中设置所有内容或使用属性

iphone - 从我在屏幕上滑动的方式给出项目方向和速度

ios - ipa 无法从 itunes 同步到设备

ios - Xcode 4.x 中的代码自动完成/语法突出显示问题

ios - Xcode:在多人之间共享相同的 Bundle ID

c# - 如何在 Visual Studio 2013 中的 C# 结构字段上设置断点