看着gdb中的内存范围?

我正在调试gdb中的程序,并且当访问内存区域0x08049000至0x0804a000时,我希望该程序停止。当我尝试手动设置内存断点时,gdb似乎一次不支持两个以上的位置。

(gdb) awatch *0x08049000

Hardware access (read/write) watchpoint 1: *0x08049000

(gdb) awatch *0x08049001

Hardware access (read/write) watchpoint 2: *0x08049001

(gdb) awatch *0x08049002

Hardware access (read/write) watchpoint 3: *0x08049002

(gdb) run

Starting program: /home/iblue/git/some-code/some-executable

Warning:

Could not insert hardware watchpoint 3.

Could not insert hardware breakpoints:

You may have requested too many hardware breakpoints/watchpoints.

已经有一个问题在哪里被问到了,答案是,用valgrind可以做到这一点。不幸的是,答案没有包含任何示例或对valgrind手册的引用

因此:如何查看整个内存区域?

回答:

如果将GDB 7.4与Valgrind 3.7.0一起使用,那么您将拥有无限的“模拟”硬件观察点。

在Valgrind下启动程序,提供参数, --vgdb=full --vgdb-error=0 然后使用GDB连接到它(target remote |

vgdb)。然后你就可以,例如watchawatchrwatch做一个内存范围 rwatch (char[100])

*0x5180040

有关

更多详细信息,请参见Valgrind关于gdb集成的用​​户手册。

以上是 看着gdb中的内存范围? 的全部内容, 来源链接: utcz.com/qa/421644.html

回到顶部