2013-05-03 159 views
2

我想为x86架构构建一个简单的Linux内核调试器。我首先想要它设置断点。我想知道是否有配置调试器寄存器的内核API,如果有的话,还有什么好的文档?如果调试器没有内核api,那么是否有任何关于如何手动正确配置寄存器的文档(使用程序集“MOV”指令)?Linux内核硬件断点

+1

为什么你不能使用'kgdb'? – 2013-05-03 16:36:26

回答

3

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

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

看看register_wide_hw_breakpoint()函数kernel/events/hw_breakpoint.c和它附近的人。

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

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

+0

感谢你,@Eugene;交叉引用:我发布了一个例子http://stackoverflow.com/questions/19725900/watch-a-variable-memory-address-change-in-linux-kernel-and-print-stack-trace/19755213# 19755213 ...干杯! – sdaau 2013-11-03 16:39:30