在Linux中使用Valgrind或任何其他调试器,如何查看变量被修改的位置。我正在使用gcc。请注意,我不想使用gdb进入代码。我只想运行该程序并让调试器最终报告我,在代码中修改变量的地方。检查变量何时被修改
回答
使用Breakpoint Command Lists在gdb中执行此操作。你将不得不知道要观看的变量的地址。设置观察点,像这样的一系列命令:
watch *0xfeedface commands silent bt cont end
您也可以选择保存所有这些输出到日志文件。查看gdb doc了解更多详情。
嗯,想想它不是确切Can I set a breakpoint on 'memory access' in GDB?的副本,因为它要求多一点。所以:
- 用GDB
- 找到要观看(硬件观察点只为看地址工作,所以你必须把它运行到变量或对象实例化点的地址,把他们的地址和该地址使用
watch
命令 - 附加命令的地址给你(你需要收集或任何其他信息)回溯,继续
所以你必须像。:
p &variable
watch *$$
cmd
bt
c
end
(我不完全确定与$$
,我通常使用的$n
由p
命令作为打印)。
如果变量在许多地方被修改(比如说,在一个紧密的循环中),这将会*不可耐受*慢。如果这是你的最后手段,我会说只使用这种方法。 –
假设你想跟随变量的变化,这并不是很慢,因为上面的观察点通常是硬件观察点。软件观察点(例如,观看t [i])速度要慢得多...... –
@BasileStarynkevitch:如果你添加'cmd/bt/c/end',它会*变慢。这是印刷回溯减慢它,而不是观察点。 –
- 1. 如何检查PDF是否被修改
- 2. C++:类变量如何被修改?
- 3. Django的 - 在基本模板检查变量被修改通过查看功能
- 4. 如何检查VBA模块何时被修改?
- 5. Eclipse CDT:如何查找所有变量被修改的位置
- 6. ng-repeat无法反映源变量何时被修改
- 7. 检查文件是否已被修改
- 8. 检查字段是否已被修改
- 9. 检查位图是否已被修改
- 10. 检查网页是否已被修改
- 11. 检查EditText是否被修改
- 12. 共享变量没有被修改
- 13. 检测变量是否在XX秒内未被修改
- 14. 批量检查单个文件是否被修改
- 15. 检索修改的变量值
- 16. 当cx被修改时TASM检查参数
- 17. tkinter:检查修改
- 18. 检查类是否存在变量,如果是,请修改此变量的值
- 19. 当检索对象被修改时,应用程序对象被修改
- 20. 修改fulfillment.tracking_url变量?
- 21. 修改$ PATH变量
- 22. 使用变量修改XDocument查询
- 23. 检查页面改变时
- 24. 检查变量是否已被追加
- 25. 检查JSON文件被修改或新的项目被编程
- 26. 临时修改全局变量
- 27. 同时不修改NODE_ENV变量
- 28. 如何检查对象是否被修改
- 29. 如何检查PictureBox的图像是否已被修改?
- 30. 如何检查文件是否被修改与jQuery
[我可以在GDB的'内存访问'中设置断点?](http://stackoverflow.com/questions/58851/can-i-set-a-breakpoint-on-memory-access- in-gdb) – bobbymcr