第三课:GDB 常用的调试命令概览

先给出一个常用命令的列表,后面会结合具体的例子详细介绍每个命令的用法。

命令名称命令缩写命令说明
runr运行一个程序
continuec让暂停的程序继续运行
nextn运行到下一行
steps如果有调用函数,进入调用的函数内部,相当于 step into
untilu运行到指定行停下来
finishfi结束当前调用函数,到上一层函数调用处
returnreturn结束当前调用函数并返回指定值,到上一层函数调用处
jumpj将当前程序执行流跳转到指定行或地址
printp打印变量或寄存器值
backtracebt查看当前线程的调用堆栈
framef切换到当前调用线程的指定堆栈,具体堆栈通过堆栈序号指定
threadthread切换到指定线程
breakb添加断点
tbreaktb添加临时断点
deletedel删除断点
enableenable启用某个断点
disabledisable禁用某个断点
watchwatch监视某一个变量或内存地址的值是否发生变化
listl显示源码
infoinfo查看断点 / 线程等信息
ptypeptype查看变量类型
disassembledis查看汇编代码
set args 设置程序启动命令行参数
show args 查看设置的命令行参数

上面只列了一些常见的命令,对于一些不常见的命令(如 file 命令 )就不列举了,不建议刻意记忆这些命令,因为确实有点多,找几个程序代码实际练习一下很快就能记住,至于要不要采用,大家还是根据自己的学习习惯来。当 GDB 输入命令时,对于一个命令可以缩写成什么样子,只需要遵循如下两个规则即可。

  • 一个命令缩写时不能出现多个选择,否则 GDB 就不知道对应哪个命令了。举个例子,输入 th,那么 th 对应的命令有 thread 和 thbreak(上表没有列出),这样 GDB 就不知道使用哪个了,需要更具体的输入,GDB 才能识别。
(gdb) th
Ambiguous command "th": thbreak, thread.
  • GDB 有些命令虽然也对应多个选择,但是有些命令的简写是有规定的,例如,r 就是命令“run”的简写,虽然输入“r”时,你的本意可能是“return”命令。

总之,如果记不清楚,可以直接使用命令全称,每个命令都是很常见的英文单词,通俗易懂不难记忆。

后面的课程将逐一介绍上面每个命令的使用方法,注意这里不是照本宣科地列出来,而是介绍一些很有用的调试细节和使用技巧,如果还不熟悉 GDB 调试,建议认真阅读下面的课程。

之所以单独列出,一是为了从总体上告诉读者 GDB 调试需要掌握哪些常见的命令,后面的课程会按上面表格中给出的命令逐一来详细讲解;二是给已经熟悉 GDB 部分命令的读者一个导览图,可以跳至不熟悉的命令的相关部分阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值