Condividi tramite


Interpretazione di un confronto tra log

È possibile generare più log dell'heap dump di User-Mode (UMDH) dello stesso processo nel tempo. È quindi possibile usare UMDH per confrontare i log e determinare quali allocazioni dello stack di chiamate sono aumentate di più tra le versioni di valutazione.

Ad esempio, il comando seguente indirizza UMDH a confrontare due log UMDH, Log1.txt e Log2.txt e reindirizza l'output a un terzo file, Compare.txt.

umdh -v Log1.txt Log2.txt > Compare.txt

Il file di Compare.txt risultante elenca gli stack di chiamate registrati in ogni log e, per ogni stack, visualizza la modifica nelle allocazioni dell'heap tra i file di log.

Ad esempio, la riga seguente del file mostra la modifica delle dimensioni di allocazione per le funzioni nello stack di chiamate con etichetta "Backtrace00053".

In Log1.txt le chiamate nello stack corrispondono a 40.432 byte (0x9DF0), ma in Log2.txt, gli stessi account dello stack di chiamate per 61.712 byte (0xF110), una differenza di 21.280 byte (0x5320).

+ 5320 (f110 - 9df0) 3a allocs BackTrace00053 
Total increase == 5320

Di seguito è riportato lo stack per l'allocazione:

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

Un esame dello stack di chiamate mostra che la funzione LeakyFunc alloca la memoria usando la libreria di runtime di Visual C++. Se l'esame degli altri file di log indica che l'allocazione cresce nel tempo, è possibile concludere che la memoria allocata dall'heap non viene liberata.

File di simboli per l'analisi di un file di log

Si supponga di avere due computer: un computer di registrazione in cui si crea un log UMDH e un computer di analisi in cui si analizza il log UMDH. Il percorso del simbolo nel computer di analisi deve puntare ai simboli per la versione di Windows caricata nel computer di registrazione al momento della creazione del log. Non puntare il percorso del simbolo nel computer di analisi a un server di simboli. In questo caso, UMDH recupererà i simboli per la versione di Windows in esecuzione nel computer di analisi e UMDH non visualizzerà risultati significativi.

Vedere anche

Uso di UMDH per trovare una perdita di memoria User-Mode