gdb break 断点设置】的更多相关文章

http://sourceware.org/gdb/current/onlinedocs/gdb/ 断点设置 gdb断点分类: 以设置断点的命令分类: breakpoint 可以根据行号.函数.条件生成断点. watchpoint 监测变量或者表达式的值发生变化时产生断点. catchpoint 监测信号的产生.例如c++的throw,或者加载库的时候. gdb中的变量从1开始标号,不同的断点采用变量标号同一管理,可以 用enable.disable等命令管理,同时支持断点范围的操作,比如有些命…
调试已运行的程序 在UNIX下用ps查看正在运行的程序的PID(进程ID),然后用gdb PID格式挂接正在运行的程序. 先用gdb 关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID.并用detach来取消挂接的进程. 暂停 / 恢复程序运行 调试程序中,暂停程序运行是必须的,GDB可以方便地暂停程序的运行.你可以设置程序的在哪行停住,在什么条件下停住,在收到什么信号时停往等等.以便于你查看运行时的变量,以及运行时的流程. 当进程被gdb停住时,你可以使用info pr…
前言 上篇<GDB调试指南-启动调试>我们讲到了GDB启动调试的多种方式,分别应用于多种场景.今天我们来介绍一下断点设置的多种方式. 为何要设置断点 在介绍之前,我们首先需要了解,为什么需要设置断点.我们在指定位置设置断点之后,程序运行到该位置将会“暂停”,这个时候我们就可以对程序进行更多的操作,比如查看变量内容,堆栈情况等等,以帮助我们调试程序. 查看已设置的断点 在学习断点设置之前,我们可以使用info breakpoints查看已设置断点: info breakpointsNum    …
到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修正Bug了. 如果结果和预期的不一样,就根据结果做进一步的假设和分析. 这里,我们介绍一种很强大的调试工具gdb,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状态,比如各变量的值.传给函数的参数.当前执行的代码行等. 有了gdb…
1. 普通断点 根据代码行数设置断点是最常见的一种方式,在debug程序运行前就可以进行断点的配置.如: (gdb) b src/main.cpp:127 当程序执行到main.cpp文件的第127行时就会出发断点. 2. 条件断点 顾名思义,这种断点是当满足一定条件时才会触发,比较适合进行异常排查.设置方式(gdb)break line-or-function if (condition), 如: (gdb) b src/main.cpp:127 if cnt==10 3. 数据断点 就是根据…
前面已经支持了几种不同的方式添加断点,但是必须事先在代码中添加断点,在使用上不是那么灵活方便.本文将支持动态增删断点,只需要开一开始引入调试库即可,后续可以在调试过程中动态的添加和删除断点.事不宜迟,我们直接进入正题. 源码已经上传Github,欢迎watch/star. 本博客已迁移至CatBro's Blog,那是我自己搭建的个人博客,欢迎关注.本文链接 实现分析 入口断点 尽管我们目标是支持动态添加断点,但还是需要一个入口,提供用户添加初始的断点.仍然像之前一样,在用户代码中显式添加的确可…
说到Lua代码调试,最常用的方法应该就是加一堆print进行打印.print大法虽好,但其缺点也是显而易见的.比如效率低下,需要修改原有函数内部代码,在每个需要的地方添加print语句,运行一次只能获取一次信息,下次换个地方又得重新添加print语句.而且有时候,事先并不知道该去哪打印.或者打印什么内容,需要通过运行中获取的信息才能确定. 当print大法无法满足我们的需求时,就需要类似断点调试这样更高级的调试功能.本文将从零开始编写一个Lua调试器,实现类似gdb的断点调试功能. 本文代码已开…
我们之前已经支持了通过函数来添加断点,并且已经支持了行号的检查和自动修正.但是通过函数来添加断点有一些限制,如果在当前的位置无法访问目标函数,那我们就无法对其添加断点. 于是,本篇我们将扩展断点设置的接口,支持通过函数名称添加断点,以突破这个限制. 源码已经上传Github,欢迎watch/star. 本博客已迁移至CatBro's Blog,那是我自己搭建的个人博客,欢迎关注.本文链接 实现分析 由于Lua是动态类型语言,变量可以是任何值.而函数在Lua语言中又是第一类值,与其他值一样使用,可…
上一讲中我们学习了如何建立工程.汇编.连接工程,并获得目标代码,但是做到这一 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到 正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令.利 用在线汇编.各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用. 一.常用调试命令 在对工程成功地进行汇编.连接以后,按 Ctrl+F5 或者使用菜单 Debug->…
原文地址:http://han.guokai.blog.163.com/blog/static/136718271201321402514114/ 你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用这两种土办法确实解决了很多小型 JavaScript 脚本的调试问题.不过放着 Chrome 中功能越发强大的开发者工具不用实在太可惜了.本文主要介绍其…