WinDbg は、Microsoft が配布するMicrosoft Windowsコンピュータオペレーティングシステム用の多目的デバッガーです。[ 2 ]ユーザー モードアプリケーション、デバイス ドライバ、およびカーネル モードのオペレーティングシステム自体をデバッグするために使用できます。
Visual Studio デバッガーと同様に、WinDbg もグラフィカル ユーザー インターフェイス(GUI) を備えていますが、より強力で、共通点はほとんどありません。WinDbg は、 SymSrv ( SymSrv.dll ) [4] を介して実行可能ファイルに埋め込まれた一意の ID (「RSDS Guid」 [ 3 ]を使用) を使用することで、サーバーからデバッグ シンボル ファイル (PDB ファイルなど) を自動的にロードできます。これにより、ユーザーが手動でファイルを探す必要がなくなります。プライベート シンボル サーバーが構成されている場合、シンボルをバイナリのソース コードと関連付けることができます。これにより、デバッグ ホスト上で特定のシンボル バージョンを見つけてインストールする必要がなくなるため、デバッグ ターゲットにさまざまなバージョンのバイナリがインストールされている問題のデバッグの負担が軽減されます。Microsoft は、Windows 2000 以降のバージョンの Windows (サービス パックを含む) のほとんどのパブリック シンボルを含むパブリック シンボル サーバーを提供しています。[ 5 ]
WinDbg は、バグチェックが発生したときに発生する、一般的にブルースクリーンと呼ばれるものの後に作成されるカーネルモードのメモリダンプのデバッグにも使用できます。 [ 6 ] また、ユーザーモードのクラッシュダンプのデバッグにも使用できます。これは、事後デバッグとして知られています。[ 7 ]
WinDbg は、 Windows デバッガー ポータルおよびMicrosoft Storeからスタンドアロン パッケージとして配布されています。WinDBG デバッガー エンジンは、WinDbg とKD、CDB、NTSDなどのコマンドラインデバッガーフロントエンドとの共通のデバッグ バックエンドです。ほとんどのコマンドは、付属のすべてのデバッガー フロントエンドでそのまま使用できます。
2023年にマイクロソフトは、2017年にWinDbg Preview(WinDbgX)として発表されたWinDbgの新バージョンをリリースしました。[ 8 ] 最も注目すべき機能の1つは、いわゆるタイムトラベルデバッグ(TTD)です。[ 9 ] TTDを使用すると、ユーザーは実際のライブプロセスを(パフォーマンスの低下を伴いますが)記録し、後で時間を前後させてデバッグできます。さらに、WinDbgはユーザーインターフェイスが更新され、ダークモードとキーボードナビゲーションがサポートされています。また、JavaScript言語でスクリプトを作成することもできます。[ 10 ] [ 11 ]
WinDbg では、拡張DLL [ 12 ]をロードして、デバッガーでサポートされているコマンドを拡張し、特定のシナリオのデバッグを支援できます。たとえば、 IXMLDOMDocument が与えられたMSXMLドキュメントを表示したり、共通言語ランタイム (CLR) [ 13 ]をデバッグしたりできます。これらの拡張機能は、WinDbg を非常に強力なデバッガーにしている大きな部分を占めています。WinDbg は、 Microsoft Windows製品チーム が Windows を構築するために使用しており、Windows のデバッグに必要なすべてのものがこれらの拡張 DLL に含まれています。
拡張コマンドは常に!で始まります。
一部の拡張機能はマイクロソフト社内でのみ使用されますが、そのほとんどはWindows用のデバッグツールパッケージに含まれています。
拡張モデルについては、Windows 用デバッグツールに付属のヘルプファイルに記載されています。
Extは、WinDBGに付属する標準的なWindowsデバッガー拡張機能であり、デフォルトでロードされます。
最もよく使われるコマンドは!analyze -v [ 14 ]で、これはデバッグ中のプログラムの現在の状態と、クラッシュまたはハングした時点のマシン/プロセスの状態を分析します。このコマンドは多くの場合、現在の問題を完全に自動化された方法でデバッグできます。
スイッチを指定せずに使用した場合、!analyze は分析結果をそのまま返します。-vおよび-vv オプションを使用すると、分析に関する詳細情報が表示されます。
Wow6432exts は、WinDBG に付属する標準の Windows デバッガー拡張機能です。これは、WoW64 (64 ビット Windows で実行される 32 ビット プロセス) 内で実行されるプロセスをデバッグするために使用されます。[ 15 ]
SOS (Son of Strike) [ 16 ]デバッグ拡張機能 (SOS.dll) は、内部共通言語ランタイム (CLR) 環境に関する情報を提供することで、Visual Studio および WinDbg でのマネージド プログラムのデバッグを支援します。このツールを使用するには、プロジェクトでアンマネージド デバッグが有効になっている必要があります。SOS.dll は .NET Framework とともに自動的にインストールされます。Visual Studio で SOS.dll を使用するには、Windows Driver Kit (WDK)をインストールします。[ 17 ]プロセスまたはメモリ ダンプをデバッグするには、sos.dll のバージョンが .NET Framework のバージョンと一致している必要があります。Psscor2 および Psscor4 は SOS の上位互換です。
Psscor2 は、.NET CLR バージョン 2.0 (.NET Framework バージョン 2 ~ 3.5) を使用する .NET Framework アプリケーションをデバッグするために使用される Windows デバッガー拡張機能です。Psscor2 は、Microsoft の製品サポート サービス ツールの一部として、社内での使用のために開発されました。[ 18 ] Microsoft が Psscor2 をリリースしたのは 2010 年ですが[ 19 ]、 Microsoft はそれより数年前から拡張機能のコマンドを公開しており[ 20 ] 、そのプロセスに従おうとする人々にとって困難が生じていました。
Psscor4は、.NET Framework 4アプリケーションのデバッグに使用されるWindowsデバッガー拡張機能です。
WinDbg を使用すると、 VMware、VPC、またはParallelsの仮想マシン上で名前付きパイプ を使用して実行されている Microsoft Windows カーネルをデバッグできます。これは、仮想COM ポートを使用することで実現できます。VMware およびVirtualBoxの場合、VirtualKD 拡張機能により、VM デバッグのネイティブ サポートが Windows カーネルに追加され、デバッグ速度が最大 45 倍になるとされています。[ 21 ] Windows 8以降では、ネットワーク経由のカーネル デバッグが許可されており、[ 22 ]特別な構成なしで高速なカーネル デバッグが可能です。