明らかに、GDBはラッパー(gcoreなど)を使用してプロセスのコアダンプを生成できますが、正確に何が含まれているかはわかりません。
したがって、次の質問があります。
プロセスの仮想メモリ全体が含まれていますか?そうでなければどのような部分ですか?書き込み可能なすべての領域、またはスタックだけでなければ(名前からわかるように)、いくつかの基本部分だけでなければ何ですか?
GDBを介してフルプロセスメモリを含むコアファイルを作成できますか?それでは、どうすればいいですか?
プロセスのメモリマップに基づいて、メモリ内のすべての領域を保存して接続して生成された「ダンプ」とコマンドを使用して自動的に生成されたファイルの違いは何ですか
gcore
?プロセスはRAMのどこかにいくつかのデータを書き込みます。
gcore
コマンドを使用して作成されたコアファイルにデータが(常に)アクセスされて保存されることを確認できますか?そうでなければなぜですか?それは何に依存しますか?
答え1
コアファイルには、そのプロセスに関連するプロセス仮想メモリのすべての部分(通常はデータとスタックセグメント)が含まれています。実行可能コードを含むテキストセグメントは含まれません。コアファイルをデバッグするには、デバッガにどのプログラムが実行されているかを知らせる必要があります。
コンテンツの詳細な説明は、以下で確認できます。ELFコアファイルの分析