笑笑小白 归类自己需要的资料,慢慢爬行 gdb调试器命令学习总结笔记

gdb的file命令加载程序 一file命令加载程序 1格式 file [可执行文件] 2实战 2.1新建test.cpp文件 #include <stdio.h> int main() { bool b=false; //如果文件命名为test.c就会报错,因为C语言没有bool类型 printf("hello, boy \n" ); return 0; } ... 阅读详情

Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。

和所有常用的调试工具一样,gdb提供了以下功能:
 # 监视程序中变量的值
 # 在程序中设置断点
 # 程序的单步执行

在使用gdb前,必须先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,所以在用gcc或cc编译时就需要用-g参数来打开程序的调试选项。

调试开始时,必须先载入要进行调试的程序,可以用以下两种方式:
 * 在启动gdb后执行以下命令:
   file 可执行文件路径
 * 在gdb启动时就载入程序:
   gdb 可执行文件路径

载入程序后,接下来就是要进行断点的设置,要监视的变量的添加等工作,下面对在这个过程中常会用到的命令逐一进行介绍:
 * list:显示程序中的代码,常用使用格式有:
    list
      输出从上次调用list命令开始往后的10行程序代码。
    list -
      输出从上次调用list命令开始往前的10行程序代码。
    list n
      输出第n行附近的10行程序代码。
    list function
      输出函数function前后的10行程序代码。
 * forward/search:从当前行向后查找匹配某个字符串的程序行。使用格式:
    forward/search 字符串
  查找到的行号将保存在$_变量中,可以用print $_命令来查看。
 * reverse-search:和forward/search相反,向前查找字符串。使用格式同上。
 * break:在程序中设置断点,当程序运行到指定行上时,会暂停执行。使用格式:
    break 要设置断点的行号
 * tbreak:设置临时断点,在设置之后只起作用一次。使用格式:
    tbreak 要设置临时断点的行号
 * clear:和break相反,clear用于清除断点。使用格式:
    clear 要清除的断点所在的行号
 * run:启动程序,在run后面带上参数可以传递给正在调试的程序。
 * awatch:用来增加一个观察点(add watch),使用格式:
    awatch 变量或表达式
  当表达式的值发生改变或表达式的值被读取时,程序就会停止运行。
 * watch:与awatch类似用来设置观察点,但程序只有当表达式的值发生改变时才会停止运行。使用格 式:
    watch 变量或表达式
  需要注意的是,awatch和watch都必须在程序运行的过程中设置观察点,即可运行run之后才能设置。
 * commands:设置在遇到断点后执行特定的指令。使用格式有:
    commands
      设置遇到最后一个遇到的断点时要执行的命令
    commands n
      设置遇到断点号n时要执行的命令
  注意,commands后面跟的是断点号,而不是断点所在的行号。
  在输入命令后,就可以输入遇到断点后要执行的命令,每行一条命令,在输入最后一条命令后输入end就可以结束输入。
 * delete:清除断点或自动显示的表达式。使用格式:
    delete 断点号
 * disable:让指定断点失效。使用格式:
    disable 断点号列表
  断点号之间用空格间隔开。
 * enable:和disable相反,恢复失效的断点。使用格式:
    enable 断点编号列表
 * ignore:忽略断点。使用格式:
    ignore 断点号 忽略次数
 * condition:设置断点在一定条件下才能生效。使用格式:
    condition 断点号 条件表达式
 * cont/continue:使程序在暂停在断点之后继续运行。使用格式:
    cont
      跳过当前断点继续运行。
    cont n
      跳过n次断点,继续运行。
  当n为1时,cont 1即为cont。
 * jump:让程序跳到指定行开始调试。使用格式:
    jump 行号
 * next:继续执行语句,但是跳过子程序的调用。使用格式:
    next
      执行一条语句
    next n
      执行n条语句
 * nexti:单步执行语句,但和next不同的是,它会跟踪到子程序的内部,但不打印出子程序内部的语句。使用格式同上。
 * step:与next类似,但是它会跟踪到子程序的内部,而且会显示子程序内部的执行情况。使用格式同上。
 * stepi:与step类似,但是比step更详细,是nexti和step的结合。使用格式同上。
 * whatis:显示某个变量或表达式的数据类型。使用格式:
    whatis 变量或表达式
 * ptype:和whatis类似,用于显示数据类型,但是它还可以显示typedef定义的类型等。使用格式:
    ptype 变量或表达式
 * set:设置程序中变量的值。使用格式:
    set 变量=表达式
    set 变量:=表达式
 * display:增加要显示值的表达式。使用格式:
    display 表达式
 * info display:显示当前所有的要显示值的表达式。
 * delete display/undisplay:删除要显示值的表达式。使用格式:
    delete display/undisplay 表达式编号
 * disable display:暂时不显示一个要表达式的值。使用格式:
    disable display 表达式编号
 * enable display:与disable display相反,使用表达式恢复显示。使用格式:
    enable display 表达式编号
 * print:打印变量或表达式的值。使用格式:
    print 变量或表达式
  表达式中有两个符号有特殊含义:$和$$。
  $表示给定序号的前一个序号,$$表示给定序号的前两个序号。
  如果$和$$后面不带数字,则给定序号为当前序号。
 * backtrace:打印指定个数的栈帧(stack frame)。使用格式:
    backtrace 栈帧个数
 * frame:打印栈帧。使用格式:
    frame 栈帧号
 * info frame:显示当前栈帧的详细信息。
 * select-frame:选择栈帧,选择后可以用info frame来显示栈帧信息。使用格式:
    select-frame 栈帧号
 * kill:结束当前程序的调试。
 * quit:退出gdb。

如要查看所有的gdb命令,可以在gdb下键入两次Tab(制表符),运行“help command”可以查看命令command的详细使用格式。
GDB手动加载符号表文件调试 阅读详情

相关推荐

Multisim实战:从8选1到32选1数据选择器的完整搭建指南(附常见问题解决)

本文提供了一份详尽的Multisim实战指南,手把手教你从基础的8选1数据选择器开始,逐步级联搭建16选1乃至32选1数据选择器。文章深入剖析了级联的核心逻辑、片选方案以及使用译码器的专业方法,并附带了电源连接、输出冲突、信号毛刺等常见问题的诊断与解决技巧,帮助电子工程学生和爱好者扎实掌握数字电路的系统设计与仿真调试。

dd012的博客 729

gdb简单使用教程

GDB

renliao优快云的博客 3241

LMX2595实战:手把手教你配置JESD204B时钟与SYSREF(含相位同步避坑指南)

本文详细介绍了LMX2595在JESD204B时钟系统中的配置与优化方法,包括时钟系统架构设计、相位同步配置、SYSREF生成技巧以及PCB布局规范。通过实战案例和避坑指南,帮助工程师充分发挥LMX2595的超低相位噪声和抖动性能,确保高速数据转换器系统的稳定性和同步精度。

weixin_29206669的博客 478

GDB使用详解

最近在学习GDB工具,随笔记载下GDB使用过程中的记录和问题。 一、打开GDB 1.gdb filename 2.gdb    file filename 3gdb -tui  file filename 二、常见命令   l(list)显示代码  b(break)设置断点  tb(tbreak)临时断点  info b(break)查看断点,同时显示普通断点和临时断点,

开源的才是世界的 1051

别再手动下单了!用Python+EasyTrader+同花顺,5分钟搞定你的第一个自动化交易机器人

本文详细介绍了如何使用Python和EasyTrader结合同花顺客户端快速构建自动化交易机器人。从环境配置到实战脚本编写,涵盖自动打新、条件单、跟单策略等核心功能,并分享性能优化与风险控制技巧,帮助投资者高效实现自动化交易。

weixin_30381317的博客 398

生物信息学名词解释 | K-mer (长度为k的短序列)

K-mer 何谓K-mer 所谓Kmer,即为一段长度为k的DNA片段,是由测序reads剪切一部分得到的。k为一个奇数,k=几,就为几mer。 比如:我的测序reads长度为100bp,我将这100bp打断成17bp的短片段,打断后的17bp段片段就叫17mer,可以获得(100-17+1)条k-mer序列。 Table1 k-mers for GTAGAGCTGT. k k-mers 1 G,T,A,G,A,G,C,T,G,T 3 GTA,TAG,AGA,GAG,AGC,GCT,CT

qq_50637636的博客 2万+

linux gdb file命令,Linux之gdb与Makefile的应用及命令。

今天我们来看一看Linux中的gdb调试和Makefile命令。一。gdb:调试器。注:要用gdb调试,前提是在源代码生成时要加上-g选项才能应用,否则会失败。它的基本命令有:l行号:显示从第几行开始,屏幕每次只能显示10行。l函数:显示函数的源代码。r:运行程序。 n:单条执行。 s:会进入函数调用。b 行号:设置断点在第几行。 i b:查看断点信息。whatis:打印类型。 ...

weixin_35747051的博客 586

QT5软件开发入门到项目实战PDF(配完整示例代码)(持续更新)

这是一套QT5软件开发入门到项目实战的教程,并配套了所有的案例完整代码,方便QT初学者快速入门;文章里包含了QT常用的控件使用介绍、多媒体应用、线程、网络编程、蓝牙、串口、应用发布、嵌入式设备环境部署、Android环境部署等;目前一共写了19章,627页,后续也会持续更新。

5万+

笑笑小白 归类自己需要的资料,慢慢爬行 很经典的GDB调试命令,包括查看变量,查看内存

在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是: print print / 是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x。 一、表达式 print和许多GDB的命令一样,可以接受一个表达式,

Enbiting的专栏 506

【四足机器人项目实战】四足机器人嵌入式硬件设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、电源管理板设计及制作二、通讯中继板设计及制作三、力控无刷电机驱动板设计及制作1.磁场定向控制FOC控制原理2.电机转子位置、速度检测原理3.硬件CAN通讯原理 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–嵌入式硬件设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、电

qq_35635374的博客 1万+

黑猫带你学UFS协议第23篇:UFS固件升级操作详解(FFU)

摘要:本文介绍了UFS固件更新(FFU)的实现方法与注意事项。根据UFS3.1 JEDEC协议,FFU通过write buffer命令(MODE=0Eh)下载FW固件,随后必须进行power cycle或硬件复位生效。文章详细阐述了FFU操作的10条规则,包括数据分片传输要求、寄存器访问限制等,同时指出协议未明确的厂商实现差异。关键寄存器包括bFFUTimeout、bDeviceFFUStatus和fPermanentlyDisableFwUpdate。

黑猫奥利奥的博客 1万+

【跟我一起学gdb】(11)自动化gdb脚本之 file命令 + run命令 + set args命令 + show args命令

mian.c tom@ubuntu:~/dvp$ cat -n mainrun.c 1 #include <stdio.h> 2 3 int sum(const int a, const int b) 4 { 5 int c = a + b; 6 return c; 7 } 8 9 ...

蔚蓝的天空Tom 2760

2026华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2025华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

算法大师! 5万+

gdb调试器命令学习总结笔记

Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。和所有常用的调试工具一样,gdb提供了以下功能: # 监视程序中变量的值 # 在程序中设置断点 # 程序的单步执行在使用gdb前,必须先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,所以在用gcc或cc编译时就需要

jiakun5893423的专栏 690

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

GDB调试命令

GDB调试命令

weixin_49817146的博客 1968

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

gdb的使用

1、编译的时候加上-g 2、启动gdb:可以在gdb filename                         或者直接进入gdb后file filename。 3、查看代码:l     (或者list)                             l  10           列出第10行为中心的代码                          l   10...

weixin_40728015的博客 1114

GDB知识点

linux下的C语言调试好帮手,GDB

码到功成 1083

Linux学习日记7——GDB调试

黑马程序员-Linux系统编程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1KE411q7ee?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click 目录 一、C程序代码 二、GDB调试 2.1 编译文件 2.2 进入GDB调试 2.3 GDB中打印源码 2.4 设置断点 2.5运行程序 2.6 继续执行 2.7 查看变量值 2.8 继..

HuanBianCheng27的博客 3502

掌握GDB调试工具,轻松排除bug!

gdb是GNU debugger的缩写,是编程调试工具。GDB官网:GDB适用的编程语言: Ada / C / C++ / objective-c / Pascal 等。GDB的工作方式: 本地调试和远程调试。目前release的最新版本为8.0,GDB可以运行在Linux 和Windows 操作系统上。1.1安装与启动。

嵌入式Linux内核的博客 4854

GDB基础使用

GDB 是 GNU Debugger 的简称,是 GNU 软件系统中的标准调试器。

qq_18447271的博客 2362

(转)GDB Tips

<br />http://hi.baidu.com/comcat/blog/item/c51313105b1bed05203f2ea6.html<br /> <br />1. 查看寄存器<br /><br />(gdb) i r<br />(gdb) i r a                     # 查看所有寄存器(包括浮点、多媒体)<br />(gdb) i r esp<br />(gdb) i r pc<br /><br /><br />2. 查看内存<br /><br />(gdb) x /wx

hairetz的专栏 3149

gdb 笔记(09)— 常用命令示例说明(run、continue、next、step、until、finish、return、jump、print、backtrace、frame、thread等)

gdb 常用命令列表

wohu1104的专栏 8036

GDB命令—jump/return/call/disassemble

1.jump命令 一般来说,被调试程序会按照程序代码的运行顺序依次执行,但是GDB也可以修改程序的执行顺序,从而让程序随意跳跃。这个功能可以由GDB的jump命令:jump 来指定下一条语句的运行点。 注意,jump命令不会改变当前的程序栈中的内容,所以,如果使用jump从一个函数跳转到另一个函数,当跳转到的函数运行完返回,进行出栈操作时必然会发生错误,这可能导致意想不到的结果,所以最好只用jump在同一个函数中进行跳转。 2.return命令 如果在函数中设置了调试断点,在断点后还有语句没有执行完,这时

weixin_37981492的博客 2256

GDB 命令详细解释

http://blog.youkuaiyun.com/wei801004/article/details/4253911 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。 和所有

不以己悲的博客 1065

linux gdb 没有符号表被读取。请使用 "file" 命令。

由于sublime没有调试功能,所以linux 下调试还是要用gdb 退出后,使用gdb时遇到这个问题,刚开始接触linux下使用gdb调试程序,生成断点时,出现linux gdb 没有符号表被读取。请使用 "file" 命令。 其原因是生成的二进制可执行文件没有使用-g选项。 gcc中-g选项是为了获得有关调试信息,要用gdb进行调试,必须使用-g生成二进制可执行文件,

danelumax2的专栏 1万+

gdb的基本使用

GDB是GNU组织在Linux系统中发布的程序调试器,它功能强大,使用方便,已经成为Linux系统中C/C++程序调试的必备工具。 1、GDB命令 GDB是Linux系统上的一款强有力的调试工具,它能够帮助开发者观察程序运行时的内部结构和内存的使用状态。 一般说来,GDB能够完成4个方面的工作: 调试程序:支持程序代码级调试,可以一行一行地执行程序代码 动态断点设置:可以动...

请叫我皮皮虾的博客 346
上一篇: 笑笑小白 归类自己需要的资料,慢慢爬行 很经典的GDB调试命令,包括查看变量,查看内存
下一篇: android学习和广告平台赚钱
Enbiting
博客等级 码龄18年 19粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值