iOS开发来说,断点调试时必不可少的,以前一直在用“Exceptions breakpoint(全局或异常断点)”进行调试,但是最近写的程序有时异常崩溃后,会给出让用Symbolic Breakpoint 去调试,才开始注意到这个有叫做“符号断点”的东西,以前还真没怎么用过,找了下网上的文章,没发现特别好的,下面的这个文章做了些基本的应用介绍,把这个分享给大家,如果大家有好的关于这方面的文字请在评论中分享给我,谢谢!
转自:http://blog.csdn.net/xiepanqi/article/details/50890038
http://stackoverflow.com/questions/26389273/how-to-trap-on-uiviewalertforunsatisfiableconstraints
使用
- 创建断点
symbolic breakpoint使用很简单,点击断点界面的“+”号,选择”Add Symbolic Breakpoint”就创建了一个断点
-
编辑断点
创建好后会直接弹出断点编辑界面,也可以通过右击断点选择”Edit Breakpoint…”进入编辑界面。
下面开始最重要部分,断点的可编辑项。 从编辑界面可以看到断点可编辑的项有Symbol、Module、Condition、Ignore、Action、Options。
Symbol
断点触发函数。有两种函数写法,一种是C函数样式,一种是OC方法样式。 C函数样式只需要写函数名,不用写后面的()和参数。例如NSLog
。 OC方法样式的[className methodName] className是类名,methodName是方法名(不区分类方法和实例方法)。如果写标记的这个类的方法被子类重写了则子类的方法也会触发断点。例如[UIViewController viewDidLoad]
。Module
模块筛选。可以避免不同库中方法名或者函数名相同。-
Condition
触发条件。这里可以添加一些指定触发条件,比如添加第一个参数不能为nil。这里$arg3代表第1个参数,$arg4代表第2个参数,以此类推。这里也可以调用方法来判断,但必须是类方法,并且返回值必须为BOOL类型。 样例:找出给[UIImage imageNamed:]传nil的代码。这里就需要设置Symbol为[UIImage imageNamed:],然后Condition设置为$arg3 == nil。这样在运行中如果遇到传nil就会触发断点。
Ignore
触发开始次数。设置这个值可以忽略前面指定次数的触发。Action
触发活动。这里是当断点触发后要执行的动作,可以添加多条,执行的顺序是从上到下。一共有6种可执行类型。AppleScript
会在断点触发的时候执行Mac OS X内置的一种功能强大的脚本语言,具体写法可以自行百度AppleScript。Capture GPU Frame
GPU帧捕获,具体作用还没研究出来。Debugger Command
会在断点触发的时候执行LLDB命令。可以打印对象、修改对象值等功能。Log Message
会在断点触发的时候打印日志。其中@exp@打印对象值,exp为对象名;%B表示断点名;%H表示当前断点触发的次数。Shell Command
会在断点触发的时候执行Shell命令。Sound
触发声音。感觉很炫酷,但没点用的功能。适合装逼。Options
是否进入DEBUG界面。勾选这个断点触发后不进入DEBUG界面,断点打印日志或者声音断点一般都勾选。