Kprobe vs uprobe系统调用介入



我想用Utrace编写一个系统调用插入程序。我知道Utrace项目已经被放弃了,但是它的部分代码在kprobe和uprobe上使用。

我还没有真正理解这些是如何工作的。你能解释一下它们之间有什么区别吗?我可以使用uprobe而不编写模块来检查哪些是系统调用的实际参数吗?

谢谢

Kprobe在内核代码中创建和管理探测点,也就是说,您想探测一些内核函数,比如do_sys_open()。您需要查看Documentation/trace/kprobetrace.txt以获得kprobe的一些用法。

Uprobe在用户应用程序中创建和管理探测点,也就是说,您想探测一些用户空间函数,但是探测是在内核空间中代表被探测进程运行的。您需要查看Documentation/trace/uprobetracer.txt以获得uprobe的基本用法,并了解它的目的。

最新更新