gdb命令,随着使用慢慢补充

本文介绍如何使用GDB进行程序调试,包括设置断点、运行程序、查看变量值等基本操作。通过实例演示,展示GDB的强大功能,如使用-l列出源代码,-b设置断点,-r运行程序,以及-c继续执行等。

最近刚刚开始学会使用gdb,之前一直以为很难用,但是用了之后才发现,这真的是个好东西,比手动printf方便多了。

这篇文章会记录我用到过的gdb命令,后续会随时补充。

首先,我们使用如下源代码来作为测试的例子:

int main() {
    int a;
    a = 10;       
    return 0;   
}

 

使用gdb调试一个程序前,我们需要使用-g选项编译源文件,产生调试信息,这样我们就可以在gdb中使用l命令列出源文件的代码,并使用b命令打断点了

g++ -g test.c -o test

OK,编译完毕后,我们使用gdb来调试生成的可执行文件

gdb ./test

接着,我们可以使用l命令列出源文件的代码

(gdb) l
1       int main() {
2               int a;
3               a = 10;
4               return 0;
5       }

然后,我们接下来就可以使用b命令给程序打断点了

(gdb) b 2
Breakpoint 1 at 0x5fe: file test.c, line 2.
(gdb) b 3
Note: breakpoint 1 also set at pc 0x5fe.
Breakpoint 2 at 0x5fe: file test.c, line 3.
(gdb) b 4
Breakpoint 3 at 0x605: file test.c, line 4.

这样,我们就给程序的2、3、4行打上了断点。

这时,我们就可以开始运行这个程序了,需要使用的命令是r

 

(gdb) r
Starting program: /home/mtl/code/cpp/HttpServer1/src/test 

Breakpoint 1, main () at test.c:3
3               a = 10;

可以看到程序开始运行,并停在了断点1处,此时,我们可以用p命令来打印a的值,如下:

(gdb) p a
$1 = 0

这表示此时a的值是0。

c命令是从断点处继续运行程序,我们使用多次c命令继续运行程序直到程序结束,并依次打印a的值:

(gdb) c
Continuing.

Breakpoint 3, main () at test.c:4
4               return 0;
(gdb) p a
$2 = 10
(gdb) c 
Continuing.
[Inferior 1 (process 6235) exited normally]

可以注意到断点2并没有出现,而是直接到了断点3,而且前面打断点的时候也可以看到,提示了断点1和断点2相同,手册中说断点所在行是不执行的,

而且声明变量似乎在指令之前就执行了,所以我们的断点1和断点2就重复了。

最后可以看到程序正常结束了。

另外,使用info命令可以查看很多信息,具体的可以使用无参数的info,查看选项列表。

 

转载于:https://www.cnblogs.com/mtl6906/p/10699361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值