OpenSource-Hub
M

magic-trace

5.9k stars·开发工具·已提供 SHA-256 校验码,下载后可自行核对文件完整性

一款基于 Intel Processor Trace 的高分辨率追踪工具,以约 40 纳秒精度记录程序全部函数调用,提供回放式交互分析,无需修改代码,开销仅 2-10%。

像回放录像一样查看程序纳秒级函数调用详情,快速定位性能瓶颈与异常行为。

核心功能

  • 捕获所有函数调用(包括 C/C++、Rust 等编译语言),分辨率约 40 纳秒
  • 无侵入式追踪:无需修改应用程序代码或重新编译
  • 支持两种触发模式:手动 Ctrl+C 或指定函数自动触发,最多可回溯约 10 毫秒历史
  • 生成交互式调用栈时间线,支持缩放、测量、标记等操作
  • 通过 Intel Processor Trace 硬件实现低开销(2-10%)

避坑指南

  • 仅支持 Intel Skylake 及以后的 CPU 架构,且仅限 Linux 系统
  • 不支持在虚拟机中运行(虚拟机通常不支持 Intel PT 穿透)
  • 使用内核态追踪(-trace-include-kernel)需要 root 权限
  • 触发函数必须是一个空函数且不能被内联,否则 magic-trace 无法识别
  • 追踪时进程额外开销约 2-10%,高频场景下需评估影响

适用场景

  • 分析生产环境请求响应慢的原因,区分异常请求与正常请求的行为差异
  • 追踪程序崩溃前最后几毫秒的完整执行路径,替代单一栈回溯

详细介绍

magic-trace 是 Jane Street 开发的一款高性能追踪工具,基于 Intel Processor Trace 技术,以约 40 纳秒的分辨率记录程序执行的所有函数调用。它通过环形缓冲区持续录制控制流,在触发时(如 Ctrl+C 或调用指定函数)截取触发点前约 10 毫秒的完整调用栈历史,并生成可交互的时间线视图。与传统采样工具 perf 不同,magic-trace 捕获全部控制流,让你能看清事件发生前微秒级的精确行为。它无需修改应用程序代码,额外开销仅 2%-10%,支持通过符号模糊匹配或预留空函数作为触发点。适用于生产环境性能问题排查、理解复杂代码执行过程以及崩溃现场回放等场景。

常见问题与排障 (2)

故障排除
为什么构建 magic-trace 时,make default 会失败并提示 'Library "ocaml_intrinsics" not found'?

测试目标 'variable-duration' 依赖于 'ocaml_intrinsics',但 'ocaml_intrinsics' 未在 magic-trace.opam 中声明为依赖项。请将 'ocaml_intrinsics' 添加到 opam 文件的 'with-test' 依赖项中,然后再次运行 opam install . --deps-onlymake default。或者在构建前手动执行 opam install ocaml_intrinsics

来源 Issue #313
故障排除
为什么magic-trace在使用perf 6时无法解析符号?

magic-trace 目前仅支持 perf 版本 5 或更早。perf 6 输出的符号格式 magic-trace 尚无法识别。要解决此问题,请降级到 perf 版本 5。

来源 Issue #334

标签

tracingprofilingIntel PTperformancedebuggingcall-stacklow-overhead

快速上手

1

下载安装包

点击上方按钮下载对应系统的安装包

2

安装软件

根据你的发行版安装对应的包(dpkg / rpm / AppImage)

3

下载最新版本的可执行文件,运行 chmod +x magic-trace 赋予执行权限

4

启动目标程序,运行 magic-trace attach -pid $(pidof 程序名)

5

等待数秒后按下 Ctrl+C,magic-trace 会在当前目录生成 trace.fxt.gz 文件

安装指引
  1. 下载最新版本的可执行文件,运行 chmod +x magic-trace 赋予执行权限
  2. 启动目标程序,运行 magic-trace attach -pid $(pidof 程序名)
  3. 等待数秒后按下 Ctrl+C,magic-trace 会在当前目录生成 trace.fxt.gz 文件
文件完整性

暂未获取到校验码

该项目暂未在 GitHub Release 页面提供 SHA-256 校验码

SHA256 校验码

暂无校验码

建议从 GitHub Releases 页面直接下载,并自行核对文件完整性

本平台所有 SHA-256 校验码均提取自项目在 GitHub 官方 Release 页面发布的文件,未做任何修改。你可以通过 GitHub Releases 页面自行验证。

运维指引

卸载说明

直接删除下载的可执行文件即可(无其他系统文件残留)。

无额外依赖

下载后即可直接使用,无需安装其他运行环境

项目信息
开源协议MIT
最后更新2026-06-27 11:25:05
GitHub 仓库官方网站

遇到问题?查看下方 FAQ

2 FAQs

相似推荐