hw_breakpoint 使用方法
kprobe在 do_page_fault 函数中不能使用,那么如果真要在这里打点怎么办呢?看看hw_breakpoint是否可用:
事实证明,即便 hw_breakpoint 也是不能在do_page_fault处打点的。那可能真没有办法去抓do_page_fault处的信息了,那为什么这里不能打点呢?
看下do_page_fault的定义吧:NOKROBE_SYMBOL(do_page_fault),是把这个函数放在了一个数组里面,然后在函数 init_kprobe 中将这个数组中所有的函数都维护在系统全局链表:kprobe_blacklist 中。那么在kprobe注册的过程中就会通过函数:check_kprobe_address_safe 去检查是否在这个表中!如果在这个表里面,那么就不能做kprobe咯,在这整个函数中都不能做!官方的解释是:这里都是kprobe实现的关键函数!