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

iOS调试技巧-断点调试相关推荐

  1. 学习 前端开发中的JS调试技巧(断点)

    http://seejs.me/2016/03/27/jsdebugger/ alert() console.log(xxxx) JS断点调试 JS断点调试,即是在浏览器开发者工具中为JS代码添加断点 ...

  2. python学习-代码调试(通过print调试、通过pdb调试、通过编译器调试(断点调试))

    文章目录 通过print调试 通过pdb调试 通过编译器调试(断点调试) 通过print调试 首先我这里写了一段代码,保存列表中的偶数,然后返回列表,在函数执行后,我对函数结果进行打印. 见代码: l ...

  3. iOS之Xcode断点调试

    目录 一.Breakpoint(断点)调试 1.Edit Breakpoint (1)Condition (2)Ignore (3)action (4)Options 2.Disable Breakp ...

  4. vs单步调试及断点调试基本介绍

    参考博客原址:https://blog.csdn.net/qq_43444947/article/details/104480128 简述:本文面向小萌新简单描述visual studio2019下的 ...

  5. c语言程序跟踪调试,VC6断点调试之监视变量

    上两讲中,为大家介绍到了VC6编译器的断点调试技巧,教给大家如何设置\取消断点.单步和跟踪一个程序.让大家具备基本的调试一个程序的能力.今天我们将继续深入研究教大家如何更细致.深入的跟踪和分析一个C程 ...

  6. vs单步调试及断点调试基本介绍(入门版详细图文介绍)

    简述:本文面向小萌新介绍visual studio2022下的基本调试技巧(其他主流IDE均相似,仅具体快捷键键位不同) //本文无废话,建议小萌新仔细阅读 // //本文无废话,建议小萌新仔细阅读 ...

  7. UART接口算法移植加密芯片的调试技巧——算法调试

    算法移植加密芯片的调试包含2个部分:通讯调试和算法调试.之前讲到过通讯调试技巧,接下来本篇将对算法调试中的问题进行分析总结,来帮助客户顺利地完成调试. 算法调试中的常见问题: 1.不要自行建工程 客户 ...

  8. Java断点调试 idea断点调试 debug教程

    IDEA断点调试 Java程序断点调试 文章目录 IDEA断点调试 Java程序断点调试 前言 一.什么情况下需要debug 二.使用idea如何进行debug 三.假设案例分别进行debug教程 1 ...

  9. UART接口算法移植加密芯片的调试技巧——通讯调试

    算法移植类加密芯片是凌科芯安公司的专利产品,主要功能是芯片内部嵌入凌科芯安公司的LKCOS智能操作系统,用户可以把MCU中程序一部分关键算法函数移植到芯片中运行.用户采用标准C语言编写代码,通过KEI ...

最新文章

  1. JQuery UI库 - Dialog
  2. 五轴数控转台_各式五轴加工中心的优缺点比较
  3. 9.2 协同过滤-机器学习笔记-斯坦福吴恩达教授
  4. websocket与ajax的区别浅析
  5. 给 TWebBrowser.Document 定义事件
  6. 突破5G壁垒,睿至科技集团以技术实力赋能产业发展
  7. css-演练-完成一个后台管理页面-不完整版
  8. python时间序列滞后命令,时间序列-相关性和滞后时间
  9. 在VB中使用Linq To SQLite注意事项
  10. 【AAE】【Keras】实现merge出错:TypeError: ‘module‘ object is not callable
  11. 分享虚拟机VirtualBox安装win7系统完整步骤。
  12. java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
  13. mysql把表里是时间加8小时_mysql经典的8小时问题-wait_timeout
  14. 一个屌丝程序猿的人生(八十三)
  15. Strusts2简单入门教程
  16. 把VMware虚拟机从一台电脑复制到另一台电脑
  17. linux公共基础-初阶
  18. 企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?
  19. ACM训练日记—2月7日
  20. 2021年美容师(初级)考试及美容师(初级)考试资料

热门文章

  1. Delphi更高效率的编程方式的思考【一】
  2. MDaemon邮件服务器解决方案之应急恢复解决方案
  3. 进程间能否传递指针?
  4. WPF and Silverlight 学习笔记(十九):WPF更换主题
  5. Linux下Eclipse给工程配置(附加库目录)
  6. Netty工作笔记0060---Netty心跳机制实例
  7. SpringCloud工作笔记077---SpringBoot中使用JPA操作数据库
  8. SpringCloud工作笔记037---spring cloud-zuul的Filter详解
  9. ASP.Net学习笔记007--ASP.Net Input版自增
  10. oracle零碎要点---oracle em的web访问地址忘了