Funzionalità di debug e traccia
Gli sviluppatori di applicazioni Windows Sockets 2 devono isolare i bug in:
- Applicazione.
- La Ws2_32.dll o una delle DLL shim di compatibilità.
- Provider di servizi.
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.
- Una funzionalità 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 la traccia delle chiamate Winsock in Windows Vista e versioni successive. La traccia Winsock con ETW è leggera e funziona nelle versioni retail 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 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
Deve essere usata 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 varie 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 sarà uguale a quello in esecuzione con una build 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 la traccia Winsock usando invece ETW, poiché 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 precedenti a 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. Il codice di esempio nella cartella dt_dll deve essere compilato per usare questa funzionalità. Gli sviluppatori sono liberi di usare il codice sorgente per sviluppare versioni della DLL di debug/traccia che soddisfano le esigenze specifiche.
Si noti che questa funzionalità di traccia winsock primitiva funziona solo con la versione di debug di Ws2_32.dll installata. Sarà quindi necessario ottenere una versione controllata 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 funzionalità di traccia è che il codice di esempio usa un blocco globale (sezione critica) per ogni chiamata di funzione Winsock. Quindi questa struttura non è utile nella gestione delle condizioni di gara. Il codice di esempio deve essere riscritto in modo sostanziale per rendere questa funzionalità di traccia utile per gestire la maggior parte dei problemi 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.
Argomenti correlati