赞
踩
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
文件,如果找到相应的文件,会自动去执行相关的脚本内容
我们只需要把上面的调试脚本下载到工程根目录就可以使用了
gdb-dashboard 脚本提供了一些配置选项,可以添加一些自定义的配置
gdb-dashboard 会从下面几个目录查找配置文件并执行相关配置完成一些初始化的工作:
- /etc/gdb-dashboard/;
- $XDG_CONFIG_HOME/gdb-dashboard/ (defaulting to ~/.config/gdb-dashboard/);
- ~/Library/Preferences/gdb-dashboard/;
- ~/.gdbinit.d/.
在dashboard启动时会去加载和执行上面目录存放的一些初始化配置文件,一般建议在~/.gdbinit.d/
目录下添加我们自己的配置
在 ~/.gdbinit.d/
目录创建一个配置文件 ~/.gdbinit.d/init
- mkdir ~/.gdbinit.d/
- touch ~/.gdbinit.d/init
在配置文件中加入如下内容(后续可根据自己的需要去定义跟多配置):
- set breakpoint pending on
- set confirm off
比如默认显示的模块太多、屏幕放不下了,有个别模块我们目前用不到,可以通过修改配置关闭一些模块的显示
dashboard 目前支持的全部组件如下:
assembly breakpoints expressions history memory registers source stack threads variables
我们可以在配置文件中定义启动后显示的组件
使用-layout
指令来定义需要显示的内容和隐藏的内容
比如我们只显示 register
, assembly
, stack
dashboard -layout registers assembly source !variables stack
这个定义顺序也表示模组的展示顺序,从上到下
!
叹号表示默认不显示该模组,当我们输入命令 dashboart variables
命令时候,可以在对应的位置插入显示
除了设置某些组件不显示之外,我们还可以设置让某个组件在其他终端显示输出
整个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
命令就可以查看当前终端的序号
- tty
-
- /dev/pts/2
将组件重定向到其他窗口以后,可以使用下面的命令使得组件全屏显示
- dashboard assembly -style height 0
- dashboard source -style height 0
效果如下:
进入到工程目录
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
设置断点给某个函数
break func
执行单个指令
si
全速运行
continue
- //把memory重定向到一个新的窗口
- dashboard memory -output /dev/pts/2
-
- //查看地址 0x40000000 长度为0x1000 看上去现在只能显示单个字节,可以研究下不同的显示格式 提交一下代码给作者
- dashboard memory watch 0x40000000 0x1000
- dashboard expressions -output /dev/pts/2
-
- dashboard expressions watch g_systic
添加变量时候还可以自动补全(非常强大)
gdb-dashboard工具,完全可以由程序员自己去定制调试界面的内容,定制调试命令等等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。