QEMUとgdbを使ってLinuxカーネルをデバッグする方法を知りたいと思います。私は自分のVMに新しいkernel linux-3.18.6をコンパイルしました。私のVM環境はcentosで、カーネルバージョンは3.10.0-327.el7.x86_64です。新しいカーネルを実行するには、 "qemu-system-x86_64 -kernel /usr/src/linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S"というコマンドを使用します。次に、別のシェルウィンドウを使って "gdb ./vmlinux"を実行します。これまではすべてがうまくいきました。しかし、私が "target remote localhost:1234"を入力し続けると、それはいくつかの奇妙なメッセージを出力します。このようにQEMUnとGDBを使ってカーネルをデバッグする方法
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
Remote 'g' packet reply is too long:
00000000000000000000000000000000000000000000000063060000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000f0ff0000000000000200000000f0000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000007f0300000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000801f0000
(gdb) c
The program is not being run.
次に、「c」と入力します。 「プログラムが実行されていません」と表示されます。私はこの問題によって数日間混乱してきました。誰でも私にそれを修正し、プログラムを実行させる手助けをすることができます。どうもありがとう。
この問題についても同様のバグレポートがあります:https://sourceware.org/bugzilla/show_bug.cgi?id=13984バグ報告に添付されたパッチを適用し、gdbを再構築することができます。 – ks1322
ありがとうございました。わたしにはできる ! – Jerry