DUMP ファイル形式とは?
.dump 拡張子は、Mozilla Firefox を含む様々なソフトウェアで使用されているオープンソースのクラッシュ レポート ライブラリである Google Breakpad によって作成されるシンボル ファイルで使用されます。.dump ファイル自体にクラッシュの詳細が記録されるのではなく、バイナリのネイティブ デバッグ データ(Windows PDB ファイル、ELF DWARF、または macOS DWARF/STABS)から dump_syms ツールによって生成されたプレーンテキストのデバッグ シンボル テーブルです。これらは、生のマシンコード アドレスを関数名、ソース ファイルのパス、および行番号にマッピングします。
.dump ファイルは事前作成され、シンボル サーバーまたはローカル ディレクトリに保存されます。プログラムがクラッシュしたときに生成されるものではありません。クラッシュが発生すると、コンパニオン ツールである minidump_stackwalk が、minidump クラッシュ レポート とともに .dump シンボル ファイルを読み取り、人間が読める形式のスタック トレースを生成します。結果として得られるシンボル化されたトレースは、クラッシュ レポートとともにソフトウェア開発者に送信され、プログラムのクラッシュの原因となっているエラーを特定し、対処するために使用されます。
Breakpad シンボル ファイルは、行指向の ASCII テキストです。最初の行は常に MODULE レコード(例: MODULE Linux x86_64 <build-id> libfoo.so)であり、OS、CPU アーキテクチャ、一意のビルド ID、およびライブラリまたは実行ファイル名を識別します。その後のレコード(FILE、FUNC、PUBLIC、STACK)が残りのシンボル マッピングを保持します。後のフォーマット リビジョンでは INLINE および INLINE_ORIGIN レコードが追加されており、リーダーは未知のレコード タイプを許容するように設計されています。ファイル サイズは、シンボル化されるライブラリのサイズに応じて、数十キロバイトから数百メガバイトに及びます。
.dump シンボル ファイルはプレーンな ASCII であるため、Notepad++ や VS Code などの任意のテキスト エディターで検査したり、同じ Breakpad シンボル フォーマットをサポートする Sentry CLI や symbolic ライブラリによってプログラム的に処理したりすることができます。
セキュリティと安全性
リスク: LOWBreakpad シンボル ファイルは実行可能コンテンツを含まないプレーンテキストであるため、安全に開くことができます。唯一の懸念は、シンボル ファイルがプログラムの内部関数名やソース パスを公開することです(軽微な情報漏洩)。そのため、ベンダーは通常、これらをプライベートなシンボル サーバーに保管します。«.dump» はメモリ ダンプやデータベース エクスポートにも使用されるため、無害であると仮定する前に、特定のファイルが実際に何であるかを確認してください。生のメモリ ダンプには機密データが含まれている可能性があります。
形式の詳細
概要- メモリ / クラッシュ ダンプ ファイル - 生のプロセスまたはカーネル メモリ ダンプ(例: コア ダンプ、Windows .dmp)。バイナリ形式で、デバッガで開かれます。テキスト シンボル ファイルとは無関係です。
- データベース / SQL ダンプ - mysqldump/pg_dump などのツールによって生成されるデータベースのテキスト エクスポート。シンボル テーブルではなく、データベースに再度読み込まれます。
- Wireshark / パケット キャプチャまたは汎用データ ダンプ - 様々なツールが、キャプチャまたはエクスポートされた生データの «.dump» を書き出します。フォーマットは生成ツールに完全に依存します。
DUMP ファイルを開くプログラム
MODULE/FUNC/PUBLIC レコードを確認します。プレーンテキストです。Breakpad シンボル ファイルであることを確認し、デバッグ ID をチェックするのに役立ちます。 minidump_stackwalk を実行し、シンボル化されたスタック トレースを生成します。dump_syms はこれらのファイルを生成します。 minidump_stackwalk を実行し、シンボル化されたスタック トレースを生成します。dump_syms はこれらのファイルを生成します。 minidump_stackwalk を実行し、シンボル化されたスタック トレースを生成します。dump_syms はこれらのファイルを生成します。 技術的詳細
詳細仕様| フォーマット タイプ | プレーンテキスト デバッグ シンボル テーブル。マシンコード アドレスを関数名とソースの場所にマッピングする行指向の ASCII レコード |
| MIME タイプ | text/plain (汎用的な転送コンテキストでは application/octet-stream としても見られます) |
| ファイル ヘッダー / マジック | バイナリ マジック バイトはありません。最初の行は常に MODULE レコードです: MODULE <os> <arch> <build-id> <name> |
| テキスト エンコーディング | ASCII。行区切りはホスト プラットフォームに依存します(Unix では LF、Windows では CRLF) |
| コンテナ | プレーンテキスト - バイナリ ラッパー、埋め込みセクション、チャンクはありません |
| 圧縮 | 組み込みのものはありません。シンボル サーバー上では外部的に gzip 圧縮されて保存される場合があります |
| 一般的なファイル サイズ | 数十 KB から数百 MB - シンボル化されるバイナリ内の関数とソース行の数に比例します |
| レコード タイプ | MODULE (ヘッダー), FILE (ソース パス リスト), FUNC (関数アドレス範囲), PUBLIC (エクスポートされたシンボル), 行番号レコード, STACK (フレーム アンワインド), INLINE, INLINE_ORIGIN |
| ビルド ID / 一致キー | MODULE レコードには、シンボル ファイルを正確なバイナリまたは minidump とペアリングするために使用されるデバッグ ビルド ID(ハッシュ)が埋め込まれています |
| 生成ツール | dump_syms (Breakpad/Crashpad) - Windows PDB、ELF DWARF、または macOS DWARF/STABS デバッグ情報からシンボル データを抽出します |
| 消費ツール | minidump_stackwalk (Breakpad), Sentry CLI, symbolic ライブラリ (Rust/Python) - これらすべてがこのフォーマットを読み取り、クラッシュ スタック トレースをシンボル化します |
| プラットフォーム サポート | Windows, macOS, Linux, Android - Breakpad と Crashpad は、これら 4 つのプラットフォームすべてで .dump シンボル ファイルを生成および消費します |
| フォーマットの拡張性 | 追加可能なキーワード レコード設計。パーサーは認識できないレコード タイプをスキップするため、古いツールを壊すことなく INLINE や INLINE_ORIGIN レコードを追加できます |
| 読み取り可能なソース デバッグ フォーマット | Windows PDB (.pdb), ELF DWARF (.so / .elf), macOS DWARF および STABS (.dSYM / .dylib) - dump_syms はこれらすべてを統一された .dump シンボル フォーマットに変換します |
| リリース日 | 2007 (Google Breakpad open-sourced; symbol-file format dates from that era) |
| 最新バージョン | Breakpad symbol format additively extended (INLINE/INLINE_ORIGIN records added in later revisions); no formal version number |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | github.com |
DUMP の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。DUMP ファイルについて最初の質問をしてみましょう。
よくある質問
.dump ファイルとは何ですか?
Breakpad シンボル (.dump) ファイルを開くにはどうすればよいですか?
MODULE/FUNC/PUBLIC レコードを確認できます。実際に使用するには、minidump とともに Breakpad の minidump_stackwalk に読み込ませてスタック トレースを生成します。.dump シンボル ファイルと .dmp クラッシュ ダンプの違いは何ですか?
.dmp minidump はクラッシュ時のバイナリ スナップショット(レジスタ/スタック)です。シンボル ファイルは、アドレスを関数名にマッピングするテキストです。これらを組み合わせることで、読み取り可能なクラッシュ トレースが得られます。クラッシュ トレースに関数名ではなく 16 進数のアドレスが表示されるのはなぜですか?
dump_syms を使用してシンボルを生成し(MODULE の debug-id が一致する必要があります)、プロセッサにそれらを指定してください。