在 GDB 中通过 watch varname
设置第一个(也是唯一可能的)硬件观察点后,无法通过 delete 将其删除。
即使我只是退出 GDB,这个观察点似乎在下次重新启动之前启用。当我尝试在 GDB 重新启动后设置另一个硬件观察点时,日志中出现一条内核消息告诉我,所有硬件观察点都已被占用。这似乎与 Setting GDB hardware watchpoint/how to set software watchpoint 中的问题相同,但因为我需要一个硬件观察点,所以该解决方案不适用。
是否有工具或系统调用可以删除这个(或所有)硬件观察点? CPU 是 Core i5 Linux 内核是 3.0.0-17-generic 来自 Ubuntu 11.10 (Oneiric Ocelot)。
最佳答案
使用观察点(有时称为数据断点)。它可以像普通断点一样处理它,如下所示:
(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 .
关于linux - 删除 Linux 内核 3.0.0 中的所有硬件观察点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471674/