经营网站 备案,城市形象设计vi手册,网页传奇游戏排行榜前十名端游,关晓彤经纪公司文章目录 一、前言二、断点调试技巧2.1 设置断点2.2 断点的自定义设置2.3 断点类型 一、前言
所谓断点#xff0c;其实就是一个让应用暂停运行的机制#xff0c;这是为了方便开发人员执行调试#xff0c;查看寄存器的某些值。既然设置了断点#xff0c;可以让应用停在某一… 文章目录 一、前言二、断点调试技巧2.1 设置断点2.2 断点的自定义设置2.3 断点类型 一、前言
所谓断点其实就是一个让应用暂停运行的机制这是为了方便开发人员执行调试查看寄存器的某些值。既然设置了断点可以让应用停在某一时刻那么这一时刻应用所处的运行环境便一目了然这个环境就是案发现场而断点就是帮助开发人员破案的工具。这个时候开发人员便可以使用各项调试命令而编译器则会反馈相应线索。
Xcode编译器允许开发人员在代码中的任意位置设置断点但是如何打断点也是一门手艺有些断点的设置是毫无意义的比如将断点设置在了一处声明某个常量的地方那么编译器便会跳过这处直到它遇见真正的可执行指令处。
二、断点调试技巧
与断点协同破案的便是断点导航器。下面讲述一些基本的断点调试技巧
2.1 设置断点
设置断点就不说了大家都知道在你想要调试的代码处点击设置就行了。通过快捷键Command也可以。
2.2 断点的自定义设置
(1)在设置断点的地方右击该断点会弹出一个栏选择Edit Breakpoint可以对断点进行自定义设置如下图2-1所示。 (2)点击Edit Breakpoint选项后弹出如下设置框 蓝色对勾后面的表示当前断点所处的位置。至于代码行数显示你可以在菜单栏Xcode-Preferences-Test Editing-勾选Line Numbers将代码行数字显示出来。将对勾抹去表示该断点失效。 Condition: 指的是条件表达式该项允许我们对断点生效设置条件表示当满足某一特定条件的前提下该断点才生效。该条件的录入不能够识别预处理的宏定义也不能识别断点作用域之外的变量和方法。 Ignore忽略次数。它指定了在断点生效应用暂停之前代码忽略断点的次数。如果希望应用运行一段时间后断点才生效那么就可以使用这个选项。比如说在调试某一循环体的时候。 Action: 动作。它表示当断点生效时Xcode作出反应后的行为动作。点击右边的Add Action选项会弹出如下图。 图中所示红色方框中的选项可以让指定哪一种动作。默认的是Debugger Command。还有以下几种动作供选择下面逐一介绍。
AppleScript 它是苹果提供的一种脚本语言用来执行一些预先指定的行为。选中该选项将会出现如下图所示的AppleScript语言的输入框。 以上设置将弹出一个显示“Hello World”的对话框。点击Compile按钮后如果没有错误会显示成功信息。而点击Test按钮会测试运行效果如下图所示。 至于红色方框中的内容是三种特殊符号相对应的定义。
符号标记定义expressionLLDB表达式%B断点的名称%H遇到该断点的次数 Capture GPU Frame 这个功能用于当断点生效时捕获GPU当前所绘制的帧。该功能是辅助图形调试的。 Debugger Command 默认的选项可以让断点执行LLDB调试命令。 Log Message 使用Log命令可以生成消息队列将相关的消息输出到控制台上还有一个Speak Message选项可以播报消息。 Shell Command 该动作接收一个命令文件和参数列表。如下图2-6所示 命令文件必须是一个可执行的二进制程序或者脚本。可以复制粘贴输入路径也可以点击Choose按钮选择具体文件。 参数通过空格表示分割也可以在两个字符之间包含LLDB表达式。
一般情况下Xcode会异步执行Shell Command也就是说Shell Command 和调试器将会同步执行。如果希望调试器在Shell Command命令完成后运行则可以勾选下面的Wait until done选项。
Sound 动作会在断点被触发时弹出声音提示。
2.3 断点类型
上面讲到的都是普通断点断点的类型还包括以下几种
异常断点 异常断点是代码出现问题导致编译器抛出异常时触发的断点。它在断点导航器中设置。点击号选择Exception Breakpoint选项。如下图所示 Exception选项可以让你选择响应ObjectiveC对象抛出的异常也可以选择响应C对象抛出的异常。 Break则是选择断点所接收的异常是接收“Throw”语句抛出的异常还是Catch语句的。
由于有一些异常的出现是在不满足某些特定条件下而导致的比如说在复杂循环中数组越界这个时候往往不容易根据异常信息确定错误的出处这个时候设置异常断点便能发挥作用。
符号断点 可以中断某个方法的调用可谓是异常强大在断点导航器界面点击号选择Add Symbolic Breakpoint选项然后会弹出如下图所示的对话框。 可以看到它比普通断点的自定义设置界面多出了两个内容其一是Symbol用来设置当前断点作用域所能识别的方法这里面既可以是自定义的方法也可以是系统的API方法。注意必须表明是类方法还是成员方法
另一个Module是模组的意思用来限制满足符号的方法编译器将只会在断点满足这个模组的符号的时候才回暂停。 OpenGL ES错误断点(OpenGl ES Error Breakpoint) 这个断点的作用和异常断点类似只不过这个断点只有在openGL ES错误发生的时候才会触发。 测试失败断点 仅在测试断点失败的时候才会执行这个时候应用将会暂停在引发测试失败的代码处而不是停止在测试代码处。