GDBを使用してLinuxモジュールをリモートでデバッグする方法は?

GDBを使用してLinuxモジュールをリモートでデバッグする方法は?

インターネットで検索しましたが、gdbを使用してLinuxモジュールをリモートでデバッグする正しい手順が見つかりませんでした。私はqemuを試していますが、そこで多くの問題に直面しています。使用できる他のツールはありますか?それ以外の場合は、Linuxモジュールをリモートでデバッグする正しい手順を教えてください。

答え1

それほど難しくありません。 ~から公式カーネル文書(「万王」で検索しないでください。公式文書を検索すると、悪い情報が見つかりません):

  1. カーネルを有効にし、KGBDビルドプロセス中に設定オプションがオンにCONFIG_GDB_SCRIPTSなっていることを確認してください。 (カーネルパッケージを構築する方法の詳細については、CentOSのドキュメントを参照してください。これが最も簡単な方法です。)
    • 走るmake scripts_gdb
  2. ローカルでカーネルシンボルを簡単に理解するには、このカーネル(vmlinux)をホストシステムにコピーします。
  3. QEMUで選択したLinuxディストリビューションを実行します。
    • QEMUのGDBスタブを有効にし、ポートでリッスンします。つまり、使用するポート番号(1024より大きく21⁶未満)を使用してqemu実行します。-gdb tcp::$SOMEPORT$SOMEPORTまたは-sと同じように実行されます-gdb tcp::1234
    • -Sオプションを提供することで、QEMUがマシンをすぐに起動しないようにする
  4. ホストコンピュータで次を実行します。gdb /path/to/the/kernel/vmlinux
  5. QEMUスタブにgdb以下を追加しますtarget remote :$SOMEPORT
  6. これで、次のコマンドを実行continueして仮想マシンを起動できます。

関連情報