ITプロ(非開発者)向けWindowsカーネルデバッグ事始め:山市良のうぃんどうず日記(125)(2/2 ページ)
「Debugging Tools for Windows」(WinDbg、kdなど)といえば、アプリケーションやドライバ開発者が自分で書いたプログラムをデバッグするための、Windows向け開発者専用ツールというイメージがあります。しかし、開発者ではないITプロにとっても、Windowsの動作や仕様の理解、あるいはトラブル解決に役立つことがあります。
仮想マシンのCOMポートに名前付きパイプ経由でアタッチしてカーネルデバッグ
書籍の「実習」の中には、デバッガー実行用とデバッグ対象用(Debuggeeとも言います)の2台のコンピュータを用意し、デバッガーをデバッグ対象にリモート接続してカーネルデバッグを実施する必要があるものもあります。古くからある方法の1つは、2台のコンピュータのシリアル(COM)ポート同士をクロスタイプのシリアルケーブルで接続し、一方をデバッグモードで起動して、もう一方のデバッガーからアタッチするというものです。詳しくは、以下のブログを参考にしてください。
- シリアルケーブルでのカーネルモードデバッグ設定手順(Japan WDK Support Blog)
仮想マシン環境を利用すれば、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\名前付きパイプ名」経由で接続したところです。
Hyper-V仮想マシンの場合も同様です。仮想マシンのCOMポートを名前付きパイプに接続します。ただし、第2世代のHyper-V仮想マシンの場合は、COMポートを構成するためのGUIが提供されません。その場合は「Set-VMComPort」コマンドレットを使用して、COMポートに名前付きパイプを設定します(画面3)。
デバッガーがホスト上になく、別のコンピュータのデバッガーを利用することもできます。それには、「\\.\pipe\名前付きパイプ名」ではなく、「\\ホスト名\pipe\名前付きパイプ名」を指定して接続します(画面4)。この方法を利用すれば、2台の仮想マシン間でデバッガーからデバッグ対象にアタッチすることも可能です。
仮想マシン環境を利用した2台のコンピュータ間のデバッグについては、以下のMicrosoftの公式ドキュメントで詳しく説明されています。
- Setting Up Kernel-Mode Debugging of a Virtual Machine Manually[英語](Microsoft Hardware Dev Center)
物理/仮想マシンにネットワーク経由でアタッチしてカーネルデバッグ
筆者は試したことがありませんが、Windows 8以降はネットワークを使用したデバッガーとデバッグ対象の接続もサポートされるようになりました。書籍でも少し触れていますが、2台の仮想マシン間で閉じたネットワークを構成し、そのネットワークを経由して接続すれば、COMポート(名前付きパイプ経由)を使用するよりも、圧倒的に良いパフォーマンスでデバッグを実行できるそうです。
以下の公式ブログに詳しく説明されているので、そちらをご覧ください。
- ネットワークケーブルを用いたカーネルデバッグ接続の設定手順(Japan WDK Support Blog)
これまで本連載では、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.
関連記事
- 特集「Windows Server 2008/2008 R2 サポート終了対策ポータル」
- 年の初めに再確認、2018年にサポートが終了するMicrosoft製品は?
Microsoftは同社の製品およびサービスについて、明確なサポートポリシー(ただし、途中で変更あり)に基づき、更新プログラムを含むサポートを提供しています。2018年は主に10年前にリリースされた製品がサポート終了を迎えます。どのような製品があるのか、年の初めに再確認し、使用していないかどうかを調べておきましょう。 - 再考、Windows OSのライフサイクル――安心して2020年を迎えるために
Windowsのサポートライフサイクル期限が近づくたびに、サポート終了の影響やアップグレードの必要性が話題になります。特に2014年4月にWindows XPのサポートが終了してからがそうです。その理由は、Windows PCやインターネットの普及、Microsoftのサポートポリシーの明確化(や変更)、新たなセキュリティ脅威の登場など、さまざまです。2017年4月にWindows Vistaのサポートが終了しました。次は、Windows 7の番です。 - Windows Server 2012 R2で行こう!
Windows Server 2003のサポート終了日「2015年7月」がいよいよ迫ってきた。現在Windows Server 2003を利用している企業は、新しいOSへの移行を本格的に検討する必要があるだろう。本稿では、Windows Server 2003から最新のWindows Server 2012 R2へ移行する理由やメリットについて取り上げる。 - サポート切れのサーバーOSを使い続けるリスクは経営課題と考えるべき
OSのサポートが終了すると、セキュリティ面で大きな問題を抱えることになる。では、サポート終了後もWindows Server 2003を使い続けることによって、企業はどのようなリスクを負うことになるのだろうか。IPAの渡辺貴仁氏に話を聞いた。