You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kprobe与Tracepoint哪个先触发?同一系统调用的eBPF程序执行顺序问询

Tracepoint与Kprobe挂载同一系统调用的执行顺序

当你将Tracepoint挂载到sys_enter_execve,同时把Kprobe挂载到sys_execve(或对应架构的具体实现如__x64_sys_execve)时,二者存在固定的执行顺序:Tracepoint会先于Kprobe触发。

原因源于内核处理系统调用的流程逻辑:

  • sys_enter系列Tracepoint是内核为系统调用入口设置的统一追踪点,触发时机是在用户态进入内核后、尚未跳转到具体系统调用实现函数之前,属于系统调用入口的通用处理环节,所有系统调用都会经过这个节点。
  • Kprobe挂载的是具体系统调用函数的入口地址,只有当内核流程真正进入该系统调用的实现代码时,才会触发对应的Kprobe。

以x86_64架构的实际执行流程为例:

  1. 用户态发起execve系统调用,陷入内核
  2. 内核执行系统调用入口的通用逻辑,触发sys_enter_execve Tracepoint
  3. 内核通过系统调用表找到__x64_sys_execve函数并跳转至该函数
  4. 函数入口处触发挂载的Kprobe

你的推测方向是正确的,Tracepoint确实在进入系统调用的更早阶段触发,而Kprobe则在具体系统调用函数的精确入口点触发。

内容的提问来源于stack exchange,提问作者Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:07:36