一、什么是gdb:gdb是GNU debugger的缩写,是编程调试工具
二、gdb功能:
1、启动程序,可根据用户要求随心所欲的运行程序(比如带参数)
2、可让被调试的程序在用户指定的调试的断点处停住
3、当个程序停住,可以检查程序中发生的事(比如打印变量值)
4、动态改变变量程序的执行环境
三、使用实例:
gcc -Wall -g mian.c -o simple 注意:需要加上-g选项,以便生成调试信息。方便gdb调试,如果不加,只显示汇编代码,没有源文件代码。
gdb simple #启动gdb
(gdb) list #查看所有源代码 l 2,10
break 10 #设置断点 b func 在函数func处设置断点
i b #查看断点
info break #查看断点
l(list) 10 #查看第10行代码
run #启动程序
s #单步跟踪
print i #打印当前i的值
until #跳出循环,当厌倦了在一个循环体内单步跟踪时,这个命令可以直接运行程序直到退出循环。
p(print) result #查看result值
c #运行到下一个断点处 continue
step(s) #单步跟踪
next(n) #不进入函数内(单步)
finish #退出整个函数
q #退出gdb
break if<condition> #条件成立时中断
watch expr #当expr值发生改变时,程序中断
delete n #删除断点 n为第几个断点,n=1,删除第一个断点。
接下来详细讲解下一:
1、run arg1 arg2 :运行时,可以跟上参数。若未设置断点,则直接运行程序。否则运行到断点处。
2、list fun 查看fun函数源码。 list file:fun 查看file文件中的fun函数源码
3、break 行号:设置断点; break fun 在某函数处设置断点 ; 或者break file:行号 ;break file:fun
4、continue(c) 运行到下一个断点
5、s单步跟踪,会跟踪到函数内部。
6、finish:运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值以及参数值等信息。
7、next(n):单步跟踪,不进入函数。