1
6
首先,您需要确保使用调试符号编译您的程序,并且可能需要进行w/o优化以使gdb最有用。对于GCC来说
第二,您要寻找的功能不是跟踪,而是监视点。
因此,给出一些示例代码:
然后您可以在上面运行gdb,并且:
它工作起来有点滑稽,因为它在堆栈上,而不是内存上。如果优化是开着的,它的作用会更小:A会被优化掉。 |
2
3
如前所述,您需要在变量上设置一个观察点。 您使用“命令”命令
所以,从watch命令中找到watchpoint编号,并执行此操作(假设您的表是第二个中断)
假设a是您想要的变量。如果你对gdb给你的输出满意的话,你可以把打印行去掉。 还可以使用原始断点中的命令设置观察点并继续。 |
3
1
谢谢你们两个@derobert和@peter!我终于回到了这个问题上:
就这样。当“somevar”是全局的或“main”是本地的时,这是有效的。如果“somevar”是另一个函数的本地变量,只需用上面的函数名替换“main”。 将这些命令放入一个文件(例如“gdbscript”)并运行gdb,如下所示:
|
SRobertJames · 使用printf的gdb显示 1 年前 |
Subin · 在vscode中运行c时出错 1 年前 |
Community wiki · 如何调试Python内存故障? 1 年前 |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
Chris Brandon · 如何使节点在堆栈溢出时中断? 2 年前 |