Rozszerzona biblioteka funkcji programu Visual Studio AddressSanitizer (VCAsan)
Biblioteki VCAsan*.lib
implementują rozszerzone funkcje środowiska IDE debugera w programie Visual Studio. Te funkcje umożliwiają środowisku IDE wyświetlanie błędów AddressSanitizer w sesjach debugowania na żywo lub offline przez zapisanie pliku zrzutu awaryjnego z metadanymi. Biblioteka jest połączona za każdym razem, gdy funkcja AddressSanitizer jest włączona przez kompilator MSVC.
Spis bibliotek VCAsan
Opcja środowiska uruchomieniowego | Biblioteka linków VCAsan |
---|---|
/MT |
libvcasan.lib |
/MD |
vcasan.lib |
/MTd |
libvcasand.lib |
/MDd |
vcasand.lib |
Funkcje biblioteki VCAsan
Okno raportu o błędach rich AddressSanitizer w środowisku IDE programu Visual Studio
Biblioteka VCAsan rejestruje wywołanie zwrotne w środowisku uruchomieniowym AddressSanitizer przy użyciu funkcji __asan_set_error_report_callback
interfejsu . Jeśli zostanie wygenerowany raport AddressSanitizer, to wywołanie zwrotne zostanie użyte do zgłoszenia wyjątku przechwyconego przez program Visual Studio. Program Visual Studio używa danych wyjątku do generowania komunikatu wyświetlanego użytkownikowi w środowisku IDE.
Uwaga
Biblioteka VCAsan rejestruje funkcję wywołania zwrotnego w środowisku uruchomieniowym AddressSanitizer. Jeśli kod wywołuje tę funkcję rejestracji po raz drugi, zastępuje rejestrację wywołania zwrotnego biblioteki VCAsan. Spowoduje to utratę całej integracji środowiska IDE programu Visual Studio. Powrócisz do domyślnego środowiska użytkownika środowiska IDE. Istnieje również możliwość utraty wywołania użytkownika, które rejestruje wywołanie zwrotne. Jeśli wystąpi dowolny problem, zgłoś usterkę.
Zapisywanie błędów addressSanitizer w nowym typie pliku zrzutu awaryjnego
Po połączeniu biblioteki VCAsan z plikiem wykonywalnym użytkownicy mogą umożliwić jej wygenerowanie zrzutu awaryjnego w czasie wykonywania. Następnie środowisko uruchomieniowe AddressSanitizer generuje plik zrzutu, gdy wystąpi zdiagnozowany błąd. Aby włączyć tę funkcję, użytkownik ustawia zmienną ASAN_SAVE_DUMPS
środowiskową przy użyciu polecenia takiego jak ten:
set ASAN_SAVE_DUMPS=MyFileName.dmp
Plik musi mieć rozszerzenie, .dmp
aby postępować zgodnie z konwencjami środowiska IDE programu Visual Studio. (Przed 17.7)
Oto, co się stanie po określeniu pliku zrzutu dla ASAN_SAVE_DUMPS
: Jeśli błąd zostanie przechwycony przez środowisko uruchomieniowe AddressSanitizer, zapisuje plik zrzutu awaryjnego, który zawiera metadane skojarzone z błędem. Debuger w programie Visual Studio w wersji 16.9 lub nowszej może analizować metadane zapisane w pliku zrzutu. Można ustawić ASAN_SAVE_DUMPS
dla poszczególnych testów, przechowywać te artefakty binarne, a następnie wyświetlać je w środowisku IDE z odpowiednim indeksowaniem źródłowym.
Program Visual Studio w wersji 17.7 lub nowszej obsługuje następujące elementy:
Ciągi cytowane są teraz poprawnie obsługiwane. W poprzednich wersjach w przypadku środowisk w programie Visual Studio lub w przypadku korzystania z programu PowerShell ustawienie zmiennej środowiskowej zawierającej cudzysłowy lub spacje nie może utworzyć oczekiwanego pliku zrzutu.
.dmp
Gdy rozszerzenie jest jawnie określone (na przykładset ASAN_SAVE_DUMPS=MyDmp.dmp
), program VCAsan używa go jawnie i nie doda skojarzonego identyfikatora procesu do nazwy pliku zrzutu..dmp
Jeśli plik już istnieje o tej samej nazwie określonej ze zmiennej środowiskowej, VCAsan modyfikuje nazwę pliku w następujący sposób:- Dołącza liczbę do nazwy pliku w nawiasach. Na przykład
Myfile (1).dmp
. - Jeśli po kilku próbach dołączenia liczby w nawiasach nie można wygenerować unikatowej nazwy, plik zostanie zapisany w ścieżce tymczasowej
%APPLOCAL%
, którą program VCAsan będzie drukować. Na przykładC:\Users\~\AppData\Local\Temp\Dump.dmp
. - Jeśli zapisywanie w ścieżce tymczasowej zakończy się niepowodzeniem, zostanie wyświetlony błąd diagnostyczny.
- Dołącza liczbę do nazwy pliku w nawiasach. Na przykład
Zobacz też
AddressSanitizer — omówienie
Rozwiązywanie znanych problemów z programemSanitizer
Dokumentacja języka i kompilacji narzędzia AddressSanitizer
AddressSanitizer runtime reference (Dokumentacja środowiska uruchomieniowego AddressSanitizer)
Bajty w tle addressSanitizer
AddressSanitizer — chmura lub testowanie rozproszone
Przykłady błędów addressSanitizer
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla