在Linux的控制台中使用GDB调试程序

        由于当前的开发是在一个只有Linux内核的特定 环境进行的,Java代码可以通过远程调试功能在Windows下进行Debug,而C代码就没有那么幸运了。幸好有同事推荐了GDB,并且教给我了几个简单的命令,发现极其方便,并且功能很强大——虽然只是几个简单的命令,是整个调试过程变得妙趣横生。下面是我在调试应用的几个简单命令及简单过程。
        一、简单的几个命令:
        1、attach,绑定要调试程序的线程ID,形式:attach 9987
        2、dir,绑定运行程序的源文件目录,例如: dir /tmp
        3、b,设置断点,形式:b filename:line,例如:b general_parser.c:5695,就是在general_parser.c文件的第5695行设置断点。
        4、advance,跳转到某处, 形式:advance line
        5、display,显示变量或者表达式的值,在单步调试时会一直显示,形式:display expression
        6、cont,继续执行,当运行到一个断点时,使用该命令继续向下执行到下一个断点
        7、n,单步执行(Step over),每次执行一句,遇到函数调用时,不会进入到函数内部。如果前面使用display命令设置了要查看的表达式,那么就会在执行后显示出来。
        8、s,单步跳入(Step into),也是每次执行一句,但是遇到函数调用时,会进入到函数内部。
        9、list,列出产生执行文件的源代码的一部分
       10、quit,退出
        二、简单的调试过程
        1、启动要调试的程序,并获得其线程ID;
        2、启动gdb程序;
        3、绑定调试程序的形成ID:
              gdb/>attach pid 
        4、设置断点:
              gdb/>b general_parser.c:5695
        5、继续运行:
              gdb/>cont
        6、设置要查看的变量值:
              gdb/>display currentMsg
        7、继续运行:
              gdb/>cont
        8、等到预期输入时,可以单步调试
              gdb/>n
        9、遇到函数调用,可以使用s进入,也可以使用advance直接跳转某一行
              gdb/>advance 3617
        10、继续单步执行
              gdb/>n
         11、退出gdb。

        当然上面的调试过程只时我在工作中的简单过程,并不具有普遍性,但是GDB几个简单的命令,的确是可以解决很大的问题。

        下面是一篇关于GDB的文章:
  http://dsec.pku.edu.cn/~yuhj/wiki/gdb.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mydeman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值