how to use Xen debugger

Xenに付属のdebuggerであるXen debuggerを使う

ReadMeに書いてあるので、英語が胆嚢な人はそちらをどうぞ。
英語が読めなくてもgdb得意な人もそちらをどうぞ。

Xen起動まで

省略

gdbserverのビルド

% cd /xen-3.1.0-src/tools/debugger/gdb
% ./gdbbuild
これでgdb-serverが以下のディレクトリに出来上がる
% /xen-3.1.0-src/tools/debugger/gdb/gdb-6.2.1-linux-i386-xen/gdb/gdbserver
gdb-serverが出来上がったら、それをPATHが通っているディレクトリにコピーする。
もちろんしなくてもいい。起動するときに絶対パスで指定してもいい。
xenのコマンドであるxmがある場所にコピーしておくほうがいいのかもしれない。xmは管理者権限でないと実行できないコマンドになっているので、suで管理者になってから
% su
% which xm
で場所を調べる。僕の環境では/usr/sbin/だった。
% cp /xen-3.1.0-src/tools/debugger/gdb/gdb-6.2.1-linux-i386-xen/gdb/gdbserver/gdbserver-xen
/usr/sbin/
でおk。管理者になっていたことを忘れてファイルなんかを作ると、後で面倒なので上のことが終わったら管理者から抜けておく。
% exit

デバッグ可能なDomain U用カーネルイメージの作成

普通にmakeするとデバッグ出来ないので、configで以下をenableにする。
Kernel hacking
-> Compile the kernel with debug info [*]
-> Compile the kernel with frame pointers
コンフィグしたらもう一度ビルド、インストール。

起動中のゲストをデバッグする

まず起動中のゲスト(Dom U)のIDを確認する。
xm list
で、デバッグしたいゲストのIDを見つける。見つけたら以下のコマンドを実行する。
$domidの部分はさっき調べた、デバッグしたいゲストのID。
%gdbserver-xen 127.0.0.1:9999 --attach $domid
%gdb /path/to/vmlinux-syms-2.6.xx-xenU
以降はgdb clientでの操作。
%directory "linux-2.6.1*-xenUというソースへのパスす"
%target remote 127.0.0.1:9999
%bt
%disass

クラッシュしたdomUゲストのデバッグ

debug可能にするには、ダンプが行われなければいけない。
xendを起動する前に、/etc/xen/xend-config.sxpにenable-dump yesを加えておく。
ドメインが壊れたら、コアファイルが
/var/xen/dump<domain-name>.<domain-id>.core
に出力されるので、
gdbserver-xen 127.0.0.1:9999 --file <core-file>
あとはクライアントとして接続するだけらしい。
最終更新:2007年08月01日 18:42
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。