gcc -main.c hello.c -o app1 -I head -g(使用 -g将源程序带调试信息打包为可执行程序app1)
执行gdb调试
gdb app1(用gdb调试上述可执行程序)
start(让程序开始执行,执行一步后停下)
r或者run(让程序继续执行直到遇到断点或者结束)
n(下一步,开始单步调试,遇到函数不进入函数内部)
s(下一步,开始单步执行,遇到函数则进入函数)
c(程序继续执行到断点处或执行至结束)
查看代码
l(显示main函数文件内容)
l 10(显示第10行附近的代码段)(也可以时函数名,下同)
l hello.c:20(显示main.c函数所在文件同级目录内的hello.c的第20行前后的内容
l hello.c:print(显示main.c函数所在文件同级目录内的hello.c 中的print函数的内容)(继续按l可使该函数继续显示,第三次后直接回车即可,不需再次按l)
设置断点
b 5或 break 5(在当前打开文件第5行加断点)(也可以时函数名,下同)
b filename:num(给文件filename的行号为num处添加断点)
b 15 if i==13(条件断点,当值增到13时才触发断点)
i b(查看已有断点信息)(information break)
d num(删除断点,断点num来自上方i b)
查看变量的值或类型
p i(查看当前时刻i的值)
ptype i(查看当前时刻i的类型)
设置追踪变量
display i(追踪i,每次循环打印i的值)
info display(显示所有追踪变量的信息)
undisplay num(不再追踪变量id为num的变量,num通过info display获取)
程序运行
u(半点类似于continue,会跳出单次循环,然后进行循环后面的代码)
finish(执行并跳出当前函数,回到main函数)(需要取消当前函数中会阻塞程序运行的断点)
set var i = 10(设置当前时刻程序中的变量i值为10)
q或者 quit退出gdb调试