调试 gdb tui 定义新布局
Posted
技术标签:
【中文标题】调试 gdb tui 定义新布局【英文标题】:debugging gdb tui define new layout 【发布时间】:2020-05-04 13:06:36 【问题描述】:我正在尝试为 gdb tui 模式定义一个自己的新布局(根据https://sourceware.org/gdb/current/onlinedocs/gdb/TUI-Commands.html#TUI-Commands,但每次我输入示例(tui new-layout example src 1 regs 1 status 0 cmd 1
)时都会收到此错误:Undefined tui command: "new-layout example src 1 regs 1 status 0 cmd 1". Try "help tui".
任何建议,可能有什么问题(输入命令时我已经处于 TUI 模式 (tui enable
))?
【问题讨论】:
【参考方案1】:我遇到了和你一样的问题。尽管文档显示了该功能,但 9.1 中似乎没有该功能。
我尝试构建 GDB 快照版本 10.0.50.20200305-git,它具有 tui new-layout 功能。
您可以在此处找到快照版本: ftp://sourceware.org/pub/gdb/snapshots/current/
这是我所做的:
cd ~/src
tar xf gdb-10.0.50.20200306.tar.xz
mkdir gdb
cd gdb
~/src/gdb-10.5.50.20200306/configure --enable-tui
make
~/src/gdb/gdb/gdb --version
GNU gdb (GDB) 10.0.50.20200306-git
然后我只是在一个可执行文件上从 ~/src/gdb 运行 gdb。 我可以这样做
tui new-layout example regs 19 src 21 cmd 20
但是,重新启动 gdb 后它并没有持续存在。 但是如果我不退出,我可以切换到它。
layout asm
layout regs
layout example
不确定布局是否应该在退出和启动后保持不变?
【讨论】:
据我所知,这个布局不是持久化的,但是你可以把这些命令放到你的~/.gdbinit
;)
我的快照有点小问题,我收到以下错误消息:elf.c:740:35: error: overflow in conversion from ‘unsigned int’ to ‘int’ changes value from ‘num_group = 4294967295’ to ‘-1’ [-Werror=overflow] 740 | elf_tdata (abfd)->num_group = num_group = -1;
但它只是一个快照,所以我想知道它需要多长时间才能在正式版也是。
而且,我刚刚检查了我的本地 gdb 文档 (info gdb
),并且没有创建自己的布局的段落,所以我想我只需要等待或等待获得新的快照工作。
新版本发布可能只是时间问题。不确定您遇到的错误。我必须安装一些依赖项才能使我的构建工作(libncurses-dev libncursesw5-dev 和 libconfig-dev)。
嗯,好吧,也许我会再试一次,提前检查依赖关系,但是因为我在 Arch Linux 上,我有很多新的包,所以很快就会得到更新版本(取决于 gdb 开发团队发布它需要多长时间)以上是关于调试 gdb tui 定义新布局的主要内容,如果未能解决你的问题,请参考以下文章