GDB 命令行参数
—annotate
不同的annotate 的值不代表不同的模式
- annotate = 0
是最基本的模式和在命令行使用gdb完全一样。
- annotate = 1
是单步调试模式,出现上下两个窗口,上面是gdb运行的buffer,下面是你代 码的buffer,会在代码 buffer中,同步指示当前运行的语句的位置。
- annotate = 3
是信息最完整的模式,会进入一个多窗口界面同时显示6个窗口分别是 gdb-buffer, locals-buffer(局部 变量),source-buffer,inferor I/Obuffer(正在调试程序的IO),stack-buffer,breakpoint-buffer.
GDB 命令参考
传递参数给程序
GDB 中执行 SHELL 命令
在gdb环境中,你可以执行UNIX的shell的命令,使用gdb的shell命令来完成,例如:
shell make
设置断点
break 行号
break 函数名
break +offset
break -offset
在当前行号的前面或后面的offset行停住
break filename:linenum
在源文件filename的linenum行处停住。
break filename:function
在源文件filename的function函数的入口处停住。
break ... if
...可以是上述的参数,condition表示条件,在条件成立时停住。
比如在循环境体中,可以设置 break if i=100,表示当i为100
时停住程序。
单步执行
继续运行: c
step 单步跟踪,如果有函数调用,他会进入该函数。
next 同样单步跟踪,如果有函数调用,他不会进入该函数。后面可以加
count也可以不加,不加表示一条条地执行,加表示执行后面的count条
指令,然后再停住。
set step-mode
set step-mode on
打开step-mode模式,于是,在进行单步跟踪时,程序不会因为没有debug信
息而不停住。这个参数有很利于查看机器码。
set step-mod off
关闭step-mode模式。
finish 运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和
返回值及参数值等信息。
until 或 u 当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序
直到退出循环体。
