gdb是Linux下单步调试的利器 首先想要调试代码 必须要在编译的时候加上 -g,例如:gcc -g test.c -o test 这个时候就在生成的可执行文件加入了调试信息 怎么调试代码呢 gdb test (gdb加上需要调试可执行文件名)
上面第一个图是我贴的用来测试的源代码,第二图是我开始调试的命令。 可以看到 run(r)这个命令,这个命令是遇到断点会停止运行 可以用continue(c)继续运行,直到遇到下一个断点 可以用list(l)查看调试的源代码, 设置断点:break(b) + 行号,这种设置断点是最常用的,还有一种条件断点 b 20 if a == 10(当a等于10的时候,在20行设置一个断点),info b:查看所有断点信息 ,delete b (断点编号),括号里面的是可选的,加了是删除某个断点,没加是删除所有断点 设置观察点:watch varname:观察某个变量值的变化, info watch:查看所有观察点信息 start:开始调试 next(n):单步执行 step(s):当前执行到函数,进入函数里执行 info bt:显示当前堆栈信息, frame(f) +编号:切换堆栈, 切换到对应编号的堆栈 info args:显示当前函数传入的参数信息 info locals:显示当前局部变量信息 info register(info r):打印所有寄存器的信息 finish:运行到当前函数返回, quit:退出调试 p varname:打印某个变量的值 p &varname 打印变量的地址 x/x address:打印某个地址中的值,以16进制 disassemble 某个函数名 反汇编某个函数 display /i $pc :用16进制的方式显示当前指令的汇编 ,undisplay:取消显示 |