当前位置:Gxlcms > 数据库问题 > gdb调试

gdb调试

时间:2021-07-01 10:21:17 帮助过:6人阅读

    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   进程   

人气教程排行