class objective c 中所有方法的 lldb 断点

lldb breakpoint on all methods in class objective c

如何使用 lldb 在 Objective C class 中的所有方法上自动设置断点?

这对于学习复杂遗产的行为很有用 class。我正在使用 Xcode(包括 lldb)进行 iOS 开发,手动浏览 Xcode 中的(大)文件并单击每个方法旁边的排水沟来设置断点很麻烦.

br se -f FooViewController.m -p '^@property|^ *- *\('

"br se" 是 "breakpoint set" 的缩写,将你自己的文件名传递给 -f 参数,而 -p 参数是 -p 中属性和方法的粗略正则表达式=24=].

注意事项: 这似乎不适用于 .h 文件,因此如果您在 header 中声明了要观看的属性那么您可能需要在它们的支持实例变量上设置观察点。

这是迄今为止我找到的最佳解决方案,如果您认为有帮助,请 post 其他解决方案。

一种选择是使用正则表达式断点。

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

您可以使用正则表达式来满足您的需要。

该命令将创建一个断点,该断点会在 由 class 实现 的所有方法上停止。但是继承自superclasses.

的方法不会有断点

要获取 superclass 上的方法,您必须使用条件断点。例如,如果 superclass 是 UIViewController,你可以这样做:

br s -r '\[UIViewController .*\]$' -c '(BOOL)[(id)$arg1 isKindOfClass:[CustomVC class]]'

对于 x86,将 (id)$arg1 更改为 *(id*)($ebp+8)

最后,如果您真的想了解各种 classes 的控制流,请查看 dtrace。它可能比调试器更适合这个。