我们首先创建一个code.c文件,写一段简单代码,用于测试。


然后,我们可以编写makefile文件,使得code.c文件能够进行编译。(当然也可以不写makefile文件,直接对code.c进行编译)

如果没有-g ,则是以release模式编译该程序
一般情况下,gdb是默认安装好了的。


使用quit或者q退出

功能:打开代码,显示代码及行号
注意:一次list 可能不能完整显示所有代码,所以需要多次回车(直接回车就是上一个命令)(也可以再次使用list命令,效果一样)。
此外,我们还可以使用 l 数字(比如: l 1),使得从第1行开始显示

功能:执行(若不打断点,则直接运行到结束)
以下即为不打断点的结果

功能;打断点

也可以使用 b 函数名 来打断点
比如: b main
就是在main函数入口处打断点
功能:显示断点

功能:删除断点
注意:删除断点只能通过Num列的序号来删除
即使删除断点,断点的编号也会一直增加
而退出gdb,重新进入时,则之前的断点全部清空
例:disable 1
若不禁用断点1,则是以下执行结果:

我们此时禁用断点1,则执行结果如下:
由于调试已经开始,它问我们是否从头开始执行,我们输入:y(表示yes)

再次输入r命令,执行结果如下:

例:enable 1

注: 如果遇到有调用函数时,则不会跳到该函数处。

注: 如果遇到有调用函数时,则会跳到该函数处。

例:p i
p &i
例:display i
display &i
当我们 调试时,display的变量会一直显示

功能:运行至当前函数的结尾
我们首先增加一个断点

然后使用continue:


例:set var i = 9