どうもよくわからない不具合の出るソフトがあったので、VirtualServer仮想PC上でwindbgを走らせてみようと思ってMicrosoftのKBでwindbgの情報を探してみる。
VirtualServer・VirtualPCのホストOSから、ゲストOSのカーネルにアタッチする方法があったので試してみた、多少本筋からずれた気もするがやむなし。
How to debug a virtual machine on a host computer(略) part 1 of 2
How to debug a virtual machine on a host computer(略) part 2 of 2
Part1では仮想PCのカーネルにアタッチする方法、Part2はVirtualServer自身のデバッグ方法?かな、2はあまり読んでない。
詳しくはPart1を見るとわかるので、設定する箇所を画像でメモ。
[caption id="attachment_539" align="alignnone" width="300" caption="画像:ゲストOSのCOM1を名前付きパイプに接続"]
ゲストOSの COM1 に「\\.\pipe\com2」という名前付きパイプ(※ややこしくて失礼、com2の部分は名前なので何でもよい)に接続します。
UNCなので途中のピリオドはlocalホストを表し、もちろんUNCパスなら他のPCでもよい(はず)。
ゲストOS上での準備としてboot.iniをデバッグオプション有効にしておく必要があります、msconfigコマンドなどを使用して設定。
[caption id="attachment_540" align="alignnone" width="399" caption="画像:デバッガも名前付きパイプに接続"]
ゲストOSのカーネルにアタッチする準備。
画像はwindbgの[File]メニューからカーネルデバッグを選択した後の名前付きパイプへの接続設定。
[caption id="attachment_541" align="alignnone" width="300" caption="画像:仮想OSのカーネルデバッグ出力が得られている"]
windbgを待ち状態にした後、ゲストOSを起動したところ。アタッチはいつでもできる模様。
さっそくいろいろ例外を吐いてくれている、とりあえずF5で先に進める。
[caption id="attachment_542" align="alignnone" width="300" caption="画像:Breakしてレジスタを表示してみる"]
折角なので「Ctrl+Break」!!カーネルを止めてみる。
普段OSが勝手に止まると色々冷や汗ものだが、自分の意思で止めるというのはなかなかどうして面白い。
しかしプログラミングの知識があるわけでないので、個人では「!analyze -v」コマンドで自動解析をしてもらうくらいしか使い道がない。
困ったらプログラムがわかる人に聞いてみよう。