我想为 x86 架构构建一个简单的 Linux 内核调试器。我首先希望它设置断点。我想知道是否有用于配置调试器寄存器的内核 api,如果有的话,有什么好的文档吗?如果没有用于调试器寄存器的内核 api,是否有任何有关如何手动正确配置寄存器(使用程序集“MOV”指令)的文档?
最佳答案
这取决于您想要处理的内核版本。
至少从 2.6.33 开始,就有一个用于在内核中设置硬件断点的 API,尽管它可能在版本 3.0-3.2 左右发生了一些变化。
看看register_wide_hw_breakpoint() kernel/events/hw_breakpoint.c
及其附近的函数。
文档似乎相当稀缺,但有 an example关于如何在内核中使用该 API,它可能会有所帮助。
使用该 API 的更复杂示例可以在 RaceHound project 中找到。 .
关于Linux内核硬件断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362063/