gpt4 book ai didi

linux - kprobes 相对于 kretprobes 的优势

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:21 24 4
gpt4 key购买 nike

kprobes 和 kretprobes 都允许您对内核地址中的特定指令进行探测。

如果注册一个 kprobe,pre_handler 在实际函数之前执行,post_handler 在实际函数之后执行

使用 kretprobes,你可以让 entry_handler 在实际函数之前执行,ret_handler 在实际函数之后执行,它包含函数调用的返回值。

那么,使用kprobes相对于kretprobes有什么优势呢,因为kretprobes具有kprobes的特点加上函数的返回值

最佳答案

kprobe 可以放在任何指令上,而不仅仅是内核函数的开头(当然,如果给定的内核代码中允许使用 kprobe)。kprobe 的处理程序在指令前后运行。

Kretprobes 仅对探测函数入口和导出有意义。 kretprobe 的处理程序在函数入口和函数退出时运行,而不是像 kprobe 处理程序那样在某些指令之前和之后运行。

此外,如果您不需要在函数导出处运行代码,对于探测函数,kprobes 可能是比 kretprobes 更好的选择(尽管 Ftrace 可能更好)。 Kretprobes 干预堆栈上函数的返回地址以执行处理程序。如果函数由于其他原因崩溃或转储回溯,回溯可能包括 kretprobe 内部地址而不是真正的返回地址,这可能会造成混淆。

https://www.kernel.org/doc/Documentation/kprobes.txt

关于linux - kprobes 相对于 kretprobes 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com