Windows Vista で local kernel debug を行う

Windows Vista で local kernel debug を行うには,OS 起動時にデバッグモードを有効化する必要があります.

起動時にデバッグモードを有効化する

方法は 2 通り.
ひとつは起動時に F8 を押して,詳細ブートオプションからデバッグモードを有効化する方法.

もうひとつは,デバッグモードを有効にするエントリを作ってしまい,それを選択する方法*1

bcdedit /debug {ここにエントリのGUID} On

Windows Vista 無印版の罠

ちなみに Windows Vista 無印版には罠があって,COM ポートが無い環境で上述の bcdedit /debug だけを行っても,依然として local kernel debug に失敗します.Windows Vista SP1 beta では同じ設定でうまくいくので,恐らく無印版の不具合だと思いますが,回避策としてさらにポートを明示的に指定することで対処できます.

bcdedit /set {ここにエントリのGUID} Debugtype Serial
bcdedit /set {ここにエントリのGUID} Debugport 1
bcdedit /set {ここにエントリのGUID} Baudrate 115200

COM ポートが無い環境でもこの設定で local kernel debug できるようになります.ちなみにこれはデバッグ用のポートを設定しなかったときのデフォルトパラメータを明示的に指定しているだけなので,本来は不要な記述です.実際 SP1 で挙動が修正されるようなので,やはり不具合とみなされたのでしょう.

デバッグモードで常用する場合の問題点

ではデバッグモードで常用して何か不都合はないかというと,OS の DRM サポートがオフになること,Visual Studio でのマネージデバッグができなくなることといった影響があります.

また,手元の環境では Alcohol 120% の仮想 CD ドライバが起動に失敗するといった現象も見られました.
いくつかの制限に関しては,C:\Program Files\Debugging Tools for Windows\kdbgctrl.exe でカーネルデバッグを一時的に無効化することで回避可能ですが,やはり常用環境としてはあまり向かない気がします.

*1:[http://www.microsoft.com/japan/whdc/driver/tips/debug_vista.mspx:title=Windows Vista のデバッグ]