分类: LINUX
2012-05-02 23:32:57
alex-huang2012-05-07 23:22:27
其实kprobe又称为指令断点,与hw_breakpoint(数据断点)相对应。kprobe的原理就是将你要监控的指令先保存起来,并解码译码,然后,在原指令的位置替换为非法指令,这样,你的程序运行到你要监控的指令时,就会产生一个数据访问异常,这个时候会执行异常处理程序,而你注册的处理程序在这个时候就会被调用,然后,解码译码后的那条指令重新执行,最后,kprobe会把那条非法指令替换为正常的指令,执行pc+4,就返回了。过程其实是很复杂的。而且,kprobe也有限制,很多内核函数不能使用,另外,由于原理上的原因,不能够大量使用,否则,影响性能。在这种情况下,使用数据断点更好,效率更高,而且,也支持指令监控
MagicBoy20102012-05-05 22:31:31