iOS调试技巧-断点调试

Condational Breakpoints(条件断点)

普通断点只要执行到断点所在行就会停止程序,但是有时候我们想当满足一定条件时才停止程序。这个调试技巧在当你想要捕获一个循环中的变量的特定值或者一些不常发生的情况时是非常有用的,而不用你每次迭代都停止来查看。

怎样开启条件变量?

  • 1.添加一个普通断点

  • 2.右键点击断点选择Edit Breakpoint

  • 3.打开断点编辑器,你可以在这里设置断点条件(以及一些其他的断点设置),设置好之后就可以见证奇迹了。

更多断点条件使用,请看iPhone6备忘录

Global BreakPoint(全局断点)

当应用产生异常或崩溃时Xcode一般会直接跳到主函数。但这并不是我们想要的, 我们想要的是产生异常或崩溃能够停留在异常或者崩溃发生的地方而不是跳转到主函数。幸运的是有一个方法可以做到。

Xcode有一个beautiful的功能叫做异常断点,允许我们在异常发生时在异常发生的地方放一个断点。你可以指定具体的异常也可以指定所有的异常。

怎样开启异常断点呢?

  • 1.工程切换到异常浏览窗口,点击下方左侧的Add Breakpoint按钮
  • 2.选择Add Exception Breakpoint确保可以捕获所有异常。

捕获到异常效果如下:

GDB命令来调试程序

一般情况下,我们在程序代码中添加断点,是为了通过Xcode提供的variables view(该view在Xcode底部console旁边)来查看变量的状态。理论上,该窗口可以显示出与当前上下文相关的所有值的状态。实际上,这有点小问题,有时候断点过了之后,该窗口并不会进行相关的更新。但是Xcode有一个很不错的功能是:我们可以使用控制台的命令来检查某个特定的对象——这对于调试程序非常有用。

po 命令

print object的缩写,显示对象的文本描述(显示从对象的description消息获得的字符串信息,如果对象不存在的话会打印出nil)

处理scalar值时使用**p**

输出view的层级关系**recursiveDescription**

由于该指令是私有API,所以不会智能提示。需要我们手打出来。

其它命令(help)

    命令                        解释
break NUM               在指定的行上设置断点。
bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。
display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
file FILE               装载指定的可执行文件进行调试。
help NAME               显示指定命令的帮助信息。
info break              显示当前断点清单,包括到达断点处的次数等。
info files              显示被调试文件的详细信息。
info func               显示所有的函数名称。
info local              显示当函数中的局部变量信息。
info prog               显示被调试程序的执行状态。
info var                显示所有的全局和静态变量名称。
kill                    终止正被调试的程序。
list                    显示源代码段。
make                    在不退出 gdb 的情况下运行 make 工具。
next                    在不单步执行进入其他函数的情况下,向前执行一行源代码。
print EXPR              显示表达式 EXPR 的值。
print-object            打印一个对象
print (int) name                    打印一个类型
print-object [artist description]   调用一个函数
set artist = @"test"                设置变量值
whatis                              查看变理的数据类型


再一次感谢您花费时间阅读这篇文章!

微博: @Danny_吕昌辉
博客: SuperDanny

时间: 2025-01-19 16:33:32

iOS调试技巧-断点调试的相关文章

js调试系列 断点与动态调试[基础篇]_javascript技巧

上几篇文章已经为大家介绍了js调试系列的一些基础知识,这次乱码兄弟为大家带来了js断点与动态调试方法,需要的朋友可以参考下 昨天留的课后练习 1. 分析 votePost 函数是如何实现 推荐 的. 其实我们已经看到了源码,只要读下源码即可知道他是怎么实现的了. function votePost(n, t, i) { i || (i = !1); var r = { blogApp: currentBlogApp, postId: n, voteType: t, isAbandoned: i

JavaScrip调试技巧之断点调试_javascript技巧

 首先,在各个浏览器中,断点调试支持的最好的当然是Firefox,Firefox不仅可以使用Firebug调试页面js脚本,还可以用高级调试工具例如JavaScript Debugger (Venkman) 来调试Firefox扩展里的js.除此之外,Firefox还支持一些更为高级的断点调试.变量监视功能. 其他浏览器里,Opera.Chrome和Safari的调试功能也比较好用.Opera的DragonFly速度相对比较快,界面清爽,功能强大,但不如Safari等友好.相比来说,IE8的程序

安卓-AndroidStudio(eclipse)如何断点调试进入onClickListener

问题描述 AndroidStudio(eclipse)如何断点调试进入onClickListener 在真机上断点调试时,到了监听器的部分,就跳过了,然后就进入了looper.如何进入监听器?在真机上按并没有反应 解决方案 android studio 下操作步骤如图: 先启动你的app 1.鼠标左键单击蓝框位置,即可打上断点 2.点击红框位置图标 3.在弹出框中选择当前app的进程点击ok按钮 4.在界面上点击你打断点位置的那个按钮. 执行上述4个步骤即可实现你的问题. 解决方案二: 你在on

JavaScript的兼容性与调试技巧_javascript技巧

关于JavaSctipt的兼容性,最懒的办法就是用jQuery的工具函数.尽量不要用那些什么ECMAScript之类的函数,因为很多浏览器都会报找不到函数的错误.下面列出一些在开发过程中碰到过的javascript问题. 1.参数列表多个逗号. $.ajax({})方法,非常熟悉了吧,但是在IE中有个小地方要注意,如果你在拼接参数列表的时候最后一个也加了逗号,那么毫无疑问,IE下全部JS失效. 调试时报如下错误: 缺少标识符.字符串或数字 data: { S_Id: Subject_Id, le

Android 反调试技巧之Self-Debuging/proc 文件系统检测、调试断点探测

本文讲的是Android 反调试技巧之Self-Debuging/proc 文件系统检测.调试断点探测, 首先,我们来看看Bluebox Security(一家移动数据保护的公司)所描述的反调试方法.gDvm是一个类型为DvmGlobals的全局变量,用来收集当前进程所有虚拟机相关的信息,其中,它的成员变量vmList指向的就是当前进程中的Dalvik虚拟机实例,即一个JavaVMExt对象.以后每当需要访问当前进程中的Dalvik虚拟机实例时,就可以通过全局变量gDvm的成员变量vmList来

使用Chrome调试JavaScript的断点设置和调试技巧_javascript技巧

你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用这两种土办法确实解决了很多小型 JavaScript 脚本的调试问题.不过放着 Chrome 中功能越发强大的开发者工具不用实在太可惜了.本文主要介绍其中的 JavaScript断点设置和调试功能,也就是其中的 Sources Panel(以前叫 Scripts).如果你精通 Eclipse 中的各

《iOS 8案例开发大全》——实例008 实现断点调试

实例008 实现断点调试iOS 8案例开发大全 实例说明在调试iOS项目程序时,最简单的调试方法是通过NSLog打印出程序运行中的结果,然后根据这些结果判断程序运行的流程和结果值是否符合预期.对于简单的项目,通常使用这种方式就足够了.但是,如果开发的是商业项目,它往往非常复杂,需要借助Xcode提供的专门调试工具.所有的编程工具的调试思路都是一样的.首先,开发人员要在代码中设置断点.想象一下,程序的执行是顺序的,可能怀疑某个地方的代码出了问题(引发Bug),那么就在这段代码开始的地方,比如是方法

艾伟_转载:Visual Studio调试之断点技巧篇

文章导航 Visual Studio调试之断点基础篇 Visual Studio调试之断点进阶篇 Visual Studio调试之断点技巧篇 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我讲了如何设置函数断点,说实话,我个人喜欢设置函数断点,而不是在代码行里面设置断点.一般来说,函数断点在下面几种情形下有用: 1.       例如调试一个网站程序,你通过分析网站的日志发现最有可能发生错误的函数,打开调试器并将调试器附加到程序上去,设置函数断点,重新执行网站--

Visual Studio调试之断点技巧篇

文章导航 Visual Studio调试之断点基础篇 Visual Studio调试之断点进阶篇 Visual Studio调试之断点技巧篇 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我讲了如何设置函数断点,说实话,我个人喜欢设置函数断点,而不是在代码行里面设置断点.一般来说,函数断点在下面几种情形下有用: 1.       例如调试一个网站程序,你通过分析网站的日志发现最有可能发生错误的函数,打开调试器并将调试器附加到程序上去,设置函数断点,重新执行网站--