2. コアダンプの原因を見る方法

プログラムが異常にクラッシュした後、コアダンプの原因をどのように確認できますか?

  • メンテナー:daohu527@gmail.com

  • バージョン:1.0.0

  • 日付:2024年5月19日

  • 説明:

2.1. 回答

プログラムが異常にクラッシュした後、コアダンプファイルを使用して具体的なエラーの原因を確認できます。

2.1.1. コアダンプファイルのパス

Apolloのコアダンプファイルは``data/core``ディレクトリに保存されます。プログラムがクラッシュすると、システムは通常`core`または`core.pid`という名前のコアダンプファイルを生成します。ここで`pid`はプロセスIDです。

2.1.2. コアダンプの原因を確認する

``gdb``(GNUデバッガ)は、コアダンプファイルを分析するための強力なツールです。コアダンプファイルを生成した実行可能ファイルとコアダンプファイル自体を提供する必要があります。以下は具体的な手順です:

  1. gdbを起動し、実行可能ファイルとコアダンプファイルを読み込む:

    gdb <path-to-executable> <path-to-core-dump>
    

    例:

    gdb ./my_program data/core/core.12345
    
  2. gdbでクラッシュ時のスタック情報を表示する:

    (gdb) bt
    

    ``bt``(バックトレース)コマンドは、クラッシュ時の呼び出しスタックを表示し、問題の特定に役立ちます。

2.1.3.

生成されたコアダンプファイルが``core.12345``であると仮定すると、次の手順で確認できます:

$ gdb mainboard data/core/core.12345

gdbプロンプトで:

(gdb) bt
# 呼び出しスタックが表示されます
(gdb) info locals
# 現在のフレームのローカル変数を表示
(gdb) print some_variable
# 変数some_variableの値を表示
(gdb) list
# 現在実行中のコード行を表示
(gdb) list my_program.c:42
# my_program.cファイルの42行目のコードを確認

上記の手順に従うことで、プログラムクラッシュの原因を詳細に分析し、適切なデバッグと修正を行うことができます。