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

标签 linux gdb breakpoints watchpoint

在 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/

相关文章:

javascript - 除了第一个脚本元素外,Firebug 不会在启动 JavaScript 中的断点处中断

c++ - system() 是否会在内部执行类似 sem_post 的调用?

linux - Python SMTP 函数将 .txt 文件作为 .bin 文件类型发送

ios - 捕捉操作系统警报的符号断点

python - 任何 Python IDE 都支持在调试器的断点处停止

代码:: block - 警告:GDB:无法设置控制终端:不允许操作

windows - "/"和 "\"在不同操作系统中的故事

linux - 如何帮助 Windows 版 git 更好地处理 Linux Samba 共享上的存储库?

c++ - 什么会导致 std::difftime 产生 SIGBUS 崩溃?

c++ - 如何打破 GDB 中类的每个方法?