调试 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 定义新布局的主要内容,如果未能解决你的问题,请参考以下文章

linux中gdb的可视化调试

在 Mingw 中构建 GDB 错误,配置:错误:未找到增强的 curses 库;禁用 TUI

嵌入式Linux的GDB远程调试如何实现呢?

qemu源码调试出现锁错误

qemu源码调试出现锁错误

qemu源码调试出现锁错误