Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt in de loop van de tijd meerdere User-Mode Dump Heap-logboeken (UMDH) van hetzelfde proces genereren. Vervolgens kunt u UMDH gebruiken om de logboeken te vergelijken en te bepalen welke aanroepstacktoewijzingen het meest zijn gegroeid tussen experimenten.
Met de volgende opdracht wordt bijvoorbeeld UMDH omgeleid om twee UMDH-logboeken te vergelijken, Log1.txt en Log2.txt, en wordt de uitvoer omgeleid naar een derde bestand, Compare.txt.
umdh -v Log1.txt Log2.txt > Compare.txt
Het resulterende Compare.txt-bestand bevat de aanroepstacks die in elk logboek zijn vastgelegd en geeft voor elke stack de wijziging weer in heap-toewijzingen tussen de logboekbestanden.
De volgende regel uit het bestand toont bijvoorbeeld de wijziging in toewijzingsgrootte voor de functies in de aanroepstack met het label 'Backtrace00053'.
In Log1.txt, de aanroepen in de stack vormen 40.432 (0x9DF0) bytes, maar in Log2.txt, vormt dezelfde aanroepstack 61.712 (0xF110) bytes, een verschil van 21.280 (0x5320) bytes.
+ 5320 (f110 - 9df0) 3a allocs BackTrace00053
Total increase == 5320
Hier volgt de stack voor de toewijzing:
ntdll!RtlDebugAllocateHeap+0x000000FD
ntdll!RtlAllocateHeapSlowly+0x0000005A
ntdll!RtlAllocateHeap+0x00000808
MyApp!_heap_alloc_base+0x00000069
MyApp!_heap_alloc_dbg+0x000001A2
MyApp!_nh_malloc_dbg+0x00000023
MyApp!_nh_malloc+0x00000016
MyApp!operator new+0x0000000E
MyApp!LeakyFunc+0x0000001E
MyApp!main+0x0000002C
MyApp!mainCRTStartup+0x000000FC
KERNEL32!BaseProcessStart+0x0000003D
Een onderzoek van de aanroepstack laat zien dat de functie LeakyFunc geheugen toedeelt met behulp van de Visual C++-runtimebibliotheek. Als uit onderzoek van de andere logboekbestanden blijkt dat de toewijzing in de loop van de tijd toeneemt, kunt u mogelijk concluderen dat geheugen dat is toegewezen aan de heap niet wordt vrijgemaakt.
Symboolbestanden voor het analyseren van een logboekbestand
Stel dat u twee computers hebt: een logboekregistratiecomputer waar u een UMDH-logboek maakt en een analysecomputer waar u het UMDH-logboek analyseert. Het pad naar het symbool op uw analysecomputer moet verwijzen naar de symbolen voor de versie van Windows die is geladen op de logboekregistratiecomputer op het moment dat het logboek is gemaakt. Verwijs het symboolpad op de analysecomputer niet naar een symboolserver. Als u dit doet, worden er symbolen opgehaald voor de versie van Windows die wordt uitgevoerd op de analysecomputer. UMDH geeft geen zinvolle resultaten weer.