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

Sve*_*ven 3 linux gdb breakpoints watchpoint

watch varname在GDB中设置第一个(也是唯一可能的)硬件观察点之后,无法通过Delete删除它。

即使我刚刚退出GDB,该监视点似乎也已启用,直到下次重新启动为止。当我尝试在GDB重新启动后设置另一个硬件观察点时,日志中会出现一条内核消息,告诉我所有硬件观察点已被使用。似乎这与设置GDB硬件观察点/如何设置软件观察点中的问题相同,但是由于我需要硬件观察点,因此该解决方案不适用。

是否有工具或系统调用来删除此(或所有)硬件监视点?CPU是Core i5,Linux内核是Ubuntu 11.10(Oneiric Ocelot)的3.0.0-17版本。

deb*_*bug 5

使用观察点(有时称为数据断点)。它可以将其作为普通断点进行处理,如下所示:

(gdb) info watchpoints
Num     Type           Disp Enb Address            What
2       acc watchpoint keep y                      x

(gdb) delete 2

(gdb) info watchpoints
No watchpoints.
(gdb)
Run Code Online (Sandbox Code Playgroud)

一个很好的参考是设置观察点


Emp*_*ian 2

通过 gdb 中的 watch varname 设置第一个(也是唯一可能的)硬件观察点后,无法通过删除将其删除。

上述说法是错误的。是什么让你断定这是真的?

是否有工具或系统调用可以删除此(或所有)硬件观察点?

不需要这样的工具。只需退出 GDB,所有断点和观察点都会消失。或者执行(gdb) delete(不指定断点),并确认您要删除全部。