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

如何在Linux系统中获取程序执行时按时间顺序排列的被调用函数列表

Linux环境下按时间顺序追踪函数调用的低负载方案
  • ftrace(内核内置追踪框架)
    ftrace是Linux内核原生自带的追踪能力,无需额外安装,追踪开销远低于编译插桩,是该场景的首选方案:
    操作步骤如下:
    1. 挂载tracefs文件系统:mount -t tracefs nodev /sys/kernel/tracing
    2. 切换到函数调用追踪模式,若需要完整调用层级使用function_graph跟踪器:echo function_graph > /sys/kernel/tracing/current_tracer;若仅需函数进入事件,可使用更精简的function跟踪器
    3. 绑定要追踪的目标进程PID:echo 你的进程PID > /sys/kernel/tracing/set_ftrace_pid
    4. 开启追踪:echo 1 > /sys/kernel/tracing/tracing_on
    5. 目标程序运行结束后关闭追踪,读取按时间排序的调用记录:echo 0 > /sys/kernel/tracing/tracing_on && cat /sys/kernel/tracing/trace
      输出结果会天然按调用时间排序,同时标注函数的进入/退出时间戳、父子调用层级关系。
  • perf(系统性能分析工具)
    perf是绝大多数Linux发行版默认预装的性能工具,支持采样/全量两种追踪模式,负载可控:
    若可以接受极低比例的采样丢失,使用采样模式负载几乎可以忽略:perf record -g -p 目标进程PID -- sleep 追踪时长,采集完成后执行perf script即可输出按时间顺序排列的函数调用记录。
    若需要全量捕获所有函数调用,可调整参数为perf record -e function:call -g -p 目标进程PID,该模式负载比采样模式高,但仍远低于编译插桩方案。
  • 关于dtrace的补充:Linux平台也有dtrace的移植版本,但默认没有集成到主流发行版中,需要手动编译内核、配置启动参数,易用性远低于上述两个原生工具,非特殊需求不推荐使用。

内容的提问来源于stack exchange,提问作者A. K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:39:03