动态分析 Linux 内核函数调用关系)
🚀返回专栏总目录文章目录前言一、环境准备1.1 内核配置1.2 挂载 debugfs / tracefs1.3 工具安装二、Ftrace:内核函数追踪利器2.1 核心 Tracer 类型2.2 function 追踪器:函数调用记录2.3 function_graph 追踪器:调用关系图2.4 控制追踪深度2.5 过滤特定进程三、trace-cmd:Ftrace 的瑞士军刀3.1 手工 Ftrace vs trace-cmd3.2 核心命令3.3 实战示例3.4 record 命令常用选项四、KernelShark:图形化时间线分析4.1 启动与界面4.2 核心功能4.3 典型分析流程五、Perf:内核性能采样利器5.1 基本用法5.2 追踪特定内核函数5.3 perf ftrace 子命令5.4 生成调用关系图六、FlameGraph:壮观的火焰图6.1 从 Perf 数据生成火焰图6.2 从 Ftrace 数据生成火焰图6.3 火焰图解读七、工具对比与选择工具选择建议八、实战案例:追踪系统调用的内核路径8.1 使用 Ftrace 直接追踪8.2 使用 trace-cmd 一键完成8.3 使用 Perf + FlameGraph九、总结沉淀、分享、成长,让自己和他人都能有所收获!😄前言源码分析是开发者理解系统行为的基石。在前面的文章中,我们分别介绍了如何静态分析C 程序的函数调用关系(利用 cflow、calltree 等工具直接从源码文本中提取调用树),以及如何动态分析用户态应用程序的实际函数执行路径(利用 gprof、Valgrind 等工具记录运行时的调用情况)。本文将视角深入到内核空间——当一个应用程序执行时,它究竟调用了哪些内核接口(系统调用)?这些接口在内核内部的执行路径是怎样的?哪些函数是性能热点?我们将围绕三款核心工具展开:Ftrace(内核内置追踪框架)、Perf(内核性能采样利器)和FlameGraph(火焰图可视化),系统讲解如何动态分析 Linux 内核的函数调用关系。