看着gdb中的内存范围?
我正在调试gdb中的程序,并且当访问内存区域0x08049000至0x0804a000时,我希望该程序停止。当我尝试手动设置内存断点时,gdb似乎一次不支持两个以上的位置。
(gdb) awatch *0x08049000Hardware 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)。然后你就可以,例如watch
或awatch
或rwatch
做一个内存范围 rwatch (char[100])
*0x5180040
有关
更多详细信息,请参见Valgrind关于gdb集成的用户手册。
以上是 看着gdb中的内存范围? 的全部内容, 来源链接: utcz.com/qa/421644.html