デバッグおよびトレース機能

Windows Sockets 2 アプリケーション開発者は、次のバグを分離する必要があります。

  • アプリケーション。
  • Ws2_32.dllまたは互換性 shim DLL のいずれか。
  • サービス プロバイダー。

Windows ソケット 2 は、いくつかのコンポーネントと機能を通じて、このニーズに対応します。

  • Windows Vista 以降での Winsock トレースの統合サポート。
  • Windows Vista のWs2_32.dllの特別に考案されたデバッグ バージョン。
  • Windows Server 2003 および Windows XP で使用するための個別のプリミティブ デバッグおよびトレース機能。

Windowsのイベント トレースを使用した Winsock トレース

Event Tracing for Windows (ETW) を使用した Winsock トレースの統合サポートは、Windows Vista 以降に含まれています。 これは、Windows Vista 以降で Winsock 呼び出しをトレースする場合に推奨される方法です。 ETW を使用した Winsock トレースは軽量であり、製品版のWindowsで動作します。 追加のソフトウェアやコンポーネントは必要ありません。 この機能は、Windows Vista 以降で有効にする必要があります。 詳細については、 Winsock トレース のトピックを参照してください。

Ws2_32.dllのデバッグ バージョンの使用

Windows Vista 上のWs2_32.dllのデバッグ バージョンと Winsock トレースの組み合わせにより、Windows Sockets 2 API または SPI 全体のすべてのプロシージャ呼び出しを監視し、ある程度制御できます。

Windows Vista 用 Microsoft Windows Software Development Kit (SDK) のバージョンが既定の場所にインストールされている場合、さまざまなアーキテクチャのWs2_32.dllのデバッグ バージョンは次のフォルダーにあります。

C:\Program Files\Microsoft SDK\Windows\v6.0\NoRedist

Windowsのバージョンとテスト対象の Service Pack に一致するWs2_32.dllのチェック 済みバージョンを使用する必要があります。 テスト システムの Ws2_32.dll を更新するセキュリティ 修正プログラムが適用されている可能性があることに注意してください。 Windows Vista 用の Windows SDK と以前のプラットフォーム ソフトウェア開発キット (SDK) DVD/CD サブスクリプションには、さまざまなバージョンのWindowsのチェック されたビルドが含まれています。 テスト対象のシステムで使用された製品版と同じチェック バージョンの Ws2_32.dll を使用する必要があります。 チェックされたビルドで実行される動作は、リテール ビルドでの実行と同じではないことにも注意してください。

メモWindows Server 2008 以降の Windows SDK には、Ws2_32.dllの特別なデバッグ バージョンは含めなくなりました。 開発者は、代わりに ETW を使用して Winsock トレースを使用する必要があります。この機能ではデバッグ ビルドは必要ないためです。

Windows Server 2003 および Windows XP の Winsock デバッグおよびトレース機能

Windows 8およびWindows Server 2012より前のバージョンのWindowsでは、Windows SDK と古いプラットフォーム SDK のサンプルとして含まれる個別のプリミティブ デバッグとトレース機能がサポートされています。 デバッグ/トレース機能は、Winsock トレースがサポートされていない Windows Server 2003 および Windows XP でのみ使用する必要があります。

Windows 7 用の Windows SDK が既定の場所にインストールされている場合、このプリミティブ Winsock トレース機能は次のフォルダーにインストールされます。

C:\Program Files\Microsoft SDK\Windows\v7.0\Samples\NetDs\winsock\dt_dll

このフォルダー内の DbgSpec.doc ファイルは、このプリミティブ トレース機能に関するドキュメントを提供します。 この機能を使用するには、dt_dll フォルダー内のサンプル コードをコンパイルする必要があります。 開発者は、ソース コードを自由に使用して、特定のニーズを満たすデバッグ/トレース DLL のバージョンを開発できます。

このプリミティブ Winsock トレース機能は、インストールされている Ws2_32.dll のデバッグ バージョンでのみ機能します。 そのため、Windowsのバージョンとテスト対象の Service Pack に一致するチェック されたバージョンのWs2_32.dllを取得する必要があります。

トレース機能dt_dllこのプリミティブの制限は、サンプル コードが Winsock 関数呼び出しごとにグローバル ロック (クリティカル セクション) を使用することです。 そのため、この施設は競合状態に対処するのに役立ちません。 サンプル コードを大幅に書き直して、このトレース機能を、ほとんどの実際の Winsock の問題 (グローバル ロックを置き換える) に対処するために役立つ必要があります。 このサンプル コードを使用すると、開発者はプロシージャ呼び出し、プロシージャの戻り値、パラメーター値、戻り値をトレースできます。

開発者は、このプリミティブ メカニズムを使用して、プロシージャ呼び出し、プロシージャの戻り値、パラメーター値、および戻り値をトレースできます。 パラメーター値と戻り値は、プロシージャ呼び出しまたはプロシージャの戻り値で変更できます。 必要に応じて、プロシージャ呼び出しを禁止またはリダイレクトできます。 このレベルの情報と制御にアクセスできるため、開発者はアプリケーション、Ws2_32.dll、またはサービス プロバイダーの問題をより適切 分離できます。

Winsock トレース