我可以从地址读取/写入 gdb 中断吗? [复制]
Posted
技术标签:
【中文标题】我可以从地址读取/写入 gdb 中断吗? [复制]【英文标题】:Can I have gdb break on read/write from an address? [duplicate] 【发布时间】:2011-06-28 18:47:16 【问题描述】:可能重复:Can I set a breakpoint on 'memory access' in GDB?
我在内存中有一个特定位置正在损坏,我希望能够准确地看到写入该位置的内容。有什么方法可以让 gdb 中断对该特定地址的内存访问?
【问题讨论】:
【参考方案1】:是的。 使用 Watchpoints:watch - 仅在写入时中断(并且仅在值更改时)rwatch - 在读取时中断,和awatch - 读/写中断。
来自一些互联网资源的更详细的简介:
观看 watch 是 gdb 设置数据断点的方式,如果指定位置的内存发生变化,它将停止程序的执行。
可以在变量名或任何地址位置设置观察断点。
watch my_variable
watch *0x12345678
where 0x12345678 is a valid address.
rwatch rwatch (read-watch) 断点会在程序尝试从变量或内存位置读取时中断代码的执行。
rwatch iWasAccessed
rwatch *0x12345678
where 0x12345678 is a valid address.
手表 如果变量或内存位置被写入或读取,awatch 或访问手表会中断程序的执行。总之,awatches 是手表和 rwatches 合二为一。创建一个断点比创建两个单独的断点更方便。
awatch *0x12345678
where 0x12345678 is a valid address.
【讨论】:
不知何故你正在写×
代替 x
...
@Alok 在读或写中断之间使用awatch
时有何不同?
有什么办法可以看大片内存(几个字宽)?
@Alok lldb 中 awatch 或 rwatch 的等效命令是什么?以上是关于我可以从地址读取/写入 gdb 中断吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章