C 检查何时修改变量
在Linux中使用Valgrind或任何其他调试器,如何查看修改变量的位置。我正在使用gcc。注意,我不想使用gdb单步进入代码。我只想运行程序,让调试器在最后报告我,在代码中修改变量的地方 嗯,想想看,它不是完全的复制品,因为它要求更多一点。因此:C 检查何时修改变量,c,linux,debugging,gcc,x86,C,Linux,Debugging,Gcc,X86,在Linux中使用Valgrind或任何其他调试器,如何查看修改变量的位置。我正在使用gcc。注意,我不想使用gdb单步进入代码。我只想运行程序,让调试器在最后报告我,在代码中修改变量的地方 嗯,想想看,它不是完全的复制品,因为它要求更多一点。因此: 使用gdb 找到您想要监视的地址(硬件监视点仅用于监视地址,因此您必须将其运行到变量或对象实例化的点,获取它们的地址并对该地址使用watch命令 将命令附加到地址,以向您提供回溯跟踪(或您需要收集的任何其他信息)并继续 所以你会有这样的想法: p
watch
命令p &variable
watch *$$
cmd
bt
c
end
(我不能完全确定使用$$
,我通常使用p
命令打印的$n
。用于在gdb中执行此操作。您必须知道要监视的变量的地址。使用以下一系列命令设置监视点:
您还可以选择将所有这些输出保存到日志文件。查看更多详细信息。如果变量在许多地方被修改(例如,在紧密循环中),则可能会重复这将是无法忍受的缓慢。我想说的是,只有在你万不得已的情况下才使用这种方法。如果你想跟踪变量的变化,它不会那么慢,因为上面的观察点通常是一个硬件观察点。软件观察点(例如,观察t[I])如果你加上
cmd/bt/c/end
,它会变慢。是回溯打印减慢了速度,而不是观察点。同意。因此,这取决于变量是否经常变化。
watch *0xfeedface
commands
silent
bt
cont
end