在GDB中通过watch varname
设置第一个(也是唯一可能的)硬件观察点后,无法通过删除将其删除。
即使我刚退出GDB,这个观察点似乎也会启用,直到下次重启。当我在重新启动GDB后尝试设置另一个硬件观察点时,日志中会显示一条内核消息告诉我,所有硬件观察点都已被占用。它似乎与 Setting GDB hardware watchpoint/how to set software watchpoint 中的问题相同,但由于我需要硬件观察点,因此该解决方案不适用。
是否有工具或系统调用来删除此(或所有)硬件观察点? CPU是Core i5,Linux内核是Ubuntu 11.10(Oneiric Ocelot)的3.0.0-17通用版。
答案 0 :(得分:3)
使用观察点(有时称为数据断点)。它可以将其作为正常断点处理,如下所示:
(gdb) info watchpoints
Num Type Disp Enb Address What
2 acc watchpoint keep y x
(gdb) delete 2
(gdb) info watchpoints
No watchpoints.
(gdb)
一个很好的参考是 Setting Watchpoints 。
答案 1 :(得分:2)
通过gdb中的watch varname设置第一个(也是唯一可能的)硬件观察点后,无法通过删除将其删除。
上述声明为 false 。是什么让你得出结论是真的?
是否有工具或系统调用来删除此(或所有)硬件观察点?
不需要这样的工具。只需退出GDB,所有断点和观察点都将消失。或者(gdb) delete
(不指定断点),并确认您要删除所有。