一 功能
uprobes提供了用户态程序的动态插桩, 注意与kprobes的 区别
二 接口
(1)基于Ftrace,通过/sys/kernel/debug/tracing/uprobe_events写入特定字符串打开关闭uprobes,具体方法参考如下文档:
uprobetracer.rst - Documentation/trace/uprobetracer.rst - Linux source code (v4.17.18) - Bootlin
注意和kprobe不同的是,使用时需要用户自己计算探测点在用户态文件中的偏移,可以通过nm等工具,这还是有点麻烦的。
(2)perf_event_open
(3)内核其实存在register_uprobe_event函数,但并未以API形式暴露出来