动态跟踪¶
内核探针¶
内核探针允许在几乎任何内核指令上设置动态标志或中断,当内核到达这些标志时,附加到探针的代码将被执行,然后内核恢复正常模式。需要注意的是,内核探针没有稳定的ABI,因此相同的代码在不同的内核版本上可能无法成功执行。
内核探针分为两种:
- kprobes:在执行内核指令前插入BPF程序
- kretprobes:在返回前插入BPF程序
用户空间探针¶
用户空间探针是运行在用户空间的监测程序,与内核探针类似,也分为两种:
- uprobes:在执行用户空间指令前插入BPF程序
- uretprobes:在返回前插入BPF程序
用户静态跟踪点¶
用户静态跟踪点可以在生产环境中使用,用来跟踪任何语言编写的应用程序。
使用BCC的tplist
工具可以显示二进制文件中定义的跟踪点。