6

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

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

是否有工具或系统调用来删除这个(或所有)硬件观察点?CPU 是Core i5,Linux 内核是Ubuntu 11.10 (Oneiric Ocelot) 的 3.0.0-17-generic。

4

2 回答 2

11

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

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

(gdb) delete 2

(gdb) info watchpoints
No watchpoints.
(gdb)

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

于 2017-08-09T03:36:54.057 回答
2

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

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

是否有工具或系统调用来删除这个(或所有)硬件观察点?

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

于 2012-05-06T23:37:55.633 回答