web-dev-qa-db-ja.com

正確には何であり、プロセスのコアダンプには何が含まれていますか?

GDBがそのラッパー-gcoreなどを介してプロセスのコアダンプを生成できることは明らかですが、正確に何が含まれているかは明確ではなく、ソースが異なるとまったく異なることを言うため、Answearを見つけるのは非常に困難です。

そのため、次の質問をします。

  1. プロセスの仮想メモリ全体が含まれていますか?そうでない場合、それのどの部分ですか?すべての書き込み可能な領域またはスタックのみ、または単に(その名前が示すように)いくつかの重要な部分または何ですか?

  2. GDBを介してプロセスの完全なメモリを含むコアファイルを生成することは可能ですか?もしそうなら、どうですか?

  3. プロセスのメモリマップとgcoreコマンドを使用して自動生成されたファイルに従って、すべての領域のメモリを保存および連結することによって生成される「ダンプ」の違いは何ですか?

  4. プロセスがデータをRAMのどこかに書き込みました。データが(常に)アクセスされ、gcoreコマンドで生成されたコアファイルに保存されることを確認できますか?そうでない場合、なぜですか?それは何に依存していますか?

6
Listek

コアファイルには、そのプロセスに固有のプロセスの仮想メモリのすべての部分が含まれています。これは通常、データセグメントとスタックセグメントです。実行可能コードを含むテキストセグメントは含まれていません。コアファイルをデバッグする場合は、実行中のプログラムをデバッガーに通知する必要があります。

内容の詳細な説明は ELFコアファイルの構造 にあります。

6
Barmar