Sdílet prostřednictvím


Příprava na použití UMDH

Před použitím User-Mode haldy výpisu paměti (UMDH) je nutné dokončit úlohy konfigurace popsané v této části, abyste zachytili přidělení haldy pro proces. Pokud počítač není správně nakonfigurovaný, UMDH nevygeneruje žádné výsledky nebo výsledky nebudou neúplné nebo nesprávné.

Vytvořte databázi trasování zásobníku v uživatelském režimu

Před použitím UMDH k zachycení přidělení haldy pro proces je nutné nakonfigurovat systém Windows pro zachycení trasování zásobníkových stop.

Chcete-li povolit zachytávání trasování zásobníku pro proces, použijte GFlags k nastavení příznaku Vytvořit databázi trasování zásobníku v uživatelském režimu pro proces. Můžete to provést některou z následujících metod:

  • V grafickém rozhraní GFlags zvolte kartu Soubor obrázku . Zadejte název procesu, včetně přípony názvu souboru (například Notepad.exe). Stiskněte klávesu TAB, zvolte Vytvořit databázi trasování zásobníku uživatelského režimu a pak zvolte Použít.

  • Nebo použijte následující příkazový řádek GFlags, kde ImageName je název procesu (včetně přípony názvu souboru):

    gflags /iImageName+ust

Ve výchozím nastavení je množství dat trasování zásobníku, které systém Windows shromažďuje, omezeno na 32 MB na procesoru x86 a na 64 MB na procesoru x64. Pokud je nutné zvětšit velikost této databáze, zvolte kartu Soubor obrázku v grafickém rozhraní GFlags, zadejte název procesu, stiskněte klávesu TAB , zaškrtněte políčko Stack Backtrace (Megs), zadejte hodnotu (v MB) do přidruženého textového pole a pak vyberte Použít.

Poznámka Tuto databázi zvyšte pouze v případě potřeby, protože může vyčerpat omezené prostředky Windows. Pokud už větší velikost nepotřebujete, vraťte toto nastavení do původní hodnoty.

Tato nastavení ovlivní všechny nové instance programu. Nemá vliv na aktuálně spuštěné instance programu.

Přístup k nezbytným symbolům

Před použitím UMDH musíte mít přístup ke správným symbolům pro vaši aplikaci. UmDH používá cestu symbolu určenou proměnnou prostředí _NT_SYMBOL_PATH. Nastavte tuto proměnnou na cestu obsahující symboly pro vaši aplikaci.

Pokud zahrnete také cestu k symbolům Windows, může být analýza dokončena. Syntaxe této cesty symbolu je stejná jako syntaxe použitá ladicím programem; podrobnosti naleznete v části Cesta ke symbolu.

Pokud jsou například symboly pro vaši aplikaci umístěny v umístění C:\MyApp\Symbols a nainstalovali jste soubory symbolů Systému Windows do \\myshare\winsymbols, použijte následující příkaz k nastavení cesty symbolu:

set _NT_SYMBOL_PATH=c:\myapp\symbols;\\myshare\winsymbols

Jako další příklad, pokud jsou symboly pro vaši aplikaci umístěny v C:\MyApp\Symbols a chcete použít veřejné úložiště symbolů Microsoftu pro vaše symboly Windows, přičemž využijete C:\MyCache jako podřízené úložiště, použili byste následující příkaz k nastavení cesty pro symboly:

set _NT_SYMBOL_PATH=c:\myapp\symbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols

Důležitý Předpokládejme, že máte dva počítače: počítač protokolování , ve kterém vytvoříte protokol UMDH a počítač analýzy , ve kterém analyzujete protokol UMDH. Cesta symbolů v analytickém počítači musí odkazovat na symboly pro verzi systému Windows, která byla nahrána na počítač, na kterém se provádí protokolování, v okamžiku vytvoření protokolu. Neukazujte cestu symbolu v počítači analýzy na server symbolů. Pokud ano, UMDH načte symboly pro verzi Systému Windows, která běží na analytickém počítači, a UMDH nezobrazí smysluplné výsledky.

Zakázat ukládání do mezipaměti BSTR

Automatizace (dříve označovaná jako automatizace OLE) ukládá paměť používanou řetězci BSTR do mezipaměti. To může zabránit správnému určení vlastníka přidělení paměti UMDH. Chcete-li se tomuto problému vyhnout, je nutné zakázat ukládání do mezipaměti BSTR.

Pokud chcete zakázat ukládání do mezipaměti BSTR, nastavte proměnnou prostředí OANOCACHE na jednu (1). Toto nastavení musí být provedeno před spuštěním aplikace, jehož přidělení mají být sledována.

Případně můžete zakázat ukládání BSTR do mezipaměti přímo v aplikaci voláním funkce .NET Framework SetNoOaCache . Pokud zvolíte tuto metodu, měli byste tuto funkci volat dříve, protože všechny přidělení BSTR, které již byly uloženy v mezipaměti při volání SetNoOaCache , zůstanou uloženy v mezipaměti.

Pokud potřebujete vysledovat přidělení provedené službou, musíte nastavit funkci OANOCACHE jako systémovou proměnnou prostředí a poté restartovat systém Windows, aby se toto nastavení projevilo.

Vyhledání ID procesu

UMDH identifikuje proces podle identifikátoru procesu (PID). PID jakéhokoli spuštěného procesu najdete pomocí Správce úloh, seznamu úkolů nebo seznamu TList.