Cloud AddressSanitizer 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ý bude v případě chyby uchovat veškerý kontext specifický pro AddressSanitizer. Potom tento výpis stavu systému odešlete k ladění do jiného počítače. Offline ladění může být kritickým faktorem časového období při spuštění AddressSanitizer v cloudu nebo v distribuovaném testování. Můžete vytvořit výpis paměti 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í Visual Studio poskytuje přesně diagnostikované chyby AddressSanitizer. Tyto chyby můžete zobrazit, aniž byste museli znovu spustit testy, kopírovat obrovské datové sady, zjišťovat ztracená data nebo najít testovací počítače, které byly offline. Musíte jenom načíst výpis stavu systému.

Výpisy stavu systému se vytvářejí při selháních AddressSanitizer 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, která se bude .dmp řídit Visual Studio vytváření názvů.

Tento soubor s výpisem paměti lze zobrazit Visual Studio později na jiném počítači.

Visual Studio zobrazit informace o chybě v kontextu původního zdrojového kódu. K tomu je Visual Studio symboly ladění a indexovaný zdrojový kód. Aby bylo ladění co nejlepší, musí se 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 zdroj a symboly. Informace o podrobnostech implementace a podrobné kontrole najdete v tématu Integrace ladicího programu.

Příklad – sestavení, testování a analýza

Vezměte v úvahu tři počítače: A, B a C. Sestavení se provádí na počítači B, testy se spouštěly na počítači C a analyzujete selhání na počítači A. Chyby se hlásí vůči číslům řádků zdroje a sloupců ve zdrojovém kódu. Zásobník volání můžete zobrazit společně se sadu symbolů v souboru PDB vytvořeném pomocí této přesné verze zdrojového kódu.

Následující kroky jsou pro místní nebo distribuované scénáře, které vedou k vytvoření souboru .dmp, a pro zobrazení tohoto souboru výpisu AddressSanitizer offline.

Vytvoření souboru .dmp místně

  • Sestavení
  • Otestování spustitelného souboru
  • Zkopírujte vygenerovaný soubor .dmp do adresáře buildu.
  • Otevřete soubor .dmp se spárovanými soubory .pdb ve stejném adresáři.

Vytvoření souboru .dmp v distribuovaném systému

  • Sestavení a zpracování souboru PDB pro bloky dat indexování zdroje
  • Zkopírujte atomický pár souborů (.exe, .pdb) do testovacího počítače a spusťte testy.
  • Zápis atomických párů souborů (.pdb, .dmp) do databáze zasílání zpráv o chybách
  • Visual Studio ve stejném adresáři otevře soubor .dmp se spárovanými soubory .pdb.

Poznámka

Počítač Visual Studio 2019, který používáte k analýze, musí mít přístup k internímu GitHub, kde je indexovaný zdroj \\Machine\share uložený.

Zobrazení souborů .dmp AddressSanitizer

  1. Ujistěte se, že integrované vývojové prostředí ladicího programu dokáže najít vaše soubory PDB a zdrojové soubory.

  2. Otevřete Visual Studio a vyberte Pokračovat bez kódu. Pak vyberte SouborOtevřítsoubor a otevřete dialogové okno Otevřít soubor. Ujistěte se, že přípona názvu souboru je .dmp.

    Snímek obrazovky s nabídkou Otevřít soubor v Visual Studio

    Zde zobrazená obrazovka potřebuje ještě jeden krok, aby integrované vývojové prostředí (IDE) umožnilo přístup k symbolům a zdroji.

  3. Nastavte cesty symbolů a pak zvolte Ladit pouze s nativním režimem.

    Snímek obrazovky se zobrazením souhrnu minimálního Visual Studio

Tento snímek obrazovky ukazuje finální načtený soubor s výpisem paměti se zdroji a načtená metadata AddressSanitizer.

Snímek obrazovky ladicího programu zobrazující zdrojové soubory a metadata 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 ji použít k zobrazení stejného zdrojového kódu, který byl vytvořen konkrétní verzí aplikace.

Ladicí program může při ladění souboru EXE se svým souborem PDB použít vložený datový blok zdrojového serveru k načtení příslušných souborů ze správy zdrojového kódu. Načítá soubory, které se mapují na plně kvalifikované názvy, které do souboru PDB automaticky vloží možnost /Zi kompilátoru.

Pokud chcete použít zdrojový server, musí být aplikace "zdrojový indexovaný" pomocí příkazu , aby se blok dat zapisoval pdbstr.exesrcsrv do souboru PDB. Další informace najdete v části Datový blok zdrojového serveru a indexování zdroje. Užitečné jsou také kroky pro indexování zdrojů a publikování symbolů a určení symbolů a zdrojového kódu pro ladicí program.

Externí dokumentaci najdete v tématu:

Viz také

Přehled AddressSanitizer
Známé problémy s AddressSanitizerem
Referenční informace 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