Freigeben über


Debug- und Ablaufverfolgungsfunktionen

Windows Sockets 2-Anwendungsentwickler müssen Fehler in Folgenden isolieren:

  • Die Anwendung.
  • Die Ws2_32.dll oder eine der Kompatibilitäts-Shim-DLLs.
  • Der Dienstanbieter.

Windows Sockets 2 erfüllt diese Anforderung durch mehrere Komponenten und Features:

  • Integrierte Unterstützung für die Winsock-Ablaufverfolgung unter Windows Vista und höher.
  • Eine speziell entwickelte Debugversion des Ws2_32.dll unter Windows Vista.
  • Eine separate primitive Debug- und Ablaufverfolgungsfunktion für die Verwendung unter Windows Server 2003 und Windows XP.

Winsock-Ablaufverfolgung mithilfe der Ereignisablaufverfolgung für Windows

Integrierte Unterstützung für die Winsock-Ablaufverfolgung mithilfe der Ereignisablaufverfolgung für Windows (ETW) ist unter Windows Vista und höher enthalten. Dies ist die bevorzugte Methode zum Nachverfolgen von Winsock-Aufrufen unter Windows Vista und höher. Die Winsock-Ablaufverfolgung mithilfe von ETW ist einfach und funktioniert auf Einzelhandelsversionen von Windows. Es sind keine zusätzliche Software oder Komponenten erforderlich. Dieses Feature muss nur unter Windows Vista und höher aktiviert werden. Ausführlichere Informationen finden Sie in den Winsock-Ablaufverfolgungsthemen .

Verwenden einer Debugversion von Ws2_32.dll

Die Kombination einer Debugversion der Ws2_32.dll unter Windows Vista und Winsock-Ablaufverfolgung ermöglicht es, alle Prozeduraufrufe über die Windows Sockets 2-API oder SPI hinweg zu überwachen und in gewissem Umfang zu steuern.

Wenn eine Version des Microsoft Windows Software Development Kit (SDK) für Windows Vista am Standardspeicherort installiert ist, befinden sich Debugversionen der Ws2_32.dll für verschiedene Architekturen im folgenden Ordner:

C:\Programme\Microsoft SDKs\Windows\v6.0\NoRedist

Es sollte eine überprüfte Version der Ws2_32.dll verwendet werden, die der Version von Windows und dem Service Pack entspricht, auf dem Sie testen. Beachten Sie, dass möglicherweise Sicherheitspatches angewendet wurden, die die Ws2_32.dll auf Ihrem Testsystem aktualisiert haben. Das Windows SDK für Windows Vista und das frühere Platform Software Development Kit (SDK) DVD/CD-Abonnements enthalten geprüfte Builds für die verschiedenen Versionen von Windows. Sie sollten dieselbe überprüfte Version des Ws2_32.dll wie die Einzelhandelsversion verwenden, die auf dem getesteten System verwendet wurde. Beachten Sie auch, dass das Verhalten, das unter einem überprüften Build ausgeführt wird, nicht mit der Ausführung mit einem Einzelhandelsbuild identisch ist.

Hinweis Das Windows SDK für Windows Server 2008 und höher enthält keine speziellen Debugversionen des Ws2_32.dllmehr. Entwickler sollten stattdessen die Winsock-Ablaufverfolgung mithilfe von ETW verwenden, da für dieses Feature keine Debugbuilds erforderlich sind.

Winsock Debug and Trace Facility unter Windows Server 2003 und Windows XP

Ältere Versionen von Windows vor Windows 8 und Windows Server 2012 unterstützen eine separate primitive Debug- und Ablaufverfolgungsfunktion, die als Beispiel im Windows SDK und dem älteren Platform SDK enthalten ist. Die Debug-/Ablaufverfolgungsfunktion sollte nur unter Windows Server 2003 und Windows XP verwendet werden, wenn die Winsock-Ablaufverfolgung nicht unterstützt wird.

Wenn das Windows SDK für Windows 7 am Standardspeicherort installiert ist, wird dieses primitive Winsock-Ablaufverfolgungsfeature im folgenden Ordner installiert:

C:\Programme\Microsoft SDKs\Windows\v7.0\Samples\NetDs\winsock\dt_dll

Die DbgSpec.doc-Datei in diesem Ordner enthält Dokumentation zu dieser primitiven Ablaufverfolgungsfunktion. Der Beispielcode im Ordner dt_dll muss kompiliert werden, um diese Funktion verwenden zu können. Entwickler können den Quellcode verwenden, um Versionen der Debug-/Ablaufverfolgungs-DLL zu entwickeln, die ihren spezifischen Anforderungen entsprechen.

Beachten Sie, dass dieses primitive Winsock-Ablaufverfolgungsfeature nur mit der Debugversion von installiertenWs2_32.dll funktioniert. Daher müssen Sie eine überprüfte Version des Ws2_32.dll erhalten, die der Version von Windows und dem Service Pack entspricht, auf dem Sie testen.

Eine Einschränkung dieser primitiven dt_dll Ablaufverfolgungsfunktion besteht darin, dass der Beispielcode eine globale Sperre (kritischer Abschnitt) für jeden Winsock-Funktionsaufruf verwendet. Daher ist diese Einrichtung für den Umgang mit Racebedingungen nicht nützlich. Der Beispielcode müsste wesentlich umgeschrieben werden, damit diese Ablaufverfolgungsfunktion für die meisten echten Winsock-Probleme (Ersetzen der globalen Sperren) nützlich ist. Mit diesem Beispielcode können Entwickler die Prozeduraufrufe, Prozedurrückgaben, Parameterwerte und Rückgabewerte nachverfolgen.

Entwickler können diesen primitiven Mechanismus verwenden, um Prozeduraufrufe, Prozedurrückgaben, Parameterwerte und Rückgabewerte nachzuverfolgen. Parameterwerte und Rückgabewerte können bei Prozeduraufrufen oder Prozedurrückgaben geändert werden. Bei Bedarf kann ein Prozeduraufruf verhindert oder umgeleitet werden. Mit dem Zugriff auf diese Informations- und Steuerungsebene ist ein Entwickler besser in der Lage, ein Problem in der Anwendung, Ws2_32.dlloder dem Dienstanbieter zu isolieren.

Winsock-Ablaufverfolgung