KGDB
vmmをdebugしたい,
step実行等
KVM上のLinuxで開発して,自分のVMMもうごかしている
なので,ホストから,ゲストのLinuxにKGDBで繋いでやる
方法1
1. vmm.koをguestから持ってくる
2. gdb起動
$ gdb ./vmlinuz
2. vmmのソースコードがあるディレクトリを指定する
(gdb) directory work/vmm
3. guestでvmm.koをloadする
$ make install # at the vmm directory in the guest
4. /sys/module/vmm/sections/から各セクションがロードされたアドレスを取得する
$ cat /sys/module/vmm/.{text,bss,data}
5. ここで得られたアドレスを使ってgdbでvmm.koを読み込む
(gdb) add-symbol-file ./vmm.ko 0xffffffffc07ad000 -s .bss 0xffffffffc06b0480 -s .data 0xffffffffc06b0000
6. あとは普通のgdbとして扱う
(gdb) b vmlaunch_prev
(gdb) c
これを手作業は流石に面倒なので,自動化するスクリプトを作る
リポジトリにいれといてもよさげ
どうしようかな,カーネルもVMMも全部ホストでビルドしたものを使おうかな
利点としては,ゲストが何があっても影響を受けない(作り直せばいい)
fsの耐故障製が強くでバンバンゲストを殺しても意外と平気な気もする
refs
これをやるには,下のもやらんといけない
具体的には xmlのdomainのところに追加する
gdbについて