c++ GDB调试技巧


一、常用命令

命令

命令缩写

命令说明

listl显示多行源代码
breakb设置断点
break ifb if当满足某个条件时停止
deleted删除断点
disable 禁用断点
enable 允许断点
infoi描述程序状态,比如: i break 显示有哪些断点
runr开始运行程序
displaydisp跟踪查看某个变量,每次停下来都显示其值
print

p

打印内部变量值
watch 监视变量值新旧的变化
steps执行下一条语句,如果该语句为函数调用,则进入函数执行第一条语句
nextn执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)
continuec继续程序的运行,直到遇到下一个断点
finish 如果进入了某个函数,返回到调用调用它的函数,jump out
set var name = v  设置变量的值
backtracebt查看函数调用信息(堆栈)
startst开始执行程序,在main函数中的第一条语句前停下
framef查看栈帧,比如 frame 1 查看1号栈帧
quitq离开gdb
edit 在gdb中进行编辑
whatis 查看变量的类型
search 搜索源文件中的文本
file 装入需要调试的程序
killk终止正在调试的程序

常见问题:在文件组织比较复杂的代码中,打断点时需要指出相对路径,若是想打断点到函数名,必须给出完整的命名空间

二、调试脚本

优点:

  • 自己定义一些方便的命令,比如打印STL容器中的内容
  • 不用每次打开gdb都要重新打一次断点

使用方法:

   一般有三种方法:https://blog.csdn.net/cnsword/article/details/16337031

好用的调试脚本推荐:

三、图像界面

1、gdb自带的简易图像界面tui

        使用方法:

gdb --tui a.out
 
 

         效果:

使用方法详见另外一篇博客:

https://blog.csdn.net/xu415/article/details/19021759

2、gdbgui

将调试的gui在浏览器中显示

https://gdbgui.com/

        a、安装pipx    

curl https://raw.githubusercontent.com/cs01/pipx/master/get-pipx.py | python3
 
 

        b、安装gdbgui

pipx install gdbgui
 
 
  • 使用
gdbgui -p 10001 -r "a.out"
 
 

-p 10001表示设定的端口是10001,-r 表示是远程remote调试模式(即调试界面不在Linux机上)

运行成功如图所示

之后通过Chrome浏览器连接相应的地址,需要强调的是可能需要关闭Linux上的防火墙,效果如下:

上面是漂亮的图形化界面,右边是各种监视窗口,下面是gdb命令行

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值