[持续更新][备份]GDB调试工具常用命令

时间:2021-11-14 20:50:39

一、前言

ACM开赛在即,得知dev-cpp不适用之后,不得不再次重拾gdb基本操作。。。

辗转Emacs和Code::blocks数次之后,感觉还是Emacs更适合我的风格,尽管配置稍显麻烦,但其开放性不是其他ide可比的。

二、正文

TIPS:对于任一命令,如果标有斜杠/,例如run/r,则前面表示全称,后面表示简写,两者均可以被执行,一般为了方便会选择简写。

1、主体

  (gdb)help x:查看命令帮助(x可省表示查看全部,也可以是命令名称,表示查看某一具体命令的帮助);

  (gdb)run/r:开始运行文件;

  (gdb)list/l x:查看原代码(x可省表示查看全部,也可以是数字表示查看第x行,也可以为函数名称表示查看某一函数)

  (gdb)quit/q:退出gdb;

2、断点

  (gdb)break/b x:设置断点(x可以为数字表示第x行,也可以为函数名称表示设置在该函数);

  (gdb)(delete breakpoints)/d x:删除第x个断点(x只能为柱子);

3、运行

  (gdb)next/n:单步调试(逐过程,函数直接执行);

  (gdb)step/s:单步调试(逐语句:跳入自定义函数内部执行);

  (gdb)continue/c:继续运行;

  (gdb)finish:结束当前函数,返回到函数调用点;

4、查看

  (gdb)print/p x:显示具体变量x的值(x只能为变量);

  (gdb)display/disp x:追踪查看具体变量x的值(x只能为变量);

  (gdb)undisplay/undisp x:取消追踪第x条变量(x只能为数字);

5、其他(这些暂且用得少)

  (gdb)info/i x:查看各种数据(x可以为很多内容,比如breakpoints,表示查看当前设置的所有断点,详情可以输入"help info");

  (gdb)watch:被设置观察点的变量发生修改时,打印显示;

  (gdb)enable breakpoints:启用断点;

  (gdb)disable breakpoints:禁用断点。

这里仅仅列出了ACMer一般情况下会用到的命令,而且介绍得比较简单,想了解更多其他的高级命令或者更详细的使用方法可以自行在gdb下输入"help"。