Skip to content

动态跟踪

内核探针

内核探针允许在几乎任何内核指令上设置动态标志或中断,当内核到达这些标志时,附加到探针的代码将被执行,然后内核恢复正常模式。需要注意的是,内核探针没有稳定的ABI,因此相同的代码在不同的内核版本上可能无法成功执行。

内核探针分为两种:

  • kprobes:在执行内核指令前插入BPF程序
  • kretprobes:在返回前插入BPF程序

用户空间探针

用户空间探针是运行在用户空间的监测程序,与内核探针类似,也分为两种:

  • uprobes:在执行用户空间指令前插入BPF程序
  • uretprobes:在返回前插入BPF程序

用户静态跟踪点

用户静态跟踪点可以在生产环境中使用,用来跟踪任何语言编写的应用程序。

使用BCC的tplist工具可以显示二进制文件中定义的跟踪点。