GDB调试

gdb调试

设置断点:b main.c:10

然后运行程序:run

断点处可以查看变量:display a

 

其它命令:

(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h

(gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r

(gdb)start:单步执行,运行程序,停在第一执行语句

(gdb)list:查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l

(gdb)set:设置变量的值

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

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

(gdb)backtrace:查看函数的调用的栈帧和层级关系,简写bt

(gdb)frame:切换函数的栈帧,简写f

(gdb)info:查看函数内部局部变量的数值,简写i

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

(gdb)continue:继续运行,简写c

(gdb)print:打印值及地址,简写p

(gdb)quit:退出gdb,简写q

(gdb)break+num:在第num行设置断点,简写b

(gdb)info breakpoints:查看当前设置的所有断点

(gdb)delete breakpoints num:删除第num个断点,简写d

(gdb)display:追踪查看具体变量值

(gdb)undisplay:取消追踪观察变量

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

(gdb)i watch:显示观察点

(gdb)enable breakpoints:启用断点

(gdb)disable breakpoints:禁用断点

(gdb)x:查看内存x/20xw 显示20个单元,16进制,4字节每单元

(gdb)run argv[1] argv[2]:调试时命令行传参

 

 

GDB完全工具手册

说明:工具仅为了自己使用,不设学习前后顺序。

工具目录:

一. GDB使用set修改变量的值

【命令一】: GDB使用set修改变量的值

        使用gdb修改临时变量的值,可以使用set命令和print命令。

        1.调试中需要修改临时变量的值时,可以使用set命令               

        语法:(1)set variable key = value
                   (2)set var key = value

         示例:set variable array[1] = 12

          (如果变量名和GDB内置变量冲突,使用set var v=value)

         2. print命令修改,更简单

         语法:print key=value

         示例:(gdb)print array[1] = 12

       https://img2018.cnblogs.com/i-beta/1671349/201912/1671349-20191220152403055-1094281896.png        

 

说明:当你使用**cachep时,cachep[i],i=2,若想在gdb的时候动态分配内存,手动设值,让其走到cachep[1]=NULL的错误检查路径,可以如下操作,即可。

          https://img2018.cnblogs.com/i-beta/1671349/201912/1671349-20191220152748063-880641898.png

 

GDB断点调试

GDB断点调试步骤

Gdb tpdm(可执行文件:b .cpp :(行号)

运行:r plan(参数)

单步(跳入自定义函数内部执行):s

P变量

 

gdb无法单步调试

使用gdb调试单步程序时如果打印提示“single stepping until exit from function xxx,which has no line number information”,可能的原因有两个:

 

1 编译源文件时没有加-g选项;

2 gcc与gdb版本不兼容,通常是由于手工对gcc程序进行了升级,导致现有gdb程序版本过旧,比如gcc升级到4.8版本,gdb仍为旧的7.2版本。此时需要下载新版gdb源码包(7.8版本可行),手工升级gdb。

./configure

make & make install

cp -fv ./gdb/gdb /usr/bin/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeRTOS是一个开源的实时操作系统,它提供了一套用嵌入式系统的任务调度和管理机制。GDB(GNU Debugger)是一个功能强大的调试工具,可以用于调试C/C++程序。在使用FreeRTOS进行开发时,可以结合GDB进行调试。 要在FreeRTOS中使用GDB进行调试,需要进行以下几个步骤: 1. 配置编译器:首先,需要确保你的编译器支持GDB调试功能。常用的编译器如GCC和Keil都支持GDB调试。 2. 编译选项:在编译FreeRTOS应用程序时,需要添加一些编译选项以支持GDB调试。例如,在GCC中,可以使用"-g"选项来生成调试信息。 3. 连接器脚本:在链接应用程序时,需要使用连接器脚本来指定调试信息的位置。连接器脚本可以告诉GDB在哪里找到符号表和调试信息。 4. 启动GDB调试:在编译和链接完成后,可以使用GDB启动调试会话。可以通过命令行输入"gdb"命令来启动GDB,并使用"target remote"命令连接到目标设备。 5. 设置断点:在GDB中,可以使用"break"命令设置断点。可以设置函数断点、行号断点或地址断点等。 6. 执行调试:一旦设置好断点,可以使用GDB的调试命令来执行程序。可以使用"run"命令来运行程序,使用"step"命令逐行执行,使用"next"命令执行下一行,使用"continue"命令继续执行等。 7. 查看变量:在调试过程中,可以使用GDB的"print"命令来查看变量的值。可以使用"info locals"命令查看局部变量,使用"info global"命令查看全局变量等。 8. 结束调试:当调试完成后,可以使用GDB的"quit"命令退出调试会话。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值