我正在调试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.
Run Code Online (Sandbox Code Playgroud)
已经有人问过这个问题,答案是,有可能用valgrind做到这一点.不幸的是,答案中没有任何示例或对valgrind手册的引用,所以它不是很有启发性:如何使用gdb来监视整个内存区域的任何变化?
那么:我怎样才能观看整个内存区域?
我有一个我不断修改的数组.在我的程序完成后,执行我的修改并不能完全按照我的要求去做,所以我的数组并没有按照我想要的方式进行.我有一个函数读取数组的内容.有没有办法使用gdb并在某处放置断点,然后运行我的函数读取数组的内容?我想找出问题发生的地方.Gdb不允许我运行"p readArray()".我有一个断点.