Použití souborů výpisu paměti k ladění selhání a zablokování aplikací v sadě Visual Studio
Soubory s výpisem paměti s nebo bez haldy –vytvořte soubor s výpisem, otevřete jej, vyhledejte binární soubory, PDB a zdrojový soubor souboru s výpisem.
Obsah
Co je soubor s výpisem paměti?
Soubory výpisu paměti, s haldou nebo bez haldy
Požadavky a omezení
Vytvoření souboru výpisu paměti
Otevřete souboru výpisu paměti
Najít binární soubory, soubory symbolů (PDB) a zdrojové soubory
Co je soubor s výpisem paměti?
Soubor výpisu paměti je snímek aplikace v bodě v čase, kdy je výpis paměti pořízen.Ukazuje, jaký proces probíhal a které moduly byly načteny.Pokud byl výpis paměti uložen s informacemi o haldě, soubor s výpisem paměti obsahuje snímek toho, co bylo v paměti aplikace v daném okamžiku.Otevření souboru s výpisem paměti pomocí haldy v sadě Visual Studio odpovídá zastavení na zarážce v ladicí relaci.Ačkoli nelze pokračovat v provádění, můžete zkoumat zásobníky, vlákna a proměnné hodnoty aplikace v době, kdy došlo k výpisu paměti.
Výpisy paměti se používají především pro ladění problémů, ke kterým dochází v počítačích, ke kterým nemá vývojář přístup.Můžete například použít soubor s výpisem paměti z počítače zákazníka, pokud nelze ve vašem počítači reprodukovat situaci, kdy produkt zákazníka selže nebo přestane reagovat.Výpisy paměti jsou vytvářeny také testery, kteří v nich ukládají data o zhroucení nebo zablokování, aby bylo možné testovací počítač použít pro další testování.Ladicí program Visual Studio může uložit soubory s výpisem paměti pro spravovaný nebo nativní kód.Ladicí program můžete načíst soubory s výpisem paměti, vytvořené pomocí sady Visual Studio nebo jinými programy, které ukládají soubory ve formátu minimální výpis.
Obsah
Soubory výpisu paměti, s haldou nebo bez haldy
Můžete vytvořit soubory s výpisem paměti s informacemi o haldě nebo bez nich.
Soubory s výpisem paměti s haldou obsahují snímek paměti aplikace.Zahrnuje hodnoty proměnných v době, kdy byl vytvořen výpis paměti.Pokud načtete soubor s výpisem paměti, který byl uložen s haldou, sada Visual Studio může načíst symboly i v případě, že binární soubor aplikace není nalezen.Visual Studio také ukládá binární verze načtených nativních modulů v souboru s výpisem paměti, díky čemu může být ladění mnohem snazší.
Soubory s výpisem paměti bez haldy jsou mnohem menší, než soubory s výpisem s informacemi o haldě.Ladicí program má však načíst binární soubory aplikace a nalézt tak informace o symbolu.Binární soubory musí být přesná shoda binárních souborů, které byly použity při vytvoření výpisu paměti.Pouze hodnoty proměnných zásobníku jsou ukládány do souborů výpisu paměti bez dat haldy.
Obsah
Požadavky a omezení
Ladění souborů s výpisem paměti pro optimalizaci kódu může být matoucí.Například vkládání funkcí kompilátoru může mít za následek neočekávané volání zásobníků a další optimalizace může upravit délku platnosti proměnných.
Soubory s výpisem paměti u 64bitových počítačů je nutné ladit v instanci aplikace Visual Studio, která běží na 64bitovém počítači.
Ve verzích sady Visual Studio před verzí 2013 výpisy paměti 32bitových aplikací běžících v 64bitových počítačích, které byly shromážděny pomocí některých nástrojů (například Správce úloh a WinDbg v 64bitové verzi) nelze otevřít v sadě Visual Studio.Toto omezení bylo ve verzi 2013 odebráno.
Visual Studio můžete ladit soubory s výpisem paměti nativních aplikaci ze zařízení ARM.Visual Studio může také ladit soubory s výpisem paměti aplikací spravovaných aplikace ze zařízení ARM, avšak pouze v nativním ladicím programu.
Chcete-li ladit soubory výpisu paměti režimu jádra v aplikaci Visual Studio 2013, stáhněte si verzi Windows 8.1 nástrojů Debugging Tools for Windows.Viz Ladění jádra v aplikaci Visual Studio.
Visual Studio nemůže ladit soubory se výpisem paměti uložené ve starším formátu výpisu, známé jako soubory s výpisem s úplným uživatelským režimem.Pamatujte, že výpis paměti s úplným uživatelským režimem není stejný jako výpis s daty haldy.
Pokud chcete provést ladění SOS.dll (rozšíření ladění SOS) v aplikaci Visual Studio, je nutné nainstalovat Debugging Tools for Windows, které jsou součástí sad WDK (Windows Driver Kit).Viz Windows 8.1 Preview: stažení sad, bitů a nástrojů.
Obsah
Vytvoření souboru výpisu paměti
Vytvoření souboru s výpisem paměti pomocí aplikace Visual Studio:
Při ladění procesu v aplikaci Visual Studio, můžete uložit soubor s výpisem paměti, když se ladicí program zastaví na výjimce nebo v bodu přerušení.Zvolte možnost Uložit výpis paměti jako > Ladění.V dialogovém okně Uložit výpis paměti jako v seznamu Uložit jako typ můžete vybrat možnost Minimální výpis nebo Minimální výpis s haldou (výchozí).
S povolenou možností Ladění za běhu v sadě Visual Studio můžete připojit ladicí modul k neúspěšnému procesu, který běží mimo ladicí program, a následně uložit soubor s výpisem paměti.Další informace naleznete v tématu Připojení ke spuštěným procesům pomocí ladicího programu sady Visual Studio.
Můžete také vytvořit soubory s výpisem paměti pomocí libovolného programu, který podporuje formát minimálního výpisu Windows.Například nástroj příkazového řádku Procdump z prostředí Windows Sysinternals může vytvořit soubory pro výpis paměti při selhání procesu na základě aktivační události nebo na vyžádání.Viz Požadavky a omezení v tomto tématu pro další informace o použití jiných nástrojů pro vytváření souborů s výpisem paměti.
Obsah
Otevřete souboru výpisu paměti
V sadě Visual Studio, zvolte položky Soubor, Otevřít, Soubor.
V dialogovém okně Otevřít soubor vyhledejte a vyberte soubor s výpisem paměti.Obvykle má příponu .dmp.Poté vyberte možnost OK.
Zobrazí se okno Souhrn souborů výpisu paměti.V tomto okně můžete zobrazit souhrnné informace o ladění pro soubor s výpisem paměti, nastavit cestu symbolů, spustit ladění a souhrnné informace zkopírovat do schránky.
Chcete-li spustit ladění, přejděte do části Akce a zvolte buď Ladit pouze nativní nebo Ladit s různými typy.
Najít binární soubory, soubory symbolů (PDB) a zdrojové soubory
Chcete-li používat úplné funkce aplikace Visual Studio pro ladění souboru s výpisem paměti, potřebujete přístup k:
Soubor .exe, pro který byl pořízen výpis paměti přijatých a další binárních souborů (knihovny DLL, atd.), které byly použity v procesu s výpisem paměti.
Jestliže ladíte výpis paměti s daty haldy, sada Visual Studio se může vypořádat s chybějícími binárními soubory pro některé moduly, ale musí mít binární soubory pro dostatek modulů, aby mohla vygenerovat platné zásobníky volání.Visual Studio obsahuje nativní moduly v souboru s výpisem paměti s haldou.
Soubory symbolů (PDB) .exe a další binární soubory.
Zdrojové soubory pro moduly, které vás zajímají.
Spustitelné soubory a soubory PDB musí odpovídat přesně verzi a sestavení souborů použitých při tvorbě výpisu paměti.
Pokud nemůžete najít zdrojové soubory, můžete ladit pomocí zpětného překladu modulů,
Výchozí vyhledávací cesty pro spustitelné soubory
Visual Studio automaticky hledá v těchto umístěních spustitelné soubory, které nejsou zahrnuty v souboru s výpisem paměti:
Adresář obsahující soubor s výpisem paměti.
Cesta modulu, který je zadaný v souboru s výpisem paměti.Toto je cesta modulu v počítači, kde byl výpis paměti shromážděn.
Cesty symbolů zadané na stránce Ladění, Možnosti, Symboly dialogového okna Nástroje aplikace Visual Studio , Volby.Můžete přidat více míst pro vyhledávání na této stránce.
Používání stránek Ne binární / Symbol / Zdroj
Pokud sada Visual Studio nemůže najít soubory potřebné k ladění modulu ve výpisu paměti, zobrazí odpovídající stránku (Nebyl nalezen žádný binární soubor, Nebyl nalezen žádný symbol nebo Nebyl nalezen žádný zdroj).Tyto stránky obsahují podrobné informace o příčině problému a poskytují odkazy na akce, které vám mohou pomoci identifikovat správné umístění souborů.Další informace naleznete v tématu Zadání symbolu (.pdb) a zdrojových souborů v ladicím programu sady Visual Studio.
Obsah
Viz také
Koncepty
Ladění za běhu v sadě Visual Studio
Ladění aplikace pomocí zaznamenávání provádění kódu s použitím technologie IntelliTrace
Další zdroje
Zadání symbolu (.pdb) a zdrojových souborů v ladicím programu sady Visual Studio