[M.D.L] VMware 3 で Kernel Debugging!
<Home> → <M.D.L.> → <[M.D.L] VMware 3 で Kernel Debugging!>
はじめに
VMware 上で Kernel Debug を行った時の備忘録です。「VMware って何」って方には
<VMware 関連> を参考にどうぞ。
VMware 上で Kernel Debug が出来る利点を以下に挙げてみました。
- PC 1 台で Kernel Debug が可能になります
一般的に Kernel Debug を行うためには 2 台の PC が必要になります。また PC
間を null cable、1394 cable(XP only?) で接続しなければなりませんでした。
今回の VMware を使用する方法では PC は 1 台で、ケーブル接続も必要ありません。
- Hung-up するのは Guest OS だけ
通常、Kernel Debug 中は絶えず Hung-up の危険が伴います(よね?)。Hung-up
後の PC はまず harddisk check から始まり、ナカナカ起動しません。また、2度と起動できなくなってしまうこともあるはずです。
VMware では Guest OS が Hung-up するだけなので後処理は簡単です。また VMware
の特性である、REDO 機能で Driver install 前の環境に戻すことも簡単に行えます。
今回は Windows 2000(Host OS)、 Windows 2000(Guest OS) で動作確認を行いましたが
windbg であれば、ほぼ同様の手順で実現可能と思われます。
実践編
[Usage Scenarios: Debugging Over a Virtual Serial Port(VMware)] の page が元ネタです。
以下の手順で行いました。
- windbg を入手します
DDK 付属の windbg ではサポート出来ないようです。[Debugging Tools for Windows(Microsoft)] から最新の windbg を入手してください。今回、私が使用した windbg のバージョンは「Version
4.0.18.0, December 21, 2001」です。
windbg は Host OS 側に Install してください。
- Guest OS に Serial port を追加します
設定は以下の通り。
『名前付きパイプを使用(N):』『\\.\com_1』『名前付きパイプはサーバーです。』『接続先はアプリケーションです。』『ポーリングでCPUを放棄する(Y)』
にチェック。
- Guest OS の boot.ini を書き換えます
以下の1文を追加します。baudrate は最初は高めに設定しない方が良いです。私の環境では
115200bps だと起動しませんでした。
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000
Professional" /fastdetect /debugport=COM1 /baudrate=57600
- Guest OS を起動します
起動画面で「Microsoft Windows 2000 Professional [Debug Enabled]」を選択し、起動します。手馴れてくればこれで問題ないのですが、ココロに余裕が欲しいのであれば、起動画面で
windbg を起動するまで待っていた方が良いかもしれません。
- Host OS 側の windbg を起動します
気をつけて欲しいのは VMware 3.1 の Help には間違った記載がされているようです。英語版、日本語版共に同様でしたが、元ネタが正しいようです。こっそり修正したのでしょうか。
以下のパラメータで windbg を起動します。上手く動作すれば Connecting 待ち状態になります。
windbg -k com:port=\\.\pipe\com_1,pipe
- windbg に Kernel Debug メッセージが表示されれば成功です
画面は Windows 2000(Host OS) 上に Windows 2000 (Guest OS) を起動させ、windbg
で表示させている所です。
(拡大画面)
気が付いたこと
- bps は控えめに、、、
115200 bps で設定すると私の環境では Guest OS が Hung-up した状態になり、その後、reset
しても pipe がエラーになっていると表示されます。この状態になった場合、Host
OS を reboot する方法でしか解決できませんでした。
(02.05.03:記載)
<Home> → <M.D.L.> → <[M.D.L] VMware 3 で Kernel Debugging!>
Copyright (c) 2002 Makoto NARA(Mc.N), All rights reserved.
[Terms of Use]