【发布时间】:2011-11-08 07:26:47
【问题描述】:
在 Linux 中使用 Valgrind 或任何其他调试器,如何查看变量被修改的位置。我正在使用 gcc。请注意,我不想使用 gdb 单步执行代码。我只想运行程序并让调试器最后报告我,在代码中修改变量的地方。
【问题讨论】:
在 Linux 中使用 Valgrind 或任何其他调试器,如何查看变量被修改的位置。我正在使用 gcc。请注意,我不想使用 gdb 单步执行代码。我只想运行程序并让调试器最后报告我,在代码中修改变量的地方。
【问题讨论】:
嗯,想一想这不是Can I set a breakpoint on 'memory access' in GDB? 的精确副本,因为它要求的更多。所以:
所以你会有类似的东西:
p &variable
watch *$$
cmd
bt
c
end
(我不完全确定$$,我通常使用p 命令打印的$<i>n</i>)。
【讨论】:
cmd/bt/c/end,它会很慢。减慢速度的是回溯的打印,而不是观察点。
使用Breakpoint Command Lists 在 gdb 中执行此操作。您必须知道要查看的变量的地址。使用以下一系列命令设置观察点:
watch *0xfeedface commands silent bt cont end
您还可以选择将所有这些输出保存到日志文件中。更多详情请关注gdb doc。
【讨论】: