magic-trace
一款基于 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%,支持通过符号模糊匹配或预留空函数作为触发点。适用于生产环境性能问题排查、理解复杂代码执行过程以及崩溃现场回放等场景。
标签
快速上手
安装软件
根据你的发行版安装对应的包(dpkg / rpm / AppImage)
下载最新版本的可执行文件,运行 chmod +x magic-trace 赋予执行权限
启动目标程序,运行 magic-trace attach -pid $(pidof 程序名)
等待数秒后按下 Ctrl+C,magic-trace 会在当前目录生成 trace.fxt.gz 文件
- 下载最新版本的可执行文件,运行 chmod +x magic-trace 赋予执行权限
- 启动目标程序,运行 magic-trace attach -pid $(pidof 程序名)
- 等待数秒后按下 Ctrl+C,magic-trace 会在当前目录生成 trace.fxt.gz 文件
最新更新
## What's Changed
* Add support for compressed output files, whether gzip (supported by Pe… by @bnigito in https://github.com/janestreet/magic-trace/pull/306
* Handle TSX transactions by @bnigito in https://github.com/janestreet/magic-trace/pull/308
* Fix symbol resolution for Rust binaries by @JosiahWhite in https://github.com/janestreet/magic-trace/pull/321
* Reap zombie `perf` processes from capability detection by @Xyene in https://github.com/janestreet/magic-trace/pull/316
* Recognize `int3` instructions in trace parser by @Xyene in https://github.com/janestreet/magic-trace/pull/322
* Add a `MAGIC_TRACE_NO_OCAML_EXCEPTION_DEBUG_INFO` environment variable by @bnigito in https://github.com/janestreet/magic-trace/pull/305
## New Contributors
* @bnigito made their first contribution in https://github.com/janestreet/magic-trace/pull/305
* @JosiahWhite made their first contribution in https://github.com/janestreet/magic-trace/pull/321
**Full Changelog**: https://github.com/janestreet/magic-trace/compare/v1.2.3...v1.2.4
暂未获取到校验码
该项目暂未在 GitHub Release 页面提供 SHA-256 校验码
SHA256 校验码
暂无校验码
建议从 GitHub Releases 页面直接下载,并自行核对文件完整性
本平台所有 SHA-256 校验码均提取自项目在 GitHub 官方 Release 页面发布的文件,未做任何修改。你可以通过 GitHub Releases 页面自行验证。
开源透明
查看 GitHub 源码卸载说明
直接删除下载的可执行文件即可(无其他系统文件残留)。
无额外依赖
下载后即可直接使用,无需安装其他运行环境