级别: ★☆☆☆☆
标签:「Xcode断点调试」「iOS breakpoint」「iOS全局断点」
做者: Xs·H
审校: QiShare团队php
在iOS项目开发过程当中,经常使用到静态分析(Analyze)、断点(Breakpoint)和控制台(Console)进行代码调试。本篇文章介绍Xcode经常使用调试方法之“断点调试”。git
Xcode的断点功能是iOS开发者的经常使用功能。在代码编辑区内的左边栏上点击一下便可建立一个断点,当程序每次运行到断点,就会暂停下来,方便开发者调试。以下图:github
同时,开发者可使用上图中用数字标记的工具辅助断点调试。各工具的做用以下:数组
除了断点的基础用法,开发者还可使用断点的进阶功能:编辑断点、异常断点和**符号断点。微信
双击断点或者右键点击断点,选择Edit Breakpoint便可打开断点编辑页面。页面中包含Condition、Ignore、Action和Options四个部分,接下来逐一介绍。函数
Condition
为条件。开发者能够在Condition输入框中设置触发断点的条件。好比,在一个for循环中,能够设置在知足i==5
时才触发断点。以下图。工具
Ignore
为忽略次数。开发者能够在Igore输入框中设置忽略此断点的次数。好比,设置Ignore为5,则在第6次执行到断点行时才会触发断点。3d
Action
为触发动做。Action能够添加多条,在触发断点后,会紧接着执行设定的Actions。Action有6种执行类型,其中较经常使用的有Debugger Command
和Log message
,以下图。调试
Debugger Command
容许开发者设定一些LLDB命令,从而实现打印对象、修改变量等功能。以下图。code
Log Message
为提供了标准的文本输出格式。开发者能够按照格式设定在触发断点后输出的内容。其中,@exp@
表示输出exp的内容,%B
表示输出断点的名称,%H
表示输出断点执行的次数。以下图。
Options控制在执行断点对应的Actions后是否自动继续执行程序。勾选后Options后,断点被触发后不进入Debug界面。
开发者能够在Xcode中很方便地建立一个异常断点。以下图:
当建立异常断点后,会显示一个名为All Exceptions
的断点,因此也常称做全局断点。当程序抛出异常时会触发异常断点,而且大部分常见错误会被断点定位到对应的代码行,很方便调试。好比:设置全局断点后,咱们写一段数组越界的代码,当运行到此代码时,就会断点到越界的那一行。以下图:
而当去掉全局断点后再次运行程序触发越界代码后会崩溃断点到main.m中,而不会定位到越界那一行。以下图:
符号断点(Symbolic Breakpoint)是全局断点,能够针对某一个方法(函数)设置断点。开发者能够很方便地建立一个符号断点,以下图:
与普通断点相比,符号断点的编辑界面多出来Symbol
和Module
两个输入框。
开发者能够在Symbol输入框中设置断点出发方法/函数。以下图,在Symbol中设置一个方法/函数后,运行程序并执行到此方法时会触发断点。
这里要注意Symbol中方法/函数的写法: 方法(OC方法):用
+
指明是类方法,用-
指明是实例方法,参数声明不可省略,:
后不能有空格; 函数:(C函数):直接写函数名便可。
开发者能够在Module输入框中设置Symbol中的函数所在的库,以免不一样库中存在名字相同的方法/函数,默认不用填写。
符号断点编辑页面除Symbol
和Module
外的Condition
等功能用法与普通断点一致。好比,在Condition输入框中设置$arg3==nil && $arg4==nil
,就会限制断点在知足第一个参数和第二个参数都为nil时才会被触发。以下图:
Xcode的断点调试功能很是强大,开发者充分利用断点调试,再结合上丰富的LLDB调试命令,会在不少程度上提升开发效率。
小编微信:可加并拉入《QiShare技术交流群》。
关注咱们的途径有:
QiShare(简书)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公众号)
推荐文章:
iOS消息转发
iOS 自定义拖拽式控件:QiDragView
iOS 自定义卡片式控件:QiCardView
iOS Wireshark抓包
iOS Charles抓包
奇舞周刊