如何在 GDB 中不断观察变量?

Str*_*dle 5 debugging gdb

许多 IDE 都有一个“变量”窗格,您可以在其中添加/删除要观察的变量。每次执行代码时,这些变量值都会更新。

GDB中有这样的选项吗?

dbe*_*eer 7

如果你想要 GDB 的图形版本,那么你可以看看DDD。它有您正在寻找的确切选项。

GDB - 不是图形化的 - 无法在窗格中提供此类功能,但您可以使用命令display每个步骤后显示变量。

我认为实现这一目标的最实用的方法(以及我在实践中所做的)是使用watch. 根据提示:watch varname每当写入变量时都会中断。对于全局变量,有时最好使用 获取变量的地址,print &varname然后在该地址上设置监视watch (int)0xDEADBEEF,用 print 命令的输出替换 DEADBEEF,如果它不是 int,则使用 int 以外的其他内容。

还有GDB的TUI模式。我不相信您可以告诉它监视特定变量,但您可以让它在您逐步执行时显示寄存器(或源代码或其他内容)。在提示符中(启动后gdb -tui)输入:tui reg general。这将在每个步骤之后显示变量位于寄存器中的情况。更多途易选项

  • 总的来说,我同意,但是 gdb 有一种模式,您可以在其中分割屏幕、监视源、程序集和寄存器(我相信它称为 TUI)。https://ftp.gnu.org/old-gnu/Manuals/gdb/html_chapter/gdb_19.html 所以我想为什么不使用变量 (3认同)