Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In Visual Studio 2019 versione 16.1 il supporto di AddressSanitizer (ASan) è integrato nei progetti Linux. È possibile abilitare Address Sanitizer sia per i progetti Linux basati su MSBuild che per i progetti CMake. L'abilitazione di Address Sanitizer è valida sia nei sistemi Linux remoti che in Sottosistema Windows per Linux (WSL).
Informazioni su Address Sanitizer
Address Sanitizer è un rilevatore di errori di memoria in runtime per C /C++ che intercetta gli errori seguenti:
- Uso dopo la liberazione (riferimento a un puntatore tralasciato)
- Sovraccarico del buffer dell'heap
- Sovraccarico del buffer dello stack
- Uso dopo il ritorno
- Uso dopo l'ambito
- Bug dell'ordine di inizializzazione
Quando Address Sanitizer rileva un errore, arresta l'esecuzione immediatamente. Se si esegue un programma abilitato per Address Sanitizer nel debugger, viene visualizzato un messaggio che descrive il tipo di errore, l'indirizzo di memoria e la posizione in cui l'errore si è verificato nel file sorgente:
È anche possibile visualizzare l'output di Address Sanitizer completo, incluso il punto in cui la memoria danneggiata è stata allocata o deallocata, nel riquadro Debug della finestra di output.
Abilitare Address Sanitizer per progetti Linux basati su MSBuild
Nota
A partire da Visual Studio 2019 versione 16.4, AddressSanitizer per i progetti Linux è abilitato tramite Proprietà di configurazione proprietà progetto C/C++Enable Address Sanitizer.Starting in Visual Studio 2019 version 16.4, AddressSanitizer for Linux projects is enabled via Project properties>Configuration Properties>Enable Address Sanitizer.
Per abilitare Address Sanitizer per progetti Linux basati su MSBuild, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Proprietà. Passare quindi a Proprietà di configurazione>C/C++>Sanitizer. L'abilitazione di Address Sanitizer viene eseguita tramite flag del compilatore e del linker. Perché funzioni, è necessario ricompilare il progetto.
È possibile passare flag di runtime di Address Sanitizer facoltativi da Proprietà di configurazione>Debug>Flag di runtime di AddressSanitizer. Fare clic sulla freccia giù per aggiungere o rimuovere flag.
Abilitare Address Sanitizer per progetti CMake di Visual Studio
Nota
Per compilare con i set di impostazioni di CMake, abilitare prima ASan nel file CMakeLists.txt. Per altre informazioni, vedere Abilitare AddressSanitizer per Windows e Linux.
Per abilitare ASan per CMake, fare clic con il pulsante destro del CMakeLists.txt
mouse sul file in Esplora soluzioni e scegliere Impostazioni CMake per Progetto.
Assicurarsi di aver selezionato una configurazione Linux (ad esempio, Linux-Debug) nel riquadro sinistro della finestra di dialogo:
Le opzioni di Address Sanitizer sono in Generali. Immettere i flag di runtime ASan nel formato "flag=value", separati da spazi. L'interfaccia utente suggerisce erroneamente l'uso di punti e virgola. Usare spazi o due punti per separare i flag.
Installare i simboli di debug di Address Sanitizer
Per abilitare la diagnostica di Address Sanitizer, è necessario installare i relativi simboli di debug (libasan-dbg) nel computer Linux remoto o nell'installazione di WSL. La versione di libasan-dbg caricata dipende dalla versione di GCC installata nel computer Linux:
Versione Address Sanitizer | Versione GCC |
---|---|
libasan0 | gcc-4.8 |
libasan2 | gcc-5 |
libasan3 | gcc-6 |
libasan4 | gcc-7 |
libasan5 | gcc-8 |
È possibile determinare la versione di GCC disponibile usando questo comando:
gcc --version
Per visualizzare la versione di libasan-dbg necessaria, eseguire il programma e quindi esaminare il riquadro Debug della finestra Output. La versione di Address Sanitizer caricata corrisponde alla versione di libasan-dbg necessaria nel computer Linux. È possibile usare Ctrl + F per cercare "libasan" nella finestra. Se si ha libasan4, ad esempio, viene visualizzata una riga come la seguente:
Loaded '/usr/lib/x86_64-linux-gnu/libasan.so.4'. Symbols loaded.
È possibile installare i bit di debug di Address Sanitizer nelle distribuzioni Linux che usano apt con il comando seguente. Questo comando installa la versione 4:
sudo apt-get install libasan4-dbg
Le istruzioni complete per l'installazione dei pacchetti di simboli di debug in Ubuntu sono disponibili in Pacchetti di simboli di debug.
Se è stata eseguita l'abilitazione di Address Sanitizer, nella parte superiore del riquadro Debug della finestra Output Visual Studio chiede di installare i simboli di debug di Address Sanitizer.