当前位置:   article > 正文

可视化调试工具gdb-dashboard

gdb-dashboard

1. 安装 gdb-dashboard

gdb-dashboard 开源项目地址:https://github.com/cyrus-and/gdb-dashboard

项目完全是使用Python脚本编写,可以直接下载脚本到工程目录

wget -P ~ https://git.io/.gdbinit

.gdbinit 文件在Linux系统下是隐藏文件,如果查看要使用命令ls -al

当在当前目录下执行gdb或者是aarch64-none-elf-gdb命令时,gdb工具会自动查找当前目录下是否有 .gdbinit 文件,如果找到相应的文件,会自动去执行相关的脚本内容

我们只需要把上面的调试脚本下载到工程根目录就可以使用了

2. 使用与配置

gdb-dashboard 脚本提供了一些配置选项,可以添加一些自定义的配置

2.1. 配置脚本

gdb-dashboard 会从下面几个目录查找配置文件并执行相关配置完成一些初始化的工作:

  1. /etc/gdb-dashboard/;
  2. $XDG_CONFIG_HOME/gdb-dashboard/ (defaulting to ~/.config/gdb-dashboard/);
  3. ~/Library/Preferences/gdb-dashboard/;
  4. ~/.gdbinit.d/.

在dashboard启动时会去加载和执行上面目录存放的一些初始化配置文件,一般建议在~/.gdbinit.d/目录下添加我们自己的配置

~/.gdbinit.d/ 目录创建一个配置文件 ~/.gdbinit.d/init

  1. mkdir ~/.gdbinit.d/
  2. touch ~/.gdbinit.d/init

在配置文件中加入如下内容(后续可根据自己的需要去定义跟多配置):

  1. set breakpoint pending on
  2. set confirm off

2.2. 定义显示的模块或者组件

比如默认显示的模块太多、屏幕放不下了,有个别模块我们目前用不到,可以通过修改配置关闭一些模块的显示

dashboard 目前支持的全部组件如下:

assembly breakpoints expressions history memory registers source stack threads variables

我们可以在配置文件中定义启动后显示的组件

使用-layout指令来定义需要显示的内容和隐藏的内容

比如我们只显示 register, assembly, stack

dashboard -layout registers assembly source !variables stack

这个定义顺序也表示模组的展示顺序,从上到下

!叹号表示默认不显示该模组,当我们输入命令 dashboart variables命令时候,可以在对应的位置插入显示

2.3. 使用多个终端显示

除了设置某些组件不显示之外,我们还可以设置让某个组件在其他终端显示输出

整个gdb-dashboard的显示内容或者是单个模块组件的显示内容都可可以单独独立的在不同的终端输出显示

比如我们打开了2个终端 可以将源码组件在A终端输出显示,其他的组件在B终端显示

使用-output 命令用来将输出内容重定向到其他的界面或设备,可以实现上面的目标

重定向全部输出到 /dev/pts/1

dashboard -output /dev/pts/1

重定向 assembly 组件到 /det/pts/3

dashboard assembly -output /dev/pts/1

重定向 source组件输出到 /dev/pts/3

dashboard source -output /dev/pts/2

/dev/pts/x 表示一个终端界面,如何获取我们的某个终端的序号是什么呢?

在终端输入tty命令就可以查看当前终端的序号

  1. tty
  2. /dev/pts/2

2.4. 显示高度设置

将组件重定向到其他窗口以后,可以使用下面的命令使得组件全屏显示

  1. dashboard assembly -style height 0
  2. dashboard source -style height 0

效果如下:

3. 使用 gdb-dashboard 调试

3.1. 开始调试

进入到工程目录

cd armv8_os

下载gdb init 调试脚本

wget -P ~ https://git.io/.gdbinit

启动gdb 服务

make qemu_gdb

新建一个窗口 打开gdb调试器

aarch64-none-elf-gdb

连接到gdb服务

target remote localhost:1234

连接完成以后就可以看到dashboard界面,默认显示了全部组件,需要拖动滚动条才能看到上面的内容

加载程序文件

file app
load

3.2. GDB常用调试命令

设置断点给某个函数

break func

执行单个指令

si

全速运行

continue

3.3. dashboard 常用命令

3.3.1. 查看内存区域

  1. //把memory重定向到一个新的窗口
  2. dashboard memory -output /dev/pts/2
  3. //查看地址 0x40000000 长度为0x1000 看上去现在只能显示单个字节,可以研究下不同的显示格式 提交一下代码给作者
  4. dashboard memory watch 0x40000000 0x1000

3.3.2. 查看变量

  1. dashboard expressions -output /dev/pts/2
  2. dashboard expressions watch g_systic

添加变量时候还可以自动补全(非常强大)

gdb-dashboard工具,完全可以由程序员自己去定制调试界面的内容,定制调试命令等等

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/742349
推荐阅读
相关标签
  

闽ICP备14008679号