yg_quantum 发表于 2014-12-25 17:33

kprobes如何进行单步调试


用 kprobes 跟踪内核函数,在 post的时候,如何单步调试呢? kprobes接管了内核代码执行,每执行一个指令,都会进入 post_handler 中,这个时候就可以调试这条指令了。
但是post_handle里面该怎么写呢,才能跟踪出来上个指令的执行情况?

yg_quantum 发表于 2014-12-26 18:46

琢磨出来了,如果你需要跟踪如下函数的代码:

kp.addr = (kprobe_opcode_t*)kallsyms_lookup_name("spa_create");

则只需要加上偏移就可以了,如:

kp.addr = 0x05 + (kprobe_opcode_t*)kallsyms_lookup_name("spa_create");

如果偏移为0x05的代码会执行到,则就可以打印寄存器信息。

查找偏移,需要将跟踪代码的.o文件进行反汇编。
页: [1]
查看完整版本: kprobes如何进行单步调试