目的:ネットワーク経由でパケットを送受信するために呼び出される関数のコード ウォークスルーを実行しようとしています。
カーネルを構築し、デバッグ/トレースの目的で gdb を使用しています。
次のコマンドを使用して vm を構築しました。
time sudo ubuntu-vm-builder qemu precise --arch 'amd64' --mem '1024' --rootsize '4096' --swapsize '1024' --kernel-flavour 'generic' --hostname 'ubuntu' --components 'main' --name 'Bob' --user 'ubuntu' --pass 'ubuntu' --bridge 'br0' --libvirt 'qemu:///system'
そして、次のコマンドを使用して、qemu で VM を正常に実行できます。
qemu-system-x86_64 -smp 1 -drive file=tmpGgEOzK.qcow2 "$@" -net nic -net user -serial stdio -redir tcp:2222::22
ここで、gdb を使用してカーネルをデバッグします。このためには、デバッグ シンボル (vmlinux) を含む実行可能ファイルが必要ですが、vm-builder がそのようなオプションを要求することはなく、単に .qcow2 ファイルを作成しただけなので、明らかに持っていません。
質問 1: 問題を解決するために正しいアプローチを取っていますか?また、より簡単な方法はありますか?
質問 2: GDB を使用してこのカーネルをデバッグする方法はありますか?
PS: KVM のハードウェア サポートはありません。
間違っている場合は修正してください。
ありがとう。