1.什么是 GDB
对于程序员来说,最经常遇到的问题就是程序中的各种 bug。因此我们需要一款自己
喜欢并且功能强大的编译调试器,来调试并修正程序中的 bug。
虽然 Windows 中有很多功能强大,界面美观的 IDE(集成开发环境),比如微软公司
的 Visual c++和 Visual statio 系列,都可以用来开发调试 c 语言或者 c++程序,但是在 linux
中类似的编译器就比较少,比如比较熟知的 Codeblocks,是一个跨平台的编译器,既可以
在 Windows 中使用,也可以在 linux 中使用。
然而,在 linux 中还有一个更受大家欢迎的调试工具:GDB。GDB 是一个由 GNU 开源
组织发布的、UNIX/LINUX 操作系统下的、基于命令行的、功能强大的程序调试工具。可
以用来调试 C,C++程序。
2.GDB 功能及其对应命令
GDB 功能强大,调试命令也有很多,但是对于普通程序调试中经常使用的命令并不多,
如下表所示:
命令形式 功能解释 示例(gdb)
gdb
进入 gdb 调试
gdb
help
显示帮助信息
help
quit
退出 GDB 调试 q(quit)
file <filename>
加载被调试的可执行程序文件
(文件是经过编译之后形成的
可执行文件,在编译时,应该
加 上 -g 选 项 , 比 如 gcc -o
test_gdb test_dgb.c -g)
file test_gdb
list
列出文件的内容
l (list)
run
运行调试的程序(如果程序中
没有设置断点,则程序会一直
运行到结束 或者出现异 常结
束,如果设置断点,则会在断
点处停止)
r(run)
break <line number>
break <line number> if condition
break <function name>
在某一行设置普通断点。
(运行到该行即停止)
在某一行设置条件断点
(运行到改行满足条件停止)
在某一个函数调用处设置断点
(运行到函数调用处即停止)
b(break) 24
b 24 if index == 3
b getSum
delete <break number>
删除断点编号对应的断点
d(delete) 1
clear
清空所有的断点信息
clear
continue
继续执行程序直到下一个断点
或者程序结束
c(continue)
next
单步调试
n(next)
step
遇到函数调用时,进入函数内
部调试
s(step)
print <value>
显示变量的值
p(print) index