AddressSanitizer – cloud nebo distribuované testování
Chyby AddressSanitizer nemusíte ladit, když a kde k nim dochází. Nakonfigurujte modul runtime tak, aby vytvořil výpis stavu systému, který ukládá veškerý kontext specifický pro AddressSanitizer, když dojde k chybě. Pak tento výpis stavu systému odešlete do jiného počítače pro ladění. Offline ladění může být kritickým časem při spuštění AddressSanitizer v cloudu nebo v distribuovaném testování. Výpis paměti můžete vytvořit v testovací nebo produkční infrastruktuře, kde k selhání dojde, a později ho ladit na počítači pro vývojáře.
Ladicí program sady Visual Studio poskytuje přesně diagnostikované chyby AddressSanitizer. Tyto chyby můžete zobrazit, aniž byste museli znovu sjíždět testy, kopírovat obrovské datové sady, zjišťovat ztracená data nebo najít testovací počítače, které byly offline. Výpis stavu systému stačí načíst.
Při selhání AddressSanitizer se vytvoří výpisy stavu systému nastavením následující proměnné prostředí:
set ASAN_SAVE_DUMPS=MyFileName.dmp
Poznámka:
Název souboru musí mít příponu .dmp
, která se má řídit konvencemi pojmenování sady Visual Studio.
Tento soubor s výpisem paměti lze zobrazit pomocí sady Visual Studio později na jiném počítači.
Visual Studio může zobrazit informace o chybě v kontextu původního zdrojového kódu. Visual Studio k tomu vyžaduje symboly ladění a indexovaný zdrojový kód. Pro co nejlepší možnosti ladění se musí shodovat exe, PDB a zdrojový kód použitý k vytvoření těchto binárních souborů.
Další informace o ukládání zdrojů a symbolů najdete v části Zdroje a symboly . Informace o podrobnostech implementace a jemně odstupňovaném řízení naleznete v tématu Integrace ladicího programu.
Příklad – sestavení, testování a analýza
Zvažte tři počítače: A, B a C. Sestavení se provádí na počítači B, testy se spouštějí na počítači C a analyzují se selhání na počítači A. Chyby jsou hlášeny u zdrojových řádků a sloupců ve zdrojovém kódu. Zásobník volání můžete zobrazit společně se sadou symbolů v souboru PDB vytvořeném pomocí této přesné verze zdrojového kódu.
Následující kroky jsou určené pro místní nebo distribuované scénáře, které vedou k vytvoření souboru .dmp a k zobrazení souboru výpisu addressSanitizer offline.
Vytvoření .dmp místně
- Sestavení
- Otestování spustitelného souboru
- Zkopírování vygenerovaného souboru .dmp do adresáře sestavení
- Otevřete soubor .dmp s spárovaným souborem .pdb ve stejném adresáři.
Vytvoření .dmp v distribuovaném systému
- Sestavení a následné zpracování souboru PDB pro bloky dat indexování zdroje
- Zkopírujte atomický pár (.exe, .pdb) do testovacího počítače a spusťte testy.
- Zápis atomických párů (.pdb, .dmp) do databáze pro hlášení chyb
- Visual Studio otevře soubor .dmp s spárovaným souborem .pdb ve stejném adresáři.
Poznámka:
Počítač sady Visual Studio 2019, který používáte k analýze, musí mít přístup k GitHubu nebo k internímu \\Machine\share
umístění, kde je uložený indexovaný zdroj.
Zobrazení souborů .dmp AddressSanitizer
Ujistěte se, že integrované vývojové prostředí ladicího programu najde vaše soubory PDB a zdrojové soubory.
Otevřete Visual Studio a vyberte Pokračovat bez kódu. Potom výběrem možnosti Otevřít>>soubor otevřete dialogové okno Otevřít soubor. Ujistěte se, že přípona názvu souboru je .dmp.
Zobrazená obrazovka potřebuje ještě jeden krok, aby bylo možné povolit přístup k symbolům a zdroji integrovaného vývojového prostředí ( IDE).
Nastavte cesty symbolů a pak zvolte Ladit pouze s nativními funkcemi.
Tento snímek obrazovky ukazuje konečný načtený soubor s výpisem paměti se zdroji a načtenými metadaty AddressSanitizer.
Zdroj a symboly
Zdrojový server umožňuje klientovi načíst přesnou verzi zdrojových souborů použitých k sestavení aplikace. Zdrojový kód spustitelného souboru nebo knihovny DLL se může v průběhu času a mezi verzemi měnit. Můžete ho použít k zobrazení stejného zdrojového kódu, který vytvořil konkrétní verzi aplikace.
Při ladění exe pomocí souboru PDB může ladicí program použít blok dat vloženého zdrojového serveru k načtení příslušných souborů ze správy zdrojového kódu. Načte soubory, které se mapují na plně kvalifikované názvy, které jsou do souboru PDB automaticky vloženy pomocí možnosti kompilátoru /Zi
.
Pokud chcete použít zdrojový server, musí být aplikace "zdroj indexována" pomocí pdbstr.exe
zápisu datového srcsrv
bloku do souboru PDB. Další informace najdete v části Blok dat zdrojového serveru a indexování zdroje. Najdete zde postup indexování zdrojů a publikování symbolů a určení symbolů a zdrojového kódu pro ladicí program také užitečné.
Externí dokumentaci najdete tady:
- Indexování zdrojového kódu pomocí Gitu
- Průvodce jednodušším laděním
- Indexování zdrojového kódu je nedosáhlá úžasnost
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
Integrace ladicího programu AddressSanitizer
Příklady chyb AddressSanitizer