Debug- und Ablaufverfolgungseinrichtungen
Entwickler von Windows Sockets 2-Anwendungen müssen Fehler isolieren in:
- Die Anwendung.
- Die Ws2_32.dll oder eine der Kompatibilitäts-Shim-DLLs.
- Der Dienstanbieter.
Windows Sockets 2 behebt diese Notwendigkeit durch mehrere Komponenten und Features:
- Integrierte Unterstützung für Winsock-Ablaufverfolgung unter Windows Vista und höher.
- Eine speziell entwickelte Debugversion der Ws2_32.dll unter Windows Vista.
- Eine separate primitive Debug- und Ablaufverfolgungseinrichtung für die Verwendung unter Windows Server 2003 und Windows XP.
Winsock-Ablaufverfolgung mithilfe der Ereignisablaufverfolgung für Windows
Integrierte Unterstützung für Winsock-Ablaufverfolgung mithilfe der Ereignisablaufverfolgung für Windows (ETW) ist unter Windows Vista und höher enthalten. Dies ist die bevorzugte Methode für die Ablaufverfolgung von Winsock-Aufrufen unter Windows Vista und höher. Winsock-Ablaufverfolgung mit ETW ist einfach und funktioniert in Einzelhandelsversionen von Windows. Es sind keine zusätzlichen Software oder Komponenten erforderlich. Dieses Feature muss nur unter Windows Vista und höher aktiviert werden. Ausführlichere Informationen finden Sie in den Themen Winsock-Ablaufverfolgung.
Verwenden einer Debugversion von Ws2_32.dll
Die Kombination aus einer Debugversion der Ws2_32.dll unter Windows Vista und Winsock-Ablaufverfolgung ermöglicht es allen Prozeduraufrufen ü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 unter dem folgenden Ordner:
C:\Programme\Microsoft SDKs\Windows\v6.0\NoRedist
Eine überprüfte Version der Ws2_32.dll, die der Version von Windows und dem Service Pack entspricht, auf dem Sie testen, sollte verwendet werden. 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 die früheren SDK-DVD/CD-Abonnements (Platform Software Development Kit) umfassen überprüfte Builds für die verschiedenen Versionen von Windows. Sie sollten dieselbe überprüfte Version der 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 dem Ausführen eines Einzelhandelsbuilds 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 Winsock-Ablaufverfolgung mit ETW verwenden, da für dieses Feature keine Debugbuilds erforderlich sind.
Winsock Debug- und Trace-Einrichtung 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 Ablaufverfolgungseinrichtung, die als Beispiel für das Windows SDK und das ältere Platform SDK enthalten ist. Die Debug-/Ablaufverfolgungseinrichtung sollte nur unter Windows Server 2003 und Windows XP verwendet werden, bei der 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 datei DbgSpec.doc in diesem Ordner enthält Dokumentation zu dieser primitiven Ablaufverfolgungseinrichtung. Der Beispielcode im Ordner dt_dll muss kompiliert werden, um diese Einrichtung zu verwenden. 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 Ws2_32.dll installiert funktioniert. Daher müssen Sie eine überprüfte Version der 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 für jeden Winsock-Funktionsaufruf eine globale Sperre (kritischer Abschnitt) verwendet. Daher ist diese Anlage nicht nützlich für den Umgang mit Rennbedingungen. Der Beispielcode müsste erheblich umgeschrieben werden, damit diese Ablaufverfolgungseinrichtung für die Behandlung der meisten echten Winsock-Probleme nützlich ist (ersetzen der globalen Sperren). 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 Ebene von Informationen und Kontrolle ist ein Entwickler besser in der Lage, ein Problem in der Anwendung, Ws2_32.dlloder Dienstanbieter zu isolieren.
Verwandte Themen