删除Linux内核3.0.0中的所有硬件观察点

时间:2012-05-06 15:20:31

标签: linux gdb breakpoints watchpoint

在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通用版。

2 个答案:

答案 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(不指定断点),并确认您要删除所有。