我在使用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观察整个内存区域中的任何更改?
所以,我该怎么观察整个内存区域呢?