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

コンピュータがプログラムを実行する際、メモリ上には変数の値、スタックの状態、レジスタの内容など、処理に必要なさまざまなデータが展開されている。スナップショットダンプはこれらを一括して記録するため、プログラムがエラーを起こしたり異常終了したりした際に、その直前の状態を詳しく調べることができる。通常のログ出力では記録しきれない膨大な内部情報を、実行停止の直後に取得できる。
具体的な仕組みとしては、プログラムの実行を一時的に中断するか、特定の命令が実行されたタイミングで、物理メモリ上に展開されているバイナリデータをファイルとして書き出す。このファイルにはスタック領域やヒープ領域の情報が含まれており、「デバッガ」と呼ばれる専用ツールで読み込むことで、不具合が発生した瞬間のプログラム内部の状態を再現できる。再現性の低い複雑なバグの原因究明にも有効だ。
取得のタイミングは、主にプログラムが異常終了(クラッシュ)する瞬間である。オペレーティングシステム(OS)が異常を検知すると自動的にダンプを生成する仕組みが一般的だが、開発者が意図した任意の箇所で手動取得できる環境も存在する。Windowsでは「メモリダンプ」、LinuxやUNIX系OSでは「コアダンプ」とも呼ばれ、障害解析の基本的な手段として広く用いられている。
記録されるデータはビット列が並んだバイナリ形式であることが多く、そのままでは人間が読み解くことは難しい。専用の解析ツールを用いて内容を変換し、問題箇所を特定するのが通常の流れである。内容を取捨選択せずメモリを丸ごと保存する関係上、大規模なシステムでは数ギガバイトに達することもあり、保存領域の確保や解析の効率化が課題となる場合がある。