一、前言
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"。