Dela via


Felsöknings- och spårningsanläggningar

Windows Sockets 2-programutvecklare måste isolera buggar i:

  • Programmet.
  • Ws2_32.dll eller någon av kompatibilitets-SHIM-DLL:er.
  • Tjänstleverantören.

Windows Sockets 2 hanterar detta behov genom flera komponenter och funktioner:

  • Integrerat stöd för Winsock-spårning i Windows Vista och senare.
  • En särskilt utformad felsökningsversion av Ws2_32.dll i Windows Vista.
  • En separat primitiv felsöknings- och spårningsfunktion för användning i Windows Server 2003 och Windows XP.

Winsock-spårning med händelsespårning för Windows

Integrerat stöd för Winsock-spårning med händelsespårning för Windows (ETW) ingår i Windows Vista och senare. Det här är den bästa metoden för att spåra Winsock-anrop i Windows Vista och senare. Winsock-spårning med ETW är lätt och fungerar på detaljhandelsversioner av Windows. Inga ytterligare program eller komponenter krävs. Den här funktionen behöver bara aktiveras i Windows Vista och senare. Mer detaljerad information finns i avsnitten Winsock Tracing.

Använda en felsökningsversion av Ws2_32.dll

Kombinationen av en felsökningsversion av Ws2_32.dll i Windows Vista och Winsock-spårning gör att alla proceduranrop i Windows Sockets 2-API:et eller SPI kan övervakas och i viss utsträckning kontrolleras.

Om en version av Microsoft Windows Software Development Kit (SDK) för Windows Vista är installerad på standardplatsen, finns felsökningsversioner av Ws2_32.dll för olika arkitekturer under följande mapp:

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

En kontrollerad version av Ws2_32.dll som matchar versionen av Windows och servicepaketet som du testar på ska användas. Tänk på att säkerhetskorrigeringar kan ha tillämpats som uppdaterade Ws2_32.dll i testsystemet. Windows SDK för Windows Vista och de tidigare DVD-/CD-prenumerationerna (Platform Software Development Kit) innehåller kontrollerade versioner för de olika versionerna av Windows. Du bör använda samma kontrollerade version av Ws2_32.dll som den detaljhandelsversion som användes i systemet som testades. Observera också att beteendet som körs under en kontrollerad version inte är detsamma som att köras med en detaljhandelsversion.

Note Windows SDK för Windows Server 2008 och senare innehåller inte längre särskilda felsökningsversioner av Ws2_32.dll. Utvecklare bör använda Winsock-spårning med ETW i stället, eftersom den här funktionen inte kräver felsökningsversioner.

Felsöknings- och spårningsfunktion för Winsock på Windows Server 2003 och Windows XP

Äldre versioner av Windows före Windows 8 och Windows Server 2012 stöder en separat primitiv felsöknings- och spårningsfunktion som ingår som ett exempel med Windows SDK och den äldre Platform SDK. Felsöknings-/spårningsfunktionen bör endast användas på Windows Server 2003 och Windows XP där Winsock-spårning inte stöds.

Om Windows SDK för Windows 7 är installerat på standardplatsen installeras den här primitiva Winsock-spårningsfunktionen i följande mapp:

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

Filen DbgSpec.doc i den här mappen innehåller dokumentation om den här primitiva spårningsanläggningen. Exempelkoden i mappen dt_dll måste kompileras för att kunna använda den här funktionen. Utvecklare kan använda källkoden för att utveckla versioner av felsöknings-/spårnings-DLL:n som uppfyller deras specifika behov.

Observera att den här primitiva Winsock-spårningsfunktionen endast fungerar med felsökningsversionen av Ws2_32.dll installerad. Därför måste du få en kontrollerad version av Ws2_32.dll som matchar versionen av Windows och Service Pack som du testar på.

En begränsning för den här primitiva dt_dll spårningsfunktionen är att exempelkoden använder ett globalt lås (kritiskt avsnitt) för varje Winsock-funktionsanrop. Så denna anläggning är inte användbar för att hantera rasförhållanden. Exempelkoden skulle behöva skrivas om avsevärt för att göra den här spårningsfaciliteten användbar för att hantera de flesta verkliga Winsock-problem (ersätta de globala låsen). Med den här exempelkoden kan utvecklare spåra proceduranrop, procedurreturer, parametervärden och returvärden.

Utvecklare kan använda den här primitiva mekanismen för att spåra proceduranrop, procedurreturer, parametervärden och returvärden. Parametervärden och returvärden kan ändras vid proceduranrop eller procedurretur. Om du vill kan ett proceduranrop förhindras eller omdirigeras. Med åtkomst till den här nivån av information och kontroll kan en utvecklare bättre isolera ett problem i programmet, Ws2_32.dlleller tjänstleverantören.

Winsock Tracing