我想为x86架构构建一个简单的Linux内核调试器。我首先要它设置断点。我想知道是否有用于配置调试器寄存器的内核api,以及是否有任何好的文档?如果调试器寄存器没有内核api,那么有关于如何手动正确配置寄存器的文档(使用汇编“MOV”指令)吗?
答案 0 :(得分:4)
这取决于您要处理的内核版本。
至少从2.6.33开始,有一个用于在内核中设置硬件断点的API,尽管它可能在版本3.0-3.2之间有所改变。
查看kernel/events/hw_breakpoint.c
中的register_wide_hw_breakpoint()函数及其附近的函数。
文档似乎非常缺乏,但是如果在内核中使用该API有an example,它可能会有所帮助。
使用该API的更复杂的示例可以在RaceHound project中找到。