Linux内核tracers的实现原理与应用
在我仔细研究Linux内核中的ftrace框架之后,觉得各种tracer(包括function tracer, function graph tracer, kprobe/kretprobe trace_event等)的作用被人们严重低估了,如果能掌握它们的实现原理和很好的利用,不仅对研究学习linux内核庞大的源代码帮助巨大,而且对解决实际工程中遇到的问题都如虎添翼。(本课程使用的是Linux 5.12-rc3)你只需使用echo和cat命令,它们就能非常详尽地告诉你内核正在干什么.比如从函数的角度看,它们会告诉你执行到一个函数时候的call trace,从一个函数开始向下的执行流,函数的执行时间,函数的参数,函数的返回值,甚至一个函数中需要输出的特定信息(便于更细粒度的调试定位问题),而且这些特定信息都是可以过滤和动态触发的。从一个内核子系统的角度来看,它们能告诉你整个子系统是怎样工作,子系统和子系统之间是怎样协作运行。本视频课程讲述了以上提到的各种tracer源代码级别的实现原理和使用方法, 演示了各种典型例子, 包括利用它们解决生产环境中的真实案例。