検索
連載

ITプロ(非開発者)向けWindowsカーネルデバッグ事始め山市良のうぃんどうず日記(125)(2/2 ページ)

「Debugging Tools for Windows」(WinDbg、kdなど)といえば、アプリケーションやドライバ開発者が自分で書いたプログラムをデバッグするための、Windows向け開発者専用ツールというイメージがあります。しかし、開発者ではないITプロにとっても、Windowsの動作や仕様の理解、あるいはトラブル解決に役立つことがあります。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

仮想マシンのCOMポートに名前付きパイプ経由でアタッチしてカーネルデバッグ

 書籍の「実習」の中には、デバッガー実行用とデバッグ対象用(Debuggeeとも言います)の2台のコンピュータを用意し、デバッガーをデバッグ対象にリモート接続してカーネルデバッグを実施する必要があるものもあります。古くからある方法の1つは、2台のコンピュータのシリアル(COM)ポート同士をクロスタイプのシリアルケーブルで接続し、一方をデバッグモードで起動して、もう一方のデバッガーからアタッチするというものです。詳しくは、以下のブログを参考にしてください。

 仮想マシン環境を利用すれば、2台が必要なデバッグ環境を1台のコンピュータに準備できます。具体的には、ホスト側にDebugging Tools for Windowsをインストールし、仮想マシン側のCOMポートを名前付きパイプにリダイレクトするように構成して、仮想マシン側のWindowsに次のようにデバッグモードを設定(COM1の場合)して再起動します。

bcdedit /debug on

bcdedit /dbgsettings serial debugport:1 baudrate:115200

shutdown /r /t 0


 後は、デバッガー側でCOMポートのボーレートや名前付きパイプ、その他のオプションを指定してアタッチするだけです。以下の画面2は、VMware Workstation Pro/Playerの仮想マシンにホスト側のWinDbg.exeから名前付きパイプ「\\.\pipe\名前付きパイプ名」経由で接続したところです。

画面2
画面2 VMware仮想マシンのCOMポートを名前付きパイプに設定し、ホスト側のWinDbg.exeから仮想マシンのカーネルにアタッチする

 Hyper-V仮想マシンの場合も同様です。仮想マシンのCOMポートを名前付きパイプに接続します。ただし、第2世代のHyper-V仮想マシンの場合は、COMポートを構成するためのGUIが提供されません。その場合は「Set-VMComPort」コマンドレットを使用して、COMポートに名前付きパイプを設定します(画面3)。

画面3
画面3 Hyper-Vの第1世代仮想マシン(左)と第2世代仮想マシン(右)の名前付きパイプの設定

 デバッガーがホスト上になく、別のコンピュータのデバッガーを利用することもできます。それには、「\\.\pipe\名前付きパイプ名」ではなく、「\\ホスト名\pipe\名前付きパイプ名」を指定して接続します(画面4)。この方法を利用すれば、2台の仮想マシン間でデバッガーからデバッグ対象にアタッチすることも可能です。

画面4
画面4 別ホストのHyper-V仮想マシンのCOMポートに名前付きパイプ経由でkd.exeデバッガーを接続しようとしているところ

 仮想マシン環境を利用した2台のコンピュータ間のデバッグについては、以下のMicrosoftの公式ドキュメントで詳しく説明されています。

物理/仮想マシンにネットワーク経由でアタッチしてカーネルデバッグ

 筆者は試したことがありませんが、Windows 8以降はネットワークを使用したデバッガーとデバッグ対象の接続もサポートされるようになりました。書籍でも少し触れていますが、2台の仮想マシン間で閉じたネットワークを構成し、そのネットワークを経由して接続すれば、COMポート(名前付きパイプ経由)を使用するよりも、圧倒的に良いパフォーマンスでデバッグを実行できるそうです。

 以下の公式ブログに詳しく説明されているので、そちらをご覧ください。

 これまで本連載では、Windows 10の新バージョン(ビルド)へのアップグレードを延期する方法や、半ば強制的なアップグレードをブロックする方法について何度か取り上げてきました。例えば、以下の記事です。

 『インサイドWindows 第7版 上』は、Windows 10 バージョン1607とWindows Server 2016を中心にしていますが、それ以前と以降のWindows 10について言及している部分もあります。「実習」は同じ環境でないと同じ結果にならない場合があるため、翻訳作業を円滑に進めるためにも、どうしてもアップグレードされては困る期間が続いたことも、ブロックにこだわった理由の1つでした。

 ソフトウェアベンダーやサポート業者の方々も、業務のためには複数のバージョンを維持しておく必要があると思います。Windows 10にバージョンアップをブロックするオプションが付いてくれるとありがたいのですが、筆者と同意見の方も結構多いはずです。せめて、手を変え品を変えアップグレードを勧めるのをやめてくれるだけでもよいのですが……。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る