Delen via


Foutopsporing en traceringsfaciliteiten

Ontwikkelaars van Windows Sockets 2-toepassingen moeten bugs isoleren in:

  • De toepassing.
  • De Ws2_32.dll of een van de compatibiliteits-shim-DLL's.
  • De serviceprovider.

Windows Sockets 2 heeft betrekking op deze behoefte via verschillende onderdelen en functies:

  • Geïntegreerde ondersteuning voor Winsock-tracering op Windows Vista en hoger.
  • Een speciaal ontworpen foutopsporingsversie van de Ws2_32.dll op Windows Vista.
  • Een afzonderlijke primitieve foutopsporings- en traceringsfaciliteit voor gebruik in Windows Server 2003 en Windows XP.

Winsock-tracering met behulp van gebeurtenistracering voor Windows

Geïntegreerde ondersteuning voor Winsock-tracering met behulp van Event Tracing voor Windows (ETW) is opgenomen in Windows Vista en hoger. Dit is de voorkeursmethode voor het traceren van Winsock-aanroepen op Windows Vista en hoger. Winsock-tracering met ETW is lichtgewicht en werkt in handelsversies van Windows. Er zijn geen extra software of onderdelen vereist. Deze functie moet alleen zijn ingeschakeld op Windows Vista en hoger. Zie de onderwerpen Winsock Tracing voor meer informatie.

Een foutopsporingsversie van Ws2_32.dll gebruiken

Door de combinatie van een foutopsporingsversie van de Ws2_32.dll op Windows Vista en Winsock-tracering kunnen alle procedureaanroepen in de Windows Sockets 2-API of SPI worden bewaakt en in sommige mate beheerd.

Als een versie van de Microsoft Windows Software Development Kit (SDK) voor Windows Vista op de standaardlocatie is geïnstalleerd, bevinden de foutopsporingsversies van de Ws2_32.dll voor verschillende architecturen zich onder de volgende map:

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

Er moet een gecontroleerde versie van de Ws2_32.dll worden gebruikt die overeenkomt met de versie van Windows en het servicepack waarop u test. Houd er rekening mee dat er mogelijk beveiligingspatches zijn toegepast die de Ws2_32.dll op uw testsysteem hebben bijgewerkt. De Windows SDK voor Windows Vista en de eerdere SDK-abonnementen (Platform Software Development Kit) bevatten gecontroleerde builds voor de verschillende versies van Windows. U moet dezelfde gecontroleerde versie van de Ws2_32.dll gebruiken als de handelsversie die is gebruikt op het systeem dat wordt getest. Houd er ook rekening mee dat gedrag dat wordt uitgevoerd onder een gecontroleerde build niet hetzelfde is als het uitvoeren met een retail-build.

Opmerking De Windows SDK voor Windows Server 2008 en hoger bevat geen speciale foutopsporingsversies van de Ws2_32.dllmeer. Ontwikkelaars moeten in plaats daarvan Winsock-tracering gebruiken met ETW, omdat voor deze functie geen builds voor foutopsporing zijn vereist.

Winsock Debug and Trace Facility op Windows Server 2003 en Windows XP

Oudere versies van Windows vóór Windows 8 en Windows Server 2012 ondersteunen een afzonderlijke primitieve foutopsporings- en traceringsfaciliteit die is opgenomen als voorbeeld met de Windows SDK en de oudere Platform SDK. De foutopsporings-/traceringsfaciliteit mag alleen worden gebruikt in Windows Server 2003 en Windows XP, waarbij Winsock-tracering niet wordt ondersteund.

Als de Windows SDK voor Windows 7 is geïnstalleerd op de standaardlocatie, wordt deze primitieve Winsock-traceringsfunctie geïnstalleerd in de volgende map:

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

Het bestand DbgSpec.doc in deze map bevat documentatie over deze primitieve traceringsfaciliteit. De voorbeeldcode in de map dt_dll moet worden gecompileerd om deze faciliteit te kunnen gebruiken. Ontwikkelaars kunnen de broncode gebruiken om versies van het DLL-bestand voor foutopsporing/tracering te ontwikkelen die voldoen aan hun specifieke behoeften.

Houd er rekening mee dat deze primitieve Winsock-traceringsfunctie alleen werkt met de foutopsporingsversie van Ws2_32.dll geïnstalleerd. U moet dus een gecontroleerde versie van de Ws2_32.dll ophalen die overeenkomt met de versie van Windows en het Service Pack waarop u test.

Een beperking van deze primitieve dt_dll traceringsfaciliteit is dat de voorbeeldcode gebruikmaakt van een globale vergrendeling (kritieke sectie) voor elke Winsock-functie-aanroep. Deze faciliteit is dus niet nuttig bij het omgaan met raceomstandigheden. De voorbeeldcode moet aanzienlijk opnieuw worden geschreven om deze traceringsfaciliteit nuttig te maken voor het omgaan met de meeste echte Winsock-problemen (waarbij de globale vergrendelingen worden vervangen). Met deze voorbeeldcode kunnen ontwikkelaars de procedure-aanroepen, procedure-retourneert, parameterwaarden en retourwaarden traceren.

Ontwikkelaars kunnen dit primitieve mechanisme gebruiken om procedure-aanroepen, procedure-retourneert, parameterwaarden en retourwaarden te traceren. Parameterwaarden en retourwaarden kunnen worden gewijzigd bij procedure-aanroep of retourprocedure. Indien gewenst kan een procedure-aanroep worden voorkomen of omgeleid. Met toegang tot dit niveau van informatie en beheer is een ontwikkelaar beter in staat om een probleem in de toepassing, Ws2_32.dllof serviceprovider te isoleren.

Winsock-tracering