码迷,mamicode.com
首页 > 数据库 > 详细

gdb调试

时间:2020-09-17 17:06:40      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:表达式   图形   ike   disable   信息   mil   href   ddr   进程   

gdb概述: 

  UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

  注意,如果要使用gdb调试指定的C/C++程序,则该程序在编译时要添加:-g选项,如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。

gdb调试相关命令

调试

  • s:step,即跳进调用的函数
  • n:next,继续执行下一行代码,单条语句执行
  • c:继续运行程序,continue的缩写

 添加断点

  •  特定行加断点:b 文件名:行号
  • 指定函数:b func,或 break func
  • 退出函数:finish

设置断点的方法:
    break <function>
        在进入指定函数时停住。C++中可以使用class::function或function(type,type)格式来指定函数名。

    break <linenum>
        在指定行号停住。

    break +offset
    break -offset
        在当前行号的前面或后面的offset行停住。offiset为自然数。

    break filename:linenum
        在源文件filename的linenum行处停住。

    break filename:function
        在源文件filename的function函数的入口处停住。

    break *address
        在程序运行的内存地址处停住。

    break
        break命令没有参数时,表示在下一条指令处停住。

    break ... if <condition>
        ...可以是上述的参数,condition表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100,表示当i为100时停住程序。

    查看断点时,可使用info命令,如下所示:(注:n表示断点号)
    info breakpoints [n]
    info break [n]

条件断点

  • 在上面添加断点后输入: if 表达式,只有在表达式为true的时候断点才会生效 

 查看:

  • 查看断点:info b回车,或者info break
  • 查看堆栈:bt

断点管理

  查看断点:info b回车后,会打印断点的编号及所在位置、是否使能等;如果要删除某个断点,可以:a)d 编号,b)delete 编号;如果要使某个断点disable/enable,可以:disable/enable 编号;

 打印变量

  • p 变量名,print的缩写

退出程序:

  • q:quit的缩写

调试正在运行的进程

  已知进程号,通过gdb调试并查看问题:gdb -p 进程号

调试中使用已编写好的断点文件

  • 在gdb调试过程中,可以通过 source xx文件的形式,这样不用每次都手动输入断点信息

启动gdb

  启动gdb有以下三种方式:

   1、gdb <program>
       program也就是你的执行文件,一般在当然目录下。

    2、gdb <program> core
       用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。

    3、gdb <program> <PID>
       如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试它。program应该在PATH环境变量中搜索得到。

 

 

参考:

https://blog.csdn.net/haoel/article/details/2880

https://baike.baidu.com/item/gdb/10869514

gdb调试

标签:表达式   图形   ike   disable   信息   mil   href   ddr   进程   

原文地址:https://www.cnblogs.com/zyk1113/p/13502181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!