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

命令名称 命令缩写 命令说明
run r 运行一个程序
continue c 让暂停的程序继续运行
next n 运行到下一行
step s 如果有调用函数,进入调用的函数内部,相当于 step into
until u 运行到指定行停下来
finish fi 结束当前调用函数,到上一层函数调用处
return return 结束当前调用函数并返回指定值,到上一层函数调用处
jump j 将当前程序执行流跳转到指定行或地址
print p 打印变量或寄存器值
backtrace bt 查看当前线程的调用堆栈
frame f 切换到当前调用线程的指定堆栈,具体堆栈通过堆栈序号指定
thread thread 切换到指定线程
break b 添加断点
tbreak tb 添加临时断点
delete del 删除断点
enable enable 启用某个断点
disable disable 禁用某个断点
watch watch 监视某一个变量或内存地址的值是否发生变化
list l 显示源码
info info 查看断点 / 线程等信息
ptype ptype 查看变量类型
disassemble dis 查看汇编代码
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 部分命令的读者一个导览图,可以跳至不熟悉的命令的相关部分阅读。

第三课:GDB 常用的调试命令概览的更多相关文章

  1. 第03课:GDB常用的调试命令概览

    先给出一个常用命令的列表,后面结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue   c 让暂停的程序继续运行 next   n 运行到下 ...

  2. gdb常用的调试命令

    首先将源代码编译.链接生成debug版本的可执行文件,然后通过‘gdb  debug版本的可执行文件名’进入调试模式. a) 单进程.单线程基础调试命令 l    显示main函数所在的文件的源代码 ...

  3. 【第三课】常用的Linux命令(学习笔记)

    4月8日 学习笔记打卡

  4. gdb对应vc调试命令

    gdb vc调试对照表: 实现功能                vc                   gdb 修改后编译              f7                   ma ...

  5. gdb常用命令及使用gdb调试多进程多线程程序

    一.常用普通调试命令 1.简单介绍GDB 介绍: gdb是Linux环境下的代码调试⼯具.使⽤:需要在源代码⽣成的时候加上 -g 选项.开始使⽤: gdb binFile退出: ctrl + d 或 ...

  6. gdb常用命令及gdb调试多进程/线程程序&coredump

    一.常用普通调试命令 1.简单介绍GDB 介绍: gdb是Linux环境下的代码调试⼯具.使⽤:需要在源代码⽣成的时候加上 -g 选项.开始使⽤: gdb binFile退出: ctrl + d 或 ...

  7. C 调试 gdb常用命令

    gdb常用命令: [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) b ...

  8. GDB常用命令使用说明(一)

    本文由霸气的菠萝原创,转载请注明出处:http://www.cnblogs.com/xsln/p/gdb_instructions1.html 全部关于gdb的文章索引请点这里 GDB(GNU Deb ...

  9. 【转】 GDB 常用调试方法

    一.多线程调试 多线程调试可能是问得最多的.其实,重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break ...

随机推荐

  1. QT-可拖拽可编辑的多控件ListView

    目标 结合前面的2篇文章, 继续升级QML版本的ListView: 又要拖拽, 又要可编辑, 还得支持多个控件. 循序渐进 本文基于前一篇的基础: Qt-可编辑的ListView 要循序渐进的学习. ...

  2. ASP.NET Core下FreeSql的仓储事务

    ASP.NET Core下FreeSql的仓储事务 第一步:配置 Startup.cs 注入 引入包 dotnet add package FreeSql dotnet add package Fre ...

  3. 安卓安装https证书

    前置条件 1 手机要设置密码 然后安装charles 证书 2 赋予 adb shell root权限(安装magisk就行) adb shell # 连接手机进入shell模式 su root # ...

  4. 针对不同场景的Python合并多个Excel方法

    大家好,我是辰哥~ 在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便.最近辰哥也是在弄excel文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢 ...

  5. Python语言系列-10-数据库

    MySQL 基础环境准备 readme.txt 作者:Alnk(李成果) 版本:v1.0 安装mysql数据库 略 创建student库 # mysql> create database stu ...

  6. 从跨域与同源策略谈CSRF防御与绕过

    之前偶然看到群里有小伙汁问这个token相关的问题,当时我酝酿了一下子,没想好怎么总结,今天来说一下 CSRF在过去还属于OWASP TOP10 ,现在已经不是了(补充一点:关于OWASP API 请 ...

  7. noip38

    T1 有个朴素的暴力,枚举每一个子矩形,复杂度 \(O(n^{2}m^{2})\),观察数据范围,n很小,考虑枚举行,对于 \(m\) 用 \(two\;pointers\) 来维护. 先预处理出每一 ...

  8. 两款轻量级服务器 Http-server && SimpleHTTPServer

    Http-server # 全局安装 npm install http-server -g # 启动服务 # 禁用缓存 http-server -c-1 # 在当前目录下的www启动服务器 http- ...

  9. EZpop分析

    首先源代码如下 <?php class Modifier { protected $var; public function append($value){ include($value); } ...

  10. C#调用C++ dll中返回值为字符串的函数问题

    C#调用C++ dll函数,如果返回值为字符串,我们使用string去接收就会报错,因为C++返回的是char*,是个指针,所以c# 要用 IntPtr 来接收. C++: //预编译的标头 .h e ...