目录

一、常用命令

二、调试脚本

三、图像界面


一、常用命令

命令

命令缩写

命令说明

list l 显示多行源代码
break b 设置断点
break if b if 当满足某个条件时停止
delete d 删除断点(包括watch 点),一般先使用info命令查看断点,之后使用d 断点号删除
disable   禁用断点
enable   允许断点
info i 描述程序状态,比如: i break 显示有哪些断点,info thread 哪些线程
run r 开始运行程序
display disp 跟踪查看某个变量,每次停下来都显示其值
print

p

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

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

线程调试相关

1、info thread显示所有的线程信息,前面带*号的是当前线程

2、thread + (info thread中的线程号) 跳转到相应的线程,之后一直在其中执行,直到阻塞后才会跳到其他线程

3、附着线程:先在终端使用ps -Tef | grep (程序名) 查看所有相关的线程,其中-T表示显示线程,否则只有进程级的显示。进入gdb后attach + (ps出来的线层号) 附着线程进行调试

其他的详细使用可以见这篇博客:https://www.cnblogs.com/xuxm2007/archive/2011/04/01/2002162.html

tui相关

tui是gdb自带的图形界面,比较直观,后面有详细介绍,这里简单说一下切换方法和常用命令

1、gdb -tui + (可执行程序)  直接进入tui图形界面

2、gdb进入后,使用命令focus进入tui图形界面,或者使用快捷键:Ctl+x+a (注意按键顺序,记忆:x:focus,a:another)

3、在tui中使用相同的快捷键Ctl+x+a返回到gdb原生界面

4、在gdb中↑和↓切换上一个命令和下一个命令,但是在tui中只是控制代码视图。想达到切换命令的目的,使用Ctl+n (记忆:next)和Ctl+p(记忆:previous),这其实就是gdb的原生快捷键

二、调试脚本

优点:

  • 自己定义一些方便的命令,比如打印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命令行

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐