类目标中所有方法的lldb断点c
我怎样才能自动使用lldb在Objective C类的所有方法上设置断点?
这对于学习复杂的遗留类的行为很有用。 我正在使用Xcode(包括lldb)进行iOS开发,手动浏览Xcode中的(大)文件并点击每个方法旁边的装订线来设置断点是很麻烦的。
一个select是使用正则expression式断点。
breakpoint set -r '\[ClassName .*\]$'
你可以玩正则expression式来适应你的需求。
该命令将创build一个断点,停止在该类实现的所有方法上。 但是,从超类inheritance的方法不会有断点。
为了获得超类的方法,你必须使用条件断点。 例如,如果超类是UIViewController
,则可以执行如下操作:
br s -r '\[UIViewController .*\]$' -c '(BOOL)[(id)$arg1 isKindOfClass:[CustomVC class]]'
对于x86更改(id)$arg1
到*(id*)($ebp+8)
。
最后,如果你真的想了解通过各种类的控制stream程,请检查dtrace。 这可能比debugging器更适合这个。
br se -f FooViewController.m -p '^@property|^ *- *\('
“br se”是“断点设置”的简称,将你自己的文件名传递给-f
参数,而-p
参数是Objective C中属性和方法的粗略正则expression式。
注意事项:这似乎不适用于.h
文件,所以如果您在标题中声明了要观看的属性,则可能需要在其支持的实例variables上设置观察点。
这是迄今为止我find的最好的解决scheme,如果您认为他们会有所帮助,请张贴替代解决scheme。