スナップショットダンプ【snapshot dump】

スナップショットダンプとは?

プログラムの実行中における特定の瞬間のメインメモリの内容を丸ごと記録・出力したデータ。実行状態を写真に撮影するように保存し、後から内部の状態を詳しく解析するために用いる。
スナップショットダンプのイメージ画像

コンピュータプログラムを実行する際、メモリ上には変数の値、スタックの状態、レジスタの内容など、処理に必要なさまざまなデータが展開されている。スナップショットダンプはこれらを一括して記録するため、プログラムがエラーを起こしたり異常終了したりした際に、その直前の状態を詳しく調べることができる。通常のログ出力では記録しきれない膨大な内部情報を、実行停止の直後に取得できる。

具体的な仕組みとしては、プログラムの実行を一時的に中断するか、特定の命令が実行されたタイミングで、物理メモリ上に展開されているバイナリデータをファイルとして書き出す。このファイルにはスタック領域ヒープ領域の情報が含まれており、「デバッガ」と呼ばれる専用ツールで読み込むことで、不具合が発生した瞬間のプログラム内部の状態を再現できる。再現性の低い複雑なバグの原因究明にも有効だ。

取得のタイミングは、主にプログラムが異常終了(クラッシュ)する瞬間である。オペレーティングシステム(OS)が異常を検知すると自動的にダンプを生成する仕組みが一般的だが、開発者が意図した任意の箇所で手動取得できる環境も存在する。Windowsでは「メモリダンプ」、LinuxUNIX系OSでは「コアダンプ」とも呼ばれ、障害解析の基本的な手段として広く用いられている。

記録されるデータビット列が並んだバイナリ形式であることが多く、そのままでは人間が読み解くことは難しい。専用の解析ツールを用いて内容を変換し、問題箇所を特定するのが通常の流れである。内容を取捨選択せずメモリを丸ごと保存する関係上、大規模なシステムでは数ギガバイトに達することもあり、保存領域の確保や解析の効率化が課題となる場合がある。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。