OpenSource-Hub
M

magic-trace

5.9k stars·開発ツール·SHA-256 チェックサム確認済み

Intel Processor Trace をベースにした高解像度トレースツールで、約40ナノ秒の精度でプログラムの全関数呼び出しを記録します。再生式のインタラクティブ分析を提供し、コード変更不要でオーバーヘッドはわずか2~10%です。

まるで録画を再生するかのように、プログラムのナノ秒単位の関数呼び出し詳細を確認し、パフォーマンスのボトルネックや異常な動作を迅速に特定できます。

主な機能

  • すべての関数呼び出し(C/C++、Rustなどのコンパイル言語を含む)をキャプチャ、分解能約40ナノ秒
  • 非侵入型トレース:アプリケーションコードの変更や再コンパイルは不要
  • 2つのトリガーモードをサポート:手動の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%です。シンボルのファジーマッチングや、あらかじめ用意した空関数をトリガーポイントとして使用できます。本番環境でのパフォーマンス問題の調査、複雑なコード実行プロセスの理解、クラッシュ現場のリプレイなどのシナリオに適しています。

トラブルシューティング & FAQ (2)

トラブル対応
magic-traceをビルドする際に、make defaultが'Library "ocaml_intrinsics" not found'で失敗するのはなぜですか?

テストターゲット 'variable-duration' は '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 version 5以前のみをサポートしています。perf 6はmagic-traceがまだ理解できない形式でシンボルを出力します。この問題を解決するには、perf version 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 ページで独自に検証できます。

オープンソースの透明性

GitHub ソースを見る
環境ガイド

アンインストール情報

直接ダウンロードした実行ファイルを削除すれば問題ありません(他のシステムファイルは残りません)。

追加の依存関係なし

ダウンロード後すぐに使用可能。追加のランタイムは不要です。

プロジェクト情報
ライセンスMIT
最終更新2026-06-27 11:25:05
GitHub リポジトリ公式サイト

問題が発生?以下のFAQを確認

2 FAQs

類似プロジェクト