Sdílet prostřednictvím


Příklad 15: Použití trasování odkazů na objekty

Trasování odkazů na objekt je funkce systému Windows, která zaznamenává zásobníkové trasování, když je odkazován na objekt nebo když je dereferencován. Je navržená tak, aby detekovala chyby při zpracování objektů, které můžou vést k pádům nebo únikům paměti. Některé z těchto chyb jsou obtížné rozpoznat, protože se nezobrazují konzistentně. Podrobné informace naleznete v tématu Trasování odkazů na objekty.

Trasování odkazů na objekty můžete nakonfigurovat pomocí dialogového okna Globální příznaky, nebo na příkazovém řádku. Následující příklady používají příkazový řádek. Informace o použití dialogového okna Globální příznaky pro konfiguraci trasování odkazů na objekt naleznete v tématu Konfigurace trasování odkazů na objekt.

Pomocí Gflags můžete povolit, zakázat a konfigurovat trasování odkazů na objekty. Proces je následující:

  • Pomocí Gflags povolte trasování odkazů na objekty v registru nebo jako příznak jádra (doba běhu). Pokud do registru přidáte nastavení, je nutné restartovat počítač, aby se spustilo trasování. Pokud povolíte verzi nastavení za běhu, spustí se trasování okamžitě, ale nastavení trasování se po vypnutí nebo restartování počítače vrátí na hodnoty v klíči registru.

  • Spusťte proces, který vytvoří podezřelý objekt. Trasování zahrnuje pouze objekty vytvořené procesy, které jsou spuštěny po zahájení trasování. Pokud se proces spustí během nebo brzy po restartování, přidejte do registru nastavení trasování a restartujte systém.

  • K zobrazení trasování použijte rozšíření ladicího programu!obtrace. Ve výchozím nastavení je trasování zachováno, dokud nebude objekt zničen, ale můžete použít parametr /p k údržbě trasování, dokud nebude trasování zakázané.

  • Použijte Gflags k zakázání trasování objektových odkazův registru nebo jako nastavení příznaku jádra (za běhu). Pokud odstraníte nastavení z registru, je nutné restartovat počítač a ukončit trasování. Pokud zakážete verzi běhu nastavení, trasování skončí okamžitě, ale nastavení trasování se po vypnutí nebo restartování počítače vrátí na hodnoty v registru.

Tyto příklady ukazují, jak pomocí Gflags povolit a zakázat trasování odkazů na objekty. \

povolení trasování za běhu

Následující příkaz povolí trasování odkazů na objekty na příkazovém řádku. Příkaz používá parametr /ko k povolení trasování odkazů na objekt jako nastavení příznaku jádra (doba běhu). Příkaz používá parametr /t k určení značek fondu Tag1 a Fred. V důsledku toho jsou všechny objekty vytvořené pomocí Tag1 nebo Fred sledovány.

gflags /ko /t Tag1;Fred

Vzhledem k tomu, že příkaz změní nastavení příznaku jádra za běhu, spustí se trasování odkazů na objekt okamžitě. Trasování bude obsahovat všechny objekty se značkami fondu Tag1 nebo Fred, které jsou vytvořeny procesy spuštěnými až po podání příkazu.

Gflags odpoví tiskem následující zprávy:

Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

Tato zpráva označuje, že je povolené trasování odkazů na objekty. "Dočasné stopy" označuje, že všechny záznamy stopy jsou odstraněny, když je objekt odstraněn. Pokud chcete trasování nastavit jako trvalé, použijte parametr /p, který přesměruje systém Windows k zachování dat trasování, dokud nebude trasování referencí objektu zakázáno, nebo dokud se počítač nevypne či nerestartuje.

Povolit trasování v registru

Následující příkaz přidá do registru konfiguraci trasování odkazů na objekty. Trasování, které nakonfigurujete, začíná při restartování počítače.

Příkaz používá parametr /ro pro povolení trasování odkazů na objekt jako nastavení registru. Příkaz používá /i k určení procesu pro notepad.exe a používá parametr /t k určení značek fondu Tag1 a Fred. V důsledku toho jsou sledovány všechny objekty vytvořené procesem Poznámkový blok s tagy Tag1 nebo Fred fondu. Příkaz také používá parametr /p, který uchovává data trasování, dokud nebude trasování zakázané.

gflags /ro /t Tag1;Fred /i Notepad.exe /p

Při odeslání příkazu uloží Gflags informace v registru. Vzhledem k tomu, že nastavení registru není efektivní, dokud nerestartujete počítač, je toto trasování odkazů na objekt nakonfigurováno, ale ještě není spuštěno.

Gflags odpoví tiskem následující zprávy:

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

Zpráva indikuje, že trasování odkazů na objekt je v registru povoleno. Trvalé trasování značí, že se data trasování zachovají, dokud počítač nevypnete nebo nerestartujete. Zpráva obsahuje také značky fondu a názvy souborů obrázků, které budou sledovány.

Zobrazit konfiguraci trasování odkazů na objekt

Můžete zobrazit konfiguraci trasování odkazů na objekty, která je aktuálně platná nebo je uložena v registru, která se má použít při restartování počítače.

V tomto příkladu je uložená jedna konfigurace trasování odkazů na objekty uložená v registru a jiná konfigurace pro dobu běhu. Trasování za běhu se spustí okamžitě (a přepíše všechna nastavení registru). Pokud však restartujete systém, nastavení za běhu se ztratí a nastavení registru pro trasování odkazů na objekty se stane účinným.

Následující příkaz zobrazí konfiguraci trasování odkazů na objekty za běhu. Používá parametr /ko bez dalších parametrů.

gflags /ko
Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

Pokud je povolené trasování odkazů na objekty, jak je uvedeno v tomto příkladu, nastavení, která jsou zobrazena, popisují probíhající trasování.

Následující příkaz zobrazí konfigurační data trasování odkazů na objekty uložená v registru. Používá parametr /ro bez dalších parametrů.

gflags /ro

V odpovědi Gflags zobrazí data uložená v registru:

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

Pokud jste restartovali počítač od přidání konfigurace trasování odkazů na objekt do registru, nastavení zobrazená v reakci na příkaz gflags /ro popisují probíhající trasování. Pokud jste však ještě nere­startovali systém, nebo jste ho restartovali, ale pak jste spustili trasování odkazu na objekt za běhu (/ko), nastavení uložená v registru aktuálně neplatí, ale po příštím restartu systému znovu nabydou platnosti.

Zakázat trasování odkazů na objekty

Když zakážete nastavení trasování odkazů na objekty za běhu (příznak jádra), trasování se okamžitě zastaví. Když v registru zakážete nastavení trasování odkazů na objekty, trasování se zastaví při restartování počítače.

Následující příkaz zakáže trasování odkazů na objekty za běhu. Parametr /d používá k zakázání všech nastavení. Nastavení nelze zakázat selektivně.

gflags /ko -d

Po úspěšném provedení příkazu Gflags odpoví následující zprávou:

Running Kernel Settings :
Object Ref Tracing Disabled

Následující příkaz zakáže trasování odkazů na objekty za běhu.

Následující příkaz zakáže nastavení trasování odkazů na objekty v registru. K zakázání všech nastavení používá parametr /d. Nastavení nelze zakázat selektivně. Tento příkaz je efektivní při restartování počítače.

gflags /ro -d

Po úspěšném provedení příkazu Gflags odpoví následující zprávou:

Boot Registry Settings :
Object Ref Tracing Disabled