デバッグ環境

使用可能なデバッグ環境は 6 つあります。

  • WinDbg
  • WinDbg (クラシック)
  • カーネル デバッガー (KD)
  • NTKD
  • コンソール デバッガー (CDB)
  • NT シンボリック デバッガー (NTSD)

次のセクションでは、デバッグ環境について説明します。

Windbg

WinDbg は、最新のビジュアルを備えた最新バージョンの WinDbg であり、より高速なウィンドウ、本格的なスクリプト作成エクスペリエンスを備え、拡張可能なデバッガー データ モデルの前面と中央に構築されています。 WinDbg は WinDbg (クラシック) と同じ基になるエンジンを使用しているため、使用したすべてのコマンド、拡張機能、ワークフローは、以前と同じように機能します。

詳細については、「WinDbg の機能」を参照してください。

WinDbg (クラシック)

Microsoft Windows デバッガー WinDbg (クラシック) は、ユーザー モードとカーネル モードの両方のデバッグが可能な Windows ベースのデバッガーです。 WinDbg は、Windows カーネル、カーネル モード ドライバー、およびシステム サービス、およびユーザー モードのアプリケーションとドライバーのデバッグを提供します。

WinDbg では、ソース レベルのデバッグに Visual Studio デバッグ シンボル形式が使用されます。 PDB シンボル ファイルを含むモジュールから任意のシンボルまたは変数にアクセスでき、COFF シンボル ファイル (Windows .dbg ファイルなど) でコンパイルされたモジュールによって公開されるパブリック関数の名前にアクセスできます。

WinDbg では、ソース コードの表示、ブレークポイントの設定、変数の表示 (C++ オブジェクトを含む)、スタック トレース、メモリを表示できます。 デバッガー コマンド ウィンドウを使用すると、ユーザーはさまざまなコマンドを発行できます。

カーネル モードデバッグの場合、WinDbg には通常、2 台のコンピューター (ホスト コンピューターとターゲット コンピューター) が必要です。 WinDbg では、ユーザー モードターゲットとカーネルモード ターゲットの両方で、さまざまなリモート デバッグ オプションもサポートされています。

WinDbg は、CDB/NTSD および KD/NTKD に対応するグラフィカル インターフェイスです。

Kd

Microsoft カーネル デバッガー (KD) は、すべての NT ベースのオペレーティング システムでカーネル モード アクティビティの詳細な分析を可能にする文字ベースのコンソール プログラムです。 KD を使用すると、カーネル モードのコンポーネントとドライバーをデバッグしたり、オペレーティング システム自体の動作を監視したりできます。 KD では、マルチプロセッサ のデバッグもサポートされています。

通常、KD はデバッグ中のコンピューターでは実行されません。 カーネル モードデバッグには、2 台の コンピューター (ホスト コンピューターターゲット コンピューター) が必要です。

NTKD

NTKD という名前の KD デバッガーにはバリエーションがあります。 KD は起動時に新しいテキスト ウィンドウを生成するのに対し、KD は呼び出されたコマンド プロンプト ウィンドウを継承する点を除いて、すべての方法で KD と同じです。

Cdb

Microsoft コンソール デバッガー (CDB) は、Windows ユーザー モードのメモリとコンストラクトの低レベルの分析を可能にする文字ベースのコンソール プログラムです。 コンソール デバッガーという名前は、CDB がコンソール アプリケーションとして分類されているという事実を示すために使用されます。これは、ターゲット アプリケーションがコンソール アプリケーションである必要があることを意味するものではありません。 実際、CDB はコンソール アプリケーションとグラフィカル Windows プログラムの両方を完全にデバッグできます。

CDB は、現在実行中または最近クラッシュしたプログラム (ライブ分析) をデバッグするのに非常に強力ですが、設定は簡単です。 これは、動作しているアプリケーションの動作を調査するために使用できます。 アプリケーションが失敗した場合、CDB を使用してスタック トレースを取得したり、罪悪感のあるパラメーターを調べることができます。 文字ベースであるため、(リモート アクセス サーバーを使用して) ネットワーク全体で適切に機能します。

CDB を使用すると、プログラム コードの表示と実行、ブレークポイントの設定、メモリ内の値の確認と変更を行うことができます。 CDB では、バイナリ コードを逆アセンブルしてアセンブリ命令を表示することで、バイナリ コードを分析できます。 また、ソース コードを直接分析することもできます。

CDB はアドレスまたはグローバル シンボルを介してメモリの場所にアクセスできるため、アドレスではなく名前でデータと命令を参照できるため、コードの特定のセクションを簡単に見つけてデバッグできます。 CDB では、複数のスレッドとプロセスのデバッグがサポートされています。 これは拡張可能であり、ページメモリと非ページメモリの両方を読み書きできます。

ターゲット アプリケーション自体がコンソール アプリケーションの場合、ターゲットはコンソール ウィンドウを CDB と共有します。 ターゲット コンソール アプリケーション用に別のコンソール ウィンドウを生成するには、 -2 コマンド ライン オプションを使用します。

Ntsd

Microsoft NT シンボリック デバッガー (NTSD) という名前の CDB デバッガーにはバリエーションがあります。 CDB の起動時に新しいテキスト ウィンドウが生成されるのに対し、CDB は呼び出されたコマンド プロンプト ウィンドウを継承する点を除いて、あらゆる方法で CDB と同じです。

start コマンドを使用して新しいコンソール ウィンドウを生成することもできます。そのため、次の 2 つの構造で同じ結果が得られます。

start cdb parameters
ntsd parameters

NTSD (または CDB) からの入力と出力をリダイレクトして、カーネル デバッガー (Visual Studio、WinDbg、または KD) から制御できるようにすることができます。 この手法を NTSD と共に使用すると、コンソール ウィンドウはまったく表示されません。 したがって、カーネル デバッガーから NTSD を制御すると、ターゲット アプリケーションを含むコンピューターにほとんど負担をかけない非常に軽量なデバッガーになるため、特に便利です。 この組み合わせを使用して、システム プロセス、シャットダウン、および起動の後のステージをデバッグできます。 詳細については、「 カーネル デバッガーからのUser-Mode デバッガーの制御 」を参照してください。

関連項目

Windows のデバッグ

WinDbg の機能