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%,支持通过符号模糊匹配或预留空函数作为触发点。适用于生产环境性能问题排查、理解复杂代码执行过程以及崩溃现场回放等场景。

标签

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 文件

最新更新

## 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 页面自行验证。

运维指引

卸载说明

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

无额外依赖

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

项目信息
开源协议MIT
最后更新2026-05-24T06:13:43Z
GitHub 仓库官方网站

相似推荐