可能重复:
Can I set a breakpoint on 'memory access' in GDB?
我在内存中有一个特定的位置正在被损坏,我希望能够准确地看到事情写入该位置的时间。有没有办法让gdb中断对那个特定地址的内存访问?
发布于 2011-06-29 02:51:03
是。
使用观察点
监视-仅在写入时中断(并且仅当值更改时)
rwatch -读取时中断,以及
警告读/写时的- breaks。
来自一些互联网来源的更详细的简要介绍:
手表
监视是gdb设置数据断点的方式,如果指定位置的内存发生变化,则会暂停程序的执行。
可以在变量名或任何地址位置设置监视断点。
watch my_variable
watch *0x12345678
where 0x12345678 is a valid address.
rwatch
当程序试图从变量或内存位置读取时,rwatch (读-看)断点会中断代码的执行。
rwatch iWasAccessed
rwatch *0x12345678
where 0x12345678 is a valid address.
awatch
如果向变量或内存位置写入或读取变量或内存位置,则awatch或access监视会中断程序的执行。总而言之,awatches是集手表和rwatches于一体的手表。这是一种创建一个断点而不是两个单独断点的便捷方法。
awatch *0x12345678
where 0x12345678 is a valid address.
https://stackoverflow.com/questions/6511560
复制相似问题