Linux内核硬件断点



我想为x86架构构建一个简单的linux内核调试器。我首先想让它设置断点。我想知道是否有一个内核api配置调试器寄存器,如果有任何好的文档?如果没有调试器寄存器的内核api,是否有关于如何手动正确配置寄存器的任何文档(使用汇编"MOV"指令)?

这取决于您想要处理的内核版本。

至少从2.6.33开始,内核中就有一个用于设置硬件断点的API,尽管它可能在3.0-3.2版本之间发生了一些变化。

看看kernel/events/hw_breakpoint.c中的register_wide_hw_breakpoint()函数及其附近的函数。

文档似乎很少,但有一个如何在内核中使用该API的示例,它可能会有所帮助。

可以在RaceHound项目中找到使用该API的更复杂的示例。

最新更新