コアダンプ
コアダンプ(英語:core dump)は、ある時点の使用中のメモリの内容をそのまま記録したものであり、一般に異常終了したプログラムのデバッグに使われる。最近では、特定のプロセスのメモリイメージ(あるいはその一部)とレジスタの内容などの情報を格納したファイルを指すのが一般的である。しかし、本来は使用中メモリの内容を全てプリントアウトしたものを指した。
その名前は、かつて主記憶用に利用された磁気コアメモリの内容を、ダンプトラックが砂利や小麦などを大量にダンプ(どさっと落とす)するかのようにプリントアウトすることから来ている。
異常終了したプロセスがコアダンプを出力することを、俗に「コアを吐く」という。
オペレーティングシステム (OS) が生まれ、大きなデータファイルを扱えるようになる以前は、コアダンプはメモリの内容を紙にプリントアウトしたものであり、一般に8進数か16進数(ヘックスダンプと呼ばれる)で記され、場合によっては、その横に何らかの形式に翻訳したものも表示された(機械語命令として翻訳したり、ASCII文字列として翻訳したり、十進数や浮動小数点数として翻訳したりする)。その後、コアダンプは特定のプロセスのアドレス空間の一部または全部のメモリイメージを格納したファイルとなり、同時にレジスタの値などの情報も格納するようになった。このようなファイルは適当なツールを使えば、かつての紙のコアダンプと同じように、人間が読める形式で参照可能となる。
古いOSでは、プロセスのアドレス空間は連続であり、コアダンプファイルは単にアドレス順にバイトが並んでいるだけだった。最近のOSでは、プロセスのアドレス空間には使っていない部分があり、それを表現するためにファイル形式も複雑化している。また、ダンプ採取時のプログラムの状態などの情報も格納される。
Unix系システムでは、コアダンプは一般に実行ファイルのファイルフォーマットを使っている。古いUNIXでは、a.outフォーマットが使われていた。Linux、System V、Solaris、BSDなどでは、ELF形式が使われている。macOSではMach-O 形式が使われている。