1. gdb ./xxx 可执行文件
2. 在gdb命令中,只需输入命令或者参数的前几个字符,再按键盘上的 TAB 键,gdb 会自动补全命令或参数,如果有多个候选者,那么 gdb 将他们都列举出来;、
3. 常见命令
- list 行号:显示当亲文件以 行号 为中心的前后 10 行代码;
- list 函数名:将显示所在函数为中心 前后 10 行的源代码
- run
运行程序,当遇到断掉后,程序会在断点处停止运行,等待用于输入下一步命令;
- set args
设置运行程序时的命令参数, 如:set args 33 33
- continue
简写为 c,继续制定被断点中断的程序
- break
+ break 行号 在当前文件的“行号”处设置断点,break 33
+ break 函数名:在用户定义的函数“函数名”处设置断点
+ info breakpoints:显示当前程序的断点设置情况

+ disable Breakpoint Num:关闭断点 Num,“Num”为 info breakpoints 中显示的对应值
+ enable Breakpoint Num:打开断点 Num
- step
简写 s,单步跟踪程序,当遇到函数调用时,则进入函数体(一般只进入用户自定义函数)
- next
简写 n,单步跟踪程序,当遇到函数调用时,也不进入函数体,与step区别,step会进入函数体
- until
当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体
- finish
运行程序,直到当前函数完成返回,并打印函数返回时堆栈地址和返回值及参数值等信息
- stepi 或 nexti
单步跟踪一些机器指令
- print 表达式
简写:p,在C语言中,表达式可以是数字,变量,甚至是函数调用
+ print a
+ print ++a
+ print name:字符串 name 的值
+ print gdb_test(22):将整数 22 作为参数调用 gdb_test() 函数
+ print gdb_test(a)
+ bt:显示当亲程序的函数调动堆栈
+ display 表达式;
单步运行时,使用display 命令设置一个表达式后,它将在每次单步执行命令后,紧接着输出被设置的表达式及值
+ watch 表达式
设置一个监视,一旦别监视的 表达式 的值改变,gdb将强行终止正在被调试的程序
+ kill
强行终止当前正在调试的程序
+ help 命令
显示 命令的帮助信息
+ call 函数(参数)
调用 函数, 并传递 参数,
+ layout
分隔窗口,一遍查看代码,一遍测试
* layout src:显示源代码窗口
- layout asm: 显示反汇编窗口
- layout regs:显示源代码/反汇编 和 CPU 寄存器窗口
- layout split:显示源代码和反汇编窗口
- Ctrl + L:刷新窗口
+ quit:退出 简写为q
……
多线程/信号/远程调试……