linux系统中程序调试指令(gdb)

1.gdb调试调用

测试程序名为test.c,生成的可执行文件名为test,这两个名字都可以自定义。
插入调试信息有两种方式:

gcc -g test.c -o test
gcc -o test -g test.c

这里加上-g是为了在编译时把调试信息加到可执行文件里。因为调试是对最后的可执行文件进行处理而不是对其它文件(比如说.c文件)

2.启动gdb

gdb test

成功启动gdb
出现(gdb)开头,说明进入调试界面了。

3.调试操作指令

3.1 查看帮助

(gdb) help

帮助指令

3.2 查看文件

命令l(代表list,列出源码的意思), l 1,23 表示列出从第一行到第22行的源码(l 是小写L不是大写i,要注意)。

(gdb) l

3.3 插入断点

断点设置可以是行号也可以是函数入口。
命令b(代表break,设置断点的意思),除了上图的行数断点和函数断点外(前后鼻音口语区分一下),还有个条件断点。比如上图的示例:b 18 if i == 10 表示当i == 10 的时候才出现断点。

(gdb) b 18
(gdb) b 18 if i == 10 

3.4 查看和删除断点

在设置完断点后可以通过info break来查看设置断点情况。(下面几个都可以,结果一样)

(gdb) info break
(gdb) info b
(gdb) i b

查看断点
获取断点信息后,删除断点。删除指令后的数字为上图中的Num值,不是当初b进去的行号。

(gdb) d 2

3.5 运行代码

GDB默认是从首行开始运行代码,直接输入r;若想在指定行开始运行,在r后面加上行号。

(gdb) r
(gdb) r 18

3.6 单步执行

输入n (next)或者s (step)。
这两个的区别在于:如果有函数调用,s 会进入该函数而n 不会。

(gdb) n
(gdb) s

3.7 查看变量值

键入代码中存在的变量,即可查看,例如:查看i变量值。

(gdb) p i

3.8 恢复程序运行

执行c (continue),会跳到下个断点,如果后续没断点了就会执行完剩余程序。
若该断点在循环中,可以输入clear 断点行号 清除该设置的断点然后再跳往下个断点。

(gdb) c
(gdb) clear

3.9 查看函数堆栈

(gdb) bt

3.10 退出调试

执行finish 是退出函数,执行q 是退出gdb。

(gdb) q

补充

1.查看线程信息

info threads

查看线程信息
2.回车键
重复上一条指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

世尘陌路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值