我可以从地址读取/写入gdb中断吗?

Ale*_*lex 24 c c++ debugging gdb

可能重复:
我可以在GDB中的'内存访问'上设置断点吗?

我在内存中有一个特定的位置被破坏了,我希望能够准确地看到事情写入该位置的时间.有没有什么办法可以让gdb在对特定地址的内存访问中断?

Alo*_*ave 49

是.
使用观察点:
观察 - 仅在写入时中断(并且仅在值改变时)
rwatch - 读取时断开,并且
唤醒 - 读取/写入中断.

来自一些互联网资源的更详细的简介:

watch
watch是gdb设置数据断点的方法,如果内存在指定位置发生变化,它将暂停程序的执行.

可以在变量名称或任何地址位置设置监视断点.

watch my_variable
watch *0x12345678
where 0x12345678 is a valid address.
Run Code Online (Sandbox Code Playgroud)


当程序试图从变量或内存位置读取时, rwatch rwatch(读取监视)断点会中断代码的执行.

rwatch iWasAccessed
rwatch *0x12345678
where 0x12345678 is a valid address.
Run Code Online (Sandbox Code Playgroud)

awatch
awatch或access watch如果写入或读取变量或内存位置,则会中断程序的执行.总之,awatches是手表和rwatches一体化.这是创建一个断点而不是两个独立断点的便捷方式.

awatch *0x12345678
where 0x12345678 is a valid address.
Run Code Online (Sandbox Code Playgroud)