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

本文介绍了一个只有Linux内核环境下利用GDB进行C代码调试的方法。包括如何绑定程序线程ID、设置断点、查看变量值等实用命令。通过具体实例展示了如何使用这些命令进行有效的调试。
AI助手已提取文章相关产品:

由于当前的开发是在一个只有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

您可能感兴趣的与本文相关内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值