gdbコールスタックトレースを取得するにはどうすればよいですか?

Aug 19 2020

コアダンプとデバッグ情報が保存されているファイルがありますが、実行可能ファイルを使用せずにgdbを使用して、関数と行の名前を持つ呼び出しスタックを取得できますか?

回答

1 EmployedRussian Aug 20 2020 at 10:04

実行可能ファイルを使用せずにgdbを使用して、関数と行の名前を持つ呼び出しスタックを取得できますか?

少なくともLinux / x86_64では、答えはノーobjcopy --only-keep-debugです。後に保存された情報では不十分です。実行可能ファイルも必要です。

に巻き戻すために必要なセクションdebug_fileがないため、これは(少なくとも部分的に)発生しています。.eh_framex86_64

コアダンプを自分でデバッグしている場合は、作成する理由はありません。debug_fileデバッグ用に完全なデバッグ情報を含む元の実行可能ファイルを保持するだけです(小さなストリップファイルを実行マシンに送信することもできます)。