许多集成开发环境(IDE)都有一个“变量”窗格,您可以在其中添加/删除要监视的变量。每次您执行代码时,这些变量值都会更新。
GDB 中是否有此选项?
GDB 中是否有此选项?
display
命令在每个步骤后显示变量。watch
。从提示符中:watch varname
将在每次写入变量时中断。对于全局变量,有时最好使用print&varname
获取变量地址,然后在地址上设置监视器watch (int)0xDEADBEEF
,将DEADBEEF替换为打印命令的输出,并使用除int以外的其他内容(如果它不是int)。
还有GDB的TUI模式。我不认为你可以告诉它去监视一个特定的变量,但是你可以让它在你逐步执行时显示寄存器(或源代码、或其他东西)。在提示符中(启动gdb -tui
后),输入:tui reg general
。这将在每一步显示变量,当它在一个寄存器中时。更多TUI选项。
watch (int)0x555555906c60
命令会出现Cannot watch constant value (int)0x555555906c60'
的错误提示。当使用变量名进行监视时,当程序离开变量可用的范围时,监视点会被删除。因此,希望有一种方法可以独立于作用域来监视内存地址。 - ph_0