Ubuntu下GDB调试C语言程序

转自这里
1.GDB是什么
GDB是GNU开源组织发布的一个UNIX下的程序调试工具,专门用来调试C,C++这些程序的了,而且都是命令行模式的。

2.准备工作
平时我们在IDE开发得时候,必须在运行的时候选择debug模式,否则断点就无效了。因此,在用gcc编译的时候也是需要一些编译参数的。

2.1编译
使用GCC编译时要添加-g选项来把源码编译进去,这样调试就可以看到源码了,否则调试很不方便,很多命令用不了。例如:

gcc helloword.c -o helloword -g

2.2运行调试
gdb helloword //也可以直接运行gdb,再使用命令file加载程序。

3.常用操作命令
3.1显示代码
l命令(list的缩写,直接list也可以)显示下10行代码,加一个行号参数则显示该行号开始的10行代码,如:

l 3

加两个参数,则显示两个行号之间的代码,如:

l 20, 30

3.2设置断点
b(break的缩写,直接break也可以),可以指定行号,也可以指定函数,例如b 11, 或者break main.

3.3查看和删除断点
info break(i b也可以)可以查看当前设置的断点

clear linenumber 可以删除指定行的断点

Delete breaknumber 可以删除指定断点编号的断点

3.4运行程序
r(run的缩写,也可以直接run)就能跑程序,如果你的程序需要读取参数,可以在后面添加参数

3.5单行执行
n(next的缩写,也可以直接next),执行一行代码,就是step over的意思。如果设置有断点,程序执行停在断点行,然后输入n,就可以step over了。

3.6跟踪进入(步入)
s(step的缩写,也可以直接step)命令相当于step into, 如果停在了函数行,那么就可以输入s,进入该函数了。

3.7打印变量
p 变量名,就可以打印变量的值了,例如 print a。也可以print 表达式,而且表达式可以修改变量的值。

3.8继续运行
c(continue的缩写),相当于IDE上面的三角行运行按钮,直接运行到下一个断点或者结束。

3.9查看堆栈
bt(backtrace的缩写,也可以直接backbrace),可以查看堆栈情况,对于进入某个函数的时候特别有用,可以看到函数参数的值变化。

3.10退出函数
finish退出函数调试,还是听方便的。

3.11线程调试
Info threads可以显示当前的线程,带星号的是当前调试的线程,即活动线程,其他线程的输出结果看不到,必须切换。

thread number可以切换到指定号码的线程进行调试。

3.12退出
q(quit)退出

4.其他
4.1帮助
Help command,help加任何一个命令就可以看到该命令的所有用法了。

4.2与VIM集成
这个需要重新编译vim,有点麻烦,先用原生的,用熟悉再说

4.3更多
以上是简单的应用,足够了,以后遇到问题需要更多的话再去man gdb和看官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值