Compartir a través de


Interpretación de una comparación de registros

Puede generar varios registros de montón de volcado de memoria (UMDH) de User-Mode del mismo proceso a lo largo del tiempo. A continuación, puede usar UMDH para comparar los registros y determinar qué asignaciones de pila de llamadas han crecido más entre las pruebas.

Por ejemplo, el siguiente comando dirige a UMDH para comparar dos registros de UMDH, Log1.txt y Log2.txt, y redirige la salida a un tercer archivo, Compare.txt.

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

El archivo de Compare.txt resultante enumera las pilas de llamadas registradas en cada registro y, para cada pila, muestra el cambio en las asignaciones del montón entre los archivos de registro.

Por ejemplo, la siguiente línea del archivo muestra el cambio en el tamaño de asignación de las funciones de la pila de llamadas con la etiqueta "Backtrace00053".

En Log1.txt, las llamadas de la pila tienen 40 432 bytes (0x9DF0), pero en Log2.txt, la misma pila de llamadas representa 61 712 bytes (0xF110), una diferencia de 21 280 bytes (0x5320).

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

A continuación se muestra la pila de la asignación:

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 examen de la pila de llamadas muestra que la función LeakyFunc asigna memoria mediante la biblioteca en tiempo de ejecución de Visual C++. Si el examen de los otros archivos de registro muestra que la asignación crece con el tiempo, es posible que pueda concluir que la memoria asignada desde el montón no se libera.

Archivos de símbolos para analizar un archivo de registro

Supongamos que tiene dos equipos: un equipo de registro donde se crea un registro umDH y un equipo de análisis donde se analiza el registro de UMDH. La ruta de acceso del símbolo del equipo de análisis debe apuntar a los símbolos de la versión de Windows que se cargó en el equipo de registro en el momento en que se realizó el registro. No apunte la ruta de acceso del símbolo en el equipo de análisis a un servidor de símbolos. Si lo hace, UMDH recuperará símbolos para la versión de Windows que se ejecuta en el equipo de análisis y UMDH no mostrará resultados significativos.

Consulte también

Uso de UMDH para buscar una pérdida de memoria de User-Mode