3

目的:ネットワーク経由でパケットを送受信するために呼び出される関数のコード ウォークスルーを実行しようとしています。

カーネルを構築し、デバッグ/トレースの目的で 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 のハードウェア サポートはありません。

間違っている場合は修正してください。

ありがとう。

4

0 に答える 0