初识GDB
GDB的定义
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:
1、它使你能监视你程序中变量的值.
2、它使你能设置断点以使程序在指定的代码行上停止执行.
3、它使你能一行行的执行你的代码.
在命令行上键入 gdb 并按回车键就可以运行 gdb 了
GDB的功能以及对应的命令
以下是较为常用的部分GDB命令和功能:
命令形式 | 功能解释 | 示例(gdb) |
---|---|---|
GDB | 进入gdb调试 | GDB |
help | 显示帮助信息 | help |
quit | 退出GDB调试 | q(quit) |
file | 加载被调试的可执行程序文件(文件是经过编译之后形成的可执行文件,在编译时,应该加上-g 选项,比如 gcc -o test_gdb test_dgb.c -g) | file test_gdb |
list | 列出文件的内容 | l (list) |
run | 运行调试的程序(如果程序中没有设置断点,则程序会一直运行到结束或者出现异常结束,如果设置断点,则会在断点处停止) | r(run) |
next | 单步调试 | n(next) |
delete | 删除断点编号对应的断点 | d(delete) 1 |
clear | 清空所有的断点信息 | clear |
step | 遇到函数调用时,进入函数内部调试 | s(step) |
continue | 继续执行程序直到下一个断点或者程序结束 | c(continue) |
显示变量的值 | p(print) index | |
info <> | 用来显示各类信息,详细请查看“help info” | i(info) break |
调试过程
首先第一步:
对源程序进行编译,加上-g选项,使其可以进行调试。其结果是生成可执行文件test_gdb,并且可以对其进行gdb调试。
第二步:进入gdb
第三步:调用可执行文件
第四步:输入r运行程序
预览程序的内容,以便于设置断点
第五步:设置断点
第六步:调试运行
输入r开始运行,在第一个断点处(即main函数入口)停止运行。
输入n执行下一步,此时再次打印输出num1,即可完成初始化。(如不初始化,num1的值就是随机值)
当程序执行到getSum函数的调用处时,执行s,进入到getSum函数内部,继续调试执行。
一直进行单步调试,直到函数结束运行,退出函数的调用
最后:
在getSum函数结束之前以及结束之后分别打印输出sum值:
结果表明,函数sum完成了num1和2的求和运算并且对sum进行赋值。