注
現在マップされていないユーザ空間パラメータ(__user
とマークされている)をデバッガが読み出すことはできません。
カーネルをデバッグするには
- 以下のオプションを使用して、カーネルソースをコンパイルします。
-
CONFIG_DEBUG_KERNEL=y
カーネルのデバッグオプションを有効にします。
-
CONFIG_DEBUG_INFO=y
デバッグ情報を使用して vmlinux
をビルドします。
-
CONFIG_DEBUG_INFO_REDUCED=n
カーネルのコンパイル時に完全なデバッグ情報を含みます。
-
CONFIG_PERF_EVENTS=n
パフォーマンスイベントのサブシステムを無効にします。パフォーマンスイベントサブシステムの一部の実装では、内部的にハードウェアブレークポイントを使用し、デバッガによって設定されたハードウェアブレークポイントの使用を中断します。ハードウェアブレークポイントのヒットに失敗するデバッガや、イベントをロードおよびアンロードするカーネルモジュールの報告に失敗するデバッガを監視する場合は、このオプションを無効にすることをお勧めします。
注
Streamline を使用する場合は、このオプションが有効になっている必要があります。
カーネルソースをコンパイルすると、デバッグ情報を含む Linux カーネルイメージおよびシンボルファイルが生成されます。
注
- 実行するデバッグのタイプによっては、その他のオプションが必要になることがあることに注意して下さい。詳細はカーネルのドキュメントをチェックして下さい。
- Linux カーネルは常に完全な最適化でコンパイルされ、インライン展開が有効になっているので、以下のことに注意して下さい。
- コードをステップ実行すると、一部の命令が並べ替えられている可能性があるため、予想どおりに動作しないことがあります。
- 一部の変数はコンパイラによって最適化されて取り除かれる場合があるので、デバッガで使用できません。
- Linux カーネルをターゲットにロードします。
- カーネルデバッグ情報をデバッガにロードします。
注
デバッグしている Linux カーネルを複数のコアで実行する場合は、デバッガの接続時に SMP 接続の型を選択することをお勧めします。SMP 接続の代わりにシングルコア接続を使用すると、再開する方法がないソフトウェアブレークポイントでその他のコアが停止してしまう可能性があります。
- 必要に応じて、カーネルをデバッグします。