インターネットで検索しましたが、gdbを使用してLinuxモジュールをリモートでデバッグする正しい手順が見つかりませんでした。私はqemuを試していますが、そこで多くの問題に直面しています。使用できる他のツールはありますか?それ以外の場合は、Linuxモジュールをリモートでデバッグする正しい手順を教えてください。
答え1
それほど難しくありません。 ~から公式カーネル文書(「万王」で検索しないでください。公式文書を検索すると、悪い情報が見つかりません):
- カーネルを有効にし、
KGBD
ビルドプロセス中に設定オプションがオンにCONFIG_GDB_SCRIPTS
なっていることを確認してください。 (カーネルパッケージを構築する方法の詳細については、CentOSのドキュメントを参照してください。これが最も簡単な方法です。)- 走る
make scripts_gdb
- 走る
- ローカルでカーネルシンボルを簡単に理解するには、このカーネル(
vmlinux
)をホストシステムにコピーします。 - QEMUで選択したLinuxディストリビューションを実行します。
- QEMUのGDBスタブを有効にし、ポートでリッスンします。つまり、使用するポート番号(1024より大きく21⁶未満)を使用して
qemu
実行します。-gdb tcp::$SOMEPORT
$SOMEPORT
または、-s
と同じように実行されます-gdb tcp::1234
。 -S
オプションを提供することで、QEMUがマシンをすぐに起動しないようにする
- QEMUのGDBスタブを有効にし、ポートでリッスンします。つまり、使用するポート番号(1024より大きく21⁶未満)を使用して
- ホストコンピュータで次を実行します。
gdb /path/to/the/kernel/vmlinux
- QEMUスタブに
gdb
以下を追加しますtarget remote :$SOMEPORT
。 - これで、次のコマンドを実行
continue
して仮想マシンを起動できます。