Knihovna rozšířených funkcí sady Visual Studio AddressSanitizer (VCAsan)
Knihovny VCAsan*.lib
implementují rozšířené funkce IDE ladicího programu v sadě Visual Studio. Tyto funkce umožňují integrovanému vývojovému prostředí zobrazit chyby AddressSanitizer v živých ladicích relacích nebo offline uložením souboru s výpisem stavu systému s metadaty. Knihovna je propojena pokaždé, když kompilátor MSVC povolí AddressSanitizer.
Inventář knihovny VCAsan
Možnost modulu runtime | Knihovna odkazů VCAsan |
---|---|
/MT |
libvcasan.lib |
/MD |
vcasan.lib |
/MTd |
libvcasand.lib |
/MDd |
vcasand.lib |
Funkce knihovny VCAsan
Okno sestavy chyb Rich AddressSanitizer v integrovaném vývojovém prostředí sady Visual Studio
Knihovna VCAsan zaregistruje zpětné volání v modulu runtime AddressSanitizer pomocí funkce __asan_set_error_report_callback
rozhraní . Pokud se vygeneruje sestava AddressSanitizer, tato zpětná vazba se použije k vyvolání výjimky zachycené sadou Visual Studio. Visual Studio používá data výjimek k vygenerování zprávy zobrazené uživateli v integrovaném vývojovém prostředí (IDE).
Poznámka:
Knihovna VCAsan zaregistruje funkci zpětného volání v modulu runtime AddressSanitizer. Pokud váš kód volá tuto registrační funkci podruhé, přepíše registraci zpětného volání knihovny VCAsan. Výsledkem je ztráta veškeré integrace integrovaného vývojového prostředí sady Visual Studio. Vrátíte se zpět k výchozímu uživatelskému prostředí ide. Je také možné, že volání uživatele zaregistruje zpětná volání, aby bylo ztraceno. Pokud narazíte na některý z problémů, vytvořte chybu.
Ukládání chyb AddressSanitizer v novém typu souboru s výpisem stavu systému
Když propojete knihovnu VCAsan se spustitelným souborem, můžou ji uživatelé povolit, aby vygenerovala výpis stavu systému za běhu. Pak modul runtime AddressSanitizer vytvoří soubor s výpisem paměti, když dojde k diagnostice chyby. Pokud chcete tuto funkci povolit, uživatel nastaví ASAN_SAVE_DUMPS
proměnnou prostředí pomocí příkazu, jako je tento:
set ASAN_SAVE_DUMPS=MyFileName.dmp
Aby soubor mohl dodržovat konvence integrovaného vývojového prostředí sady Visual Studio, musí mít .dmp
příponu. (Před 17.7)
Co se stane, když je zadán ASAN_SAVE_DUMPS
soubor s výpisem paměti pro: Pokud dojde k chybě zachycené modulem runtime AddressSanitizer, uloží soubor s výpisem stavu systému, který má metadata přidružená k chybě. Ladicí program v sadě Visual Studio verze 16.9 a novější může analyzovat metadata uložená v souboru s výpisem paměti. Můžete nastavit ASAN_SAVE_DUMPS
jednotlivé testy, uložit tyto binární artefakty a pak je zobrazit v integrovaném vývojovém prostředí se správným zdrojovým indexováním.
Visual Studio verze 17.7 a novější podporuje následující:
Řetězce s uvozovými znaky se teď zpracovávají správně. V předchozíchverzích
.dmp
Pokud je přípona explicitně zadaná (napříkladset ASAN_SAVE_DUMPS=MyDmp.dmp
), VCAsan ji explicitně použije a nepřidá přidružené ID procesu do názvu souboru s výpisem paměti..dmp
Pokud soubor již existuje se stejným názvem zadaným z proměnné prostředí, VCAsan upraví název souboru následujícím způsobem:- Připojí číslo k názvu souboru v závorkách. Například
Myfile (1).dmp
. - Pokud se po několika pokusech o připojení čísla v závorkách nepodaří vygenerovat jedinečný název, soubor se uloží do
%APPLOCAL%
dočasné cesty, kterou VCAsan vytiskne. NapříkladC:\Users\~\AppData\Local\Temp\Dump.dmp
. - Pokud ukládání do dočasné cesty selže, zobrazí se diagnostická chyba.
- Připojí číslo k názvu souboru v závorkách. Například
Viz také
Přehled AddressSanitizer
Známé problémy s addressSanitizerem
Referenční dokumentace k sestavení a jazyku AddressSanitizer
Referenční informace k modulu runtime AddressSanitizer
Stínové bajty AddressSanitizer
AddressSanitizer – cloud nebo distribuované testování
Příklady chyb AddressSanitizer