Funzionalità di debug e traccia

Gli sviluppatori di applicazioni Windows Sockets 2 devono isolare i bug in:

  • Applicazione.
  • Il Ws2_32.dll o una delle DLL shim di compatibilità.
  • Provider del servizio.

Windows Sockets 2 risolve questa esigenza tramite diversi componenti e funzionalità:

  • Supporto integrato per la traccia Winsock in Windows Vista e versioni successive.
  • Una versione di debug appositamente concepita del Ws2_32.dll in Windows Vista.
  • Struttura di debug e traccia primitiva separata da usare in Windows Server 2003 e Windows XP.

Traccia winsock con Traccia eventi per Windows

Il supporto integrato per la traccia Winsock con Event Tracing for Windows (ETW) è incluso in Windows Vista e versioni successive. Questo è il metodo preferito per tracciare le chiamate Winsock in Windows Vista e versioni successive. La traccia Winsock con ETW è leggera e funziona nelle versioni definitive di Windows. Non sono necessari componenti o software aggiuntivi. Questa funzionalità deve essere abilitata solo in Windows Vista e versioni successive. Per informazioni più dettagliate, vedere gli argomenti relativi alla traccia winsock .

Uso di una versione di debug di Ws2_32.dll

La combinazione di una versione di debug del Ws2_32.dll nella traccia di Windows Vista e Winsock consente di monitorare tutte le chiamate di routine nell'API Windows Sockets 2 o SPI e, in qualche misura, controllate.

Se viene installata una versione di Microsoft Windows Software Development Kit (SDK) per Windows Vista nel percorso predefinito, le versioni di debug del Ws2_32.dll per varie architetture si trovano nella cartella seguente:

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

È consigliabile usare una versione selezionata del Ws2_32.dll corrispondente alla versione di Windows e al Service Pack in cui si esegue il test. Tenere presente che le patch di sicurezza potrebbero essere state applicate che hanno aggiornato il Ws2_32.dll nel sistema di test. Le sottoscrizioni DVD/CD di Windows SDK per Windows Vista e SDK precedenti includono build controllate per le diverse versioni di Windows. È consigliabile usare la stessa versione controllata del Ws2_32.dll della versione definitiva usata nel sistema sottoposto a test. Si noti anche che il comportamento in esecuzione in una compilazione controllata non corrisponderà all'esecuzione con una compilazione definitiva.

Nota Windows SDK per Windows Server 2008 e versioni successive non include più versioni di debug speciali del Ws2_32.dll. Gli sviluppatori devono usare invece la traccia Winsock usando ETW, perché questa funzionalità non richiede compilazioni di debug.

Funzionalità di debug e traccia winsock in Windows Server 2003 e Windows XP

Le versioni precedenti di Windows prima di Windows 8 e Windows Server 2012 supportano una funzionalità di debug e traccia primitiva separata inclusa come esempio con Windows SDK e l'SDK della piattaforma precedente. La funzionalità di debug/traccia deve essere usata solo in Windows Server 2003 e Windows XP in cui la traccia Winsock non è supportata.

Se Windows SDK per Windows 7 è installato nel percorso predefinito, questa funzionalità di traccia Winsock primitiva viene installata nella cartella seguente:

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

Il file DbgSpec.doc in questa cartella fornisce la documentazione su questa funzionalità di traccia primitiva. Per usare questa funzionalità, è necessario compilare il codice di esempio nella cartella dt_dll. Gli sviluppatori sono liberi di usare il codice sorgente per sviluppare versioni della DLL di debug/traccia che soddisfano le proprie esigenze specifiche.

Si noti che questa funzionalità di traccia Winsock primitiva funzionerà solo con la versione di debug di Ws2_32.dll installata. Sarà quindi necessario ottenere una versione selezionata del Ws2_32.dll che corrisponde alla versione di Windows e al Service Pack in cui si esegue il test.

Una limitazione di questa primitiva dt_dll struttura di traccia è che il codice di esempio usa un blocco globale (sezione critica) per ogni chiamata di funzione Winsock. Quindi questa struttura non è utile per gestire le condizioni di gara. Il codice di esempio deve essere riscritto sostanzialmente per rendere questa funzionalità di traccia utile per gestire la maggior parte dei problemi di Winsock reali (sostituendo i blocchi globali). Questo codice di esempio consente agli sviluppatori di tracciare le chiamate di routine, le procedure restituisce, i valori dei parametri e i valori restituiti.

Gli sviluppatori possono usare questo meccanismo primitivo per tracciare le chiamate di routine, le procedure restituisce, i valori dei parametri e i valori restituiti. I valori dei parametri e i valori restituiti possono essere modificati nella chiamata di routine o nella restituzione della routine. Se lo si desidera, è possibile impedire o reindirizzare una chiamata di procedura. Con l'accesso a questo livello di informazioni e controllo, uno sviluppatore è in grado di isolare meglio un problema nell'applicazione, Ws2_32.dllo provider di servizi.

Traccia Winsock