gdb如何用于监视整个内存区域中的任何变化?

gdb如何用于监视整个内存区域中的任何变化?,gdb,breakpoints,Gdb,Breakpoints,例如,我可以中断地址范围从到的内存更改吗? 读和/或写如何?在Linux/x86上,GDB使用处理器调试寄存器来实现硬件观察点。这样的观察点速度很快——程序以全速运行,直到处理器停止并在触发访问或写入观察点时向应用程序发出信号 但这样的观察点只能对1字大小的数据起作用 最近的Valgrind版本(SVN,但没有发布版本)实现了GDB远程协议存根,并允许您通过特殊的监视器命令在任意内存上设置读或写观察点 因此,如果您所在的平台具有Valgrind,并且您的应用程序在Valgrind下运行速度可以接

例如,我可以中断地址范围从
的内存更改吗?
读和/或写如何?

在Linux/x86上,GDB使用处理器调试寄存器来实现硬件观察点。这样的观察点速度很快——程序以全速运行,直到处理器停止并在触发访问或写入观察点时向应用程序发出信号

但这样的观察点只能对1字大小的数据起作用

最近的Valgrind版本(SVN,但没有发布版本)实现了GDB远程协议存根,并允许您通过特殊的监视器命令在任意内存上设置读或写观察点


因此,如果您所在的平台具有Valgrind,并且您的应用程序在Valgrind下运行速度可以接受,那么是的:您可以在任意内存区域上设置监视点。

这在2011年几乎是不可能的。然而,在2012年,情况发生了变化。看见