GDB-Dashboard的使用

GDB-Dashboard是一个使用Python API编写的独立的.gdbinit文件,能提供一个模块化的界面,方便我们控制GDB显示的信息。

安装

只需要在$HOME目录下放置.gdbinit文件即可

1
wget -P ~ https://github.com/cyrus-and/gdb-dashboard/raw/master/.gdbinit

配置

配置文件

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

  • /etc/gdb-dashboard/;
  • $XDG_CONFIG_HOME/gdb-dashboard/ (defaulting to ~/.config/gdb-dashboard/);
  • ~/Library/Preferences/gdb-dashboard/;
  • ~/.gdbinit.d/.

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

定义显示的模块或者组件

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

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

assembly breakpoints expressions history memory registers source stack threads variables

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

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

比如我们只显示 register , assemblystack

dashboard -layout registers assembly source !variables stack

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

使用多个终端显示

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

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

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

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

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

dashboard -output /dev/pts/1

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

dashboard assembly -output /dev/pts/1

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

dashboard source -output /dev/pts/2

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

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

jhb@jhb-pc:~/rtos/armv8_os$ tty /dev/pts/2

其他设置

显示高度设置

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

dashboard assembly -style height 0
dashboard source -style height 0

保存默认配置

有时候想要保存一些默认的布局,例如只看源码,看源码和汇编等等,可以为每一种使用情况保存一种布局,方便我们快速切换布局。

在home目录下创建.gdbinit.d和文件.gdbinit/init文件,在init文件中保存如下格式的命令定义

1
2
3
4
define soul
dashboard -layout source expressions stack variables
dashboard source -style height 20
end

在gdb调试时,输入soul命令就可以切换到源码阅读布局了

作者

echo

发布于

2024-02-14

更新于

2024-08-10

许可协议

评论