GDB

发布时间:2017/08/18

一般来说GDB主要调试的是c/c++程序,首先在编译时,我们必须把调试信息添加到可执行文件中。使用编译器(cc/gcc/g++)的-g参数可以做到这一点。如:

1
cc -g tst.c -o tst

如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。当你使用-g成功编译目标代码以后,我们就可以使用gdb来调试程序。

启动GDB

1
2
3
4
5
# program 也就是你的执行文件,一般在当前目录下
gdb program

#
gdb tst

指令

列出原码

1
list [行号]

直接会车表示重复上一次命令

设置断点在行号处

1
break [行号]

在函数入口处加断点

1
break [函数名]

查看断点信息

1
info break

断点跟踪

命令功能
r运行程序,run命令简写
n单条语句执行,next命令简写
c继续运行程序,continue命令简写。
p i打印变量i的值,p是print命令简写。
bt查看函数堆栈
finish退出函数
q退出gdb

调用系统命令

shell <command string> 调用UNIX的shell来执行 <command string>,环境变量SHELL中定义的UNIX的shell将会被用来执行<command string>,如果SHELL没有定义,那就使用UNIX的标准shell/bin/sh。(在Windows中使用Command.comcmd.exe

重新构建

还有一个gdb命令是make ,可以在gdb中执行make命令来重新build自己的程序

1
make <make-args>

这个命令等价于

1
shell make <make-args>

参考资料
http://www.gnu.org/software/gdb/documentation/

http://blog.csdn.net/haoel/article/details/2879

http://blog.csdn.net/haoel/article/details/2880

最后更新:2022/06/30