我可以从地址读取/写入 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】:

是的。 使用 Watchpointswatch - 仅在写入时中断(并且仅在值更改时)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 中断吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以以编程方式设置 gdb 观察点?

如何使批处理文件从网站读取文本然后将其写入文件? [复制]

stm32 flash半页写入

GDB Python API:从地址获取符号名称

我可以使用 AVAudioEngine 从文件中读取,使用音频单元处理并写入文件,比实时更快吗?

我可以在不中断复制的情况下从 SQL Server 复制订阅者数据库中删除特定数据吗?