Umdhtools.exe: Cómo utilizar Umdh.exe para buscar pérdidas de memoria

Seleccione idioma Seleccione idioma
Id. de artículo: 268343 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

La utilidad de montón (UMDH) del volcado de modo de usuario funciona con el sistema operativo para analizar las asignaciones del montón de Windows para un proceso concreto. Esta utilidad y las demás herramientas asociadas, están destinadas principalmente para Windows 2000 y Windows XP. Haga clic en el botón Reproducir para ver esta demostración multimedia.

Nota: El vídeo se codifica con el códec ACELP ®, necesita el códec ACELP ® de installthefree disponible en http://www.ACELP.NET/acelp_eval.PHP



Nota Dado que la función malloc en el módulo (CRT) de tiempo de ejecución de C utiliza la omisión de puntero de marco (FPO) en la versión original de Windows Server 2003, no puede ver la información de la pila completa de la función malloc mediante la herramienta UMDH. Este problema se corrigió en el módulo de CRT de Windows Server 2003 Service Pack 1 (SP1). Por lo tanto, puede ver la información de la pila completa de la función malloc en Windows Server 2003 SP1.

Más información

Antes de utilizar UMDH

Si cree que está experimentando una pérdida de memoria, tenga en cuenta que las pérdidas de memoria pueden no ser lo que parecen ser. Puede que descubra que una pérdida de memoria no es una pérdida de memoria es true, pero es una mejora de rendimiento. Por ejemplo, el motor de base de datos de Microsoft Jet puede consumir grandes cantidades de memoria (128 MB en un equipo de 256 MB) ya que recupera los datos y escribe las memorias caché. La caché permite que el motor de Jet para obtener rápida lectura anticipada y escritura anticipada el almacenamiento en búfer.

Para determinar si un proceso está experimentando pérdidas de memoria, utilice al Monitor de rendimiento de Windows (Perfmon.exe) y supervisar los Bytes privados en la categoría de proceso para la aplicación. Bytes privados es el total de memoria que el proceso ha asignado, pero no se comparte con otros procesos. Tenga en cuenta que esto es diferente de Bytes virtuales, que también es interesante para supervisar. Bytes virtuales es el tamaño actual en bytes del espacio de direcciones virtual que utiliza el proceso. Una aplicación puede producir la pérdida de memoria virtual, pero no puede ver la diferencia en los bytes privados asignados. Si no ve memoria aumente al supervisar bytes privados, pero piensa que todavía se está quedando sin memoria, supervise los bytes virtuales para ver si está utilizando la memoria virtual. Para obtener información adicional acerca de la detección de pérdidas de memoria y en la descripción del Monitor de sistema de Windows (Perfmon.exe), visite el siguiente sitio Web de Microsoft:
http://msdn.Microsoft.com/en-us/library/ms404355.aspx
Para asegurarse de que la aplicación tenga una pérdida de memoria, coloque el código sospechoso en un bucle con el número de iteraciones y, a continuación, supervisar bytes privados y virtuales para los aumentos de memoria. Cuidado para asegurarse de que el número de bytes privados y bytes virtuales no finalmente siendo la misma y el número deja de aumentar. Si hay un punto en el que la memoria deja de aumentar, (por ejemplo, no continúa creciendo indefinidamente) no ve una pérdida de memoria, pero lo más probable, verá una memoria caché que está creciendo a su tamaño máximo.

Si decide ver una pérdida de memoria, antes de utilizar UMDH, siga estos pasos:
  1. Instalar la utilidad UMDH.
  2. Establezca la variable de entorno PATH del sistema para incluir thefolder en la que instaló UMDH.
  3. Establezca la variable de entorno _NT_SYMBOL_PATH a ruta de acceso de símbolos de Microsoft para que UMDH puede encontrar symbolfiles de depuración.
La utilidad UMDH se incluye con los productos de herramientas de depuración para Windows en el sitio Web de Microsoft siguiente:
http://www.Microsoft.com/whdc/devtools/DDK/default.mspx
Descargar, instalar la utilidad y establezca la variable de entorno de sistema PATH en la ruta donde se han instalado las herramientas de depuración.

Antes de utilizar UMDH, debe instalar los símbolos de depuración correcta de los componentes de la aplicación y del sistema operativo. Utilizar el servidor de símbolos de Microsoft para obtener los símbolos de depuración para los componentes de Microsoft. Para obtener más información sobre el servidor de símbolos de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
311503 Utilizar el servidor de símbolos de Microsoft para obtener archivos de símbolos de depuración
UMDH intenta encontrar los archivos de símbolos mediante el uso de la variable de entorno _NT_SYMBOL_PATH. El comando para establecer la ruta de acceso desde un símbolo del sistema podría ser similar al siguiente:
establecer _NT_SYMBOL_PATH = SRV * c:\LocalSymbolCache
Para obtener información adicional acerca de cómo configurar la información de depuración simbólica, consulte la sección "Símbolos de depuración" más adelante en este artículo.

Después de completar estos pasos, está listo para usar la utilidad UMDH.

Captura de montón volcados con UMDH

UMDH es una utilidad que vuelca información acerca de las asignaciones del montón de un proceso. Esta información incluye la pila de llamadas para cada asignación, el número de asignaciones que se realizan a través de esa pila de llamadas y el número de bytes que se consumen a través de esa pila de llamadas. Por ejemplo:
00005320 bytes in 0x14 allocations (@ 0x00000428) by: BackTrace00053
           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
				
Esta salida UMDH muestra que había 21280 (0 x 5320) bytes asignados total de la pila de llamadas. Se asignaron los 21280 bytes de 20 (0 x 14) asignaciones independientes de 1064 bytes (0x428). La pila de llamadas se proporciona un identificador de BackTrace00053.

Para generar un archivo de volcado de las asignaciones del montón, debe utilizar la utilidad Gflags.exe, que también se incluye con los productos de herramientas de depuración para Windows, para permitir que el sistema operativo sabe que el núcleo para hacer un seguimiento de las asignaciones.

Suponga que va a volcar el contenido de heap(s) para Notepad.exe. En primer lugar debe habilitar la adquisición del seguimiento de pila de la aplicación que desea probar. De manera predeterminada, esta característica no está habilitada. El comando para habilitar esta característica es la siguiente:
Gflags -i notepad.exe + sólo
El comando no habilita el seguimiento de pila para los procesos que se están ejecutando, pero habilita el seguimiento de la pila para todas las ejecuciones futuras de Notepad.exe. Como alternativa, puede establecer el indicador a través de la interfaz de usuario GFLAGS (ejecutar Gflags.exe sin ningún argumento para obtener la interfaz de usuario). Utilizar la opción - sólo para gflags para deshabilitar el seguimiento de pila cuando termine la depuración.

Cuando se establecen los indicadores de imagen mediante Gflags.exe, y configurar los símbolos de depuración, estará listo para iniciar el Bloc de notas (la aplicación que está utilizando UMDH). Después de iniciarse el programa, debe determinar el identificador de proceso (PID) del proceso de Bloc de notas que acaba de iniciar. El comando para esto es la siguiente:
Tlist
Puede encontrar el PID de la salida de la aplicación de TLIST. La información de PID también puede obtenerse desde el Administrador de tareas. Suponga que el PID para el proceso de Bloc de notas que acaba de iniciar es 124. Puede utilizar UMDH para obtener un volcado del montón con el siguiente comando:
Umdh - p: 124 - f:notepad124.log
Resultados: tiene un volcado del montón completo del proceso de Bloc de notas en el archivo Notepad124.log. Este archivo muestra todas las asignaciones que se realizaron y las pilas de llamadas que se realizaron las asignaciones.

Use Umdh.exe para comparar los registros UMDH

Mientras que el archivo de registro UMDH contiene información valiosa sobre el estado actual de los montones para un proceso, si le preocupa con la búsqueda de una pérdida de memoria, puede ser más útil para comparar los resultados de dos registros y averiguar qué la pila de llamadas ha visto el mayor crecimiento entre los archivos de volcado de dos. La utilidad Umdh.exe le ayuda a comparar dos registros UMDH para proporcionar un análisis de la diferencia entre ellos. Una vez que dos registros capturados en intervalos diferentes, entonces puede utilizar el siguiente comando:
UMDH dh1.log dh2.log > cmp12.txt
- o -
UMDH -d dh1.log dh2.log > cmp12.txt
La opción de línea de comandos -d indica UMDH para mostrar en formato decimal en lugar de hexadecimal. La salida del comando compara las diferencias de las asignaciones entre los dos registros y proporciona información que es similar al siguiente:
+ 5320 (f110 - 9df0) aumento Total de 3a allocsBackTrace00053 == 5320
Para cada rastrear en los archivos de registro UMDH, hay una comparación entre los dos archivos de registro. Este caso muestra que el último archivo de registro que se especifica en la línea de comandos UMDH bytes 0xF110 asignados, mientras que el primer registro en la línea de comandos UMDH bytes de 0x9DF0 asignado para la misma rastrear (pila de llamadas). El "5320" es la diferencia en el número de bytes asignados. En este caso, había 0 x 5320 más bytes asignan entre las horas que se han capturado los dos registros. Los bytes provienen de la pila de llamadas que se identifica mediante "BackTrace00053".

El paso siguiente es averiguar qué hay en dicho seguimiento regresivo. Si abre el segundo archivo de registro y la búsqueda de BackTrace00053, puede encontrar algo similar a lo siguiente:
00005320 bytes in 0x14 allocations (@ 0x00000428) by: BackTrace00053
           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
				
Al ver la pila de llamadas, puede ver que la función LeakyFunc asigna memoria a través de la nueva función la operador de biblioteca de tiempo de ejecución de Visual C++. Si encuentra que el número de asignaciones crece a medida que toma más de los archivos de volcado, puede concluir que la memoria no se libera.

Habilitar el seguimiento de la pila

La información más importante en los registros de UMDH es el seguimiento de la pila de las asignaciones del montón. Puede analizarlos para comprobar si un proceso de pérdidas de memoria del montón. De manera predeterminada, no se adquieren estos seguimientos de la pila. Puede habilitar esta característica por proceso o todo el sistema. Utilice el siguiente comando para habilitar la pila seguimiento todo el sistema:
Gflags - r + sólo
Reinicie el equipo después de este comando. Para habilitar por proceso, el comando es la siguiente:
Gflags -i APPNAME + sólo
Donde APPNAME es el nombre de archivo del ejecutable, incluida la extensión (por ejemplo, Services.exe, Lsass.exe). El comando no habilita el seguimiento de pila para un proceso que ya se está ejecutando. Por lo tanto, para los procesos que no se puede reiniciar (por ejemplo, servicios, lsass, winlogon), debe reiniciar el equipo de prueba.

Utilice los siguientes comandos para comprobar qué configuración se ha establecido en todo el sistema o para un proceso específico: todo el sistema:
Gflags - r
Proceso específico:
Gflags -i nombre de la aplicación
De forma predeterminada, la profundidad del seguimiento de pila máximo es 16. Si desea ver más pilas de llamadas, puede aumentar esta ejecutando GFLAGS. Haga clic para seleccionar el Registro del sistemay, a continuación, escriba una nueva profundidad en el máximo de . Profundidad de captura de seguimiento de la pila control de edición. Haga clic en Aplicary, a continuación, reinicie el equipo.
Importante: si está utilizando Windows NT 4.0 Service Pack 6, debe utilizar Umdh_nt4.exe, en lugar de Umdh.exe, y debe utilizar el Gflags - r comando para establecer el seguimiento de pila de todo el sistema. Asegúrese de que se reinicie el equipo. Seguimiento de la pila de Umdh_nt4 no funciona en cada proceso en Windows NT versión 4. Se debe establecer para todo el sistema.

Símbolos de depuración

Uno de los pasos más importantes para utilizar UMDH es asegurarse de que tiene archivos de buen símbolo (archivo DBG o .pdb) para obtener un seguimiento de pila buena. Como mínimo, necesitará los archivos de símbolos de Kernel32.dbg y Ntdll.dbg. Puede adquirir los símbolos de depuración adicionales que pueda necesitar como Averigüe más acerca de los componentes de pérdidas de memoria. Para obtener más información acerca de cómo obtener archivos de símbolos de depuración para los componentes de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
311503 Utilizar el servidor de símbolos de Microsoft para obtener archivos de símbolos de depuración
Para obtener información adicional acerca de cómo utilizar el servidor de símbolos de Microsoft y cómo obtener los paquetes de símbolos de Windows, visite el siguiente sitio Web de Microsoft:
http://www.Microsoft.com/whdc/devtools/DDK/default.mspx
Cuando se generan componentes con Visual C++, es importante que no tiene base de datos de programa para editar y continuar, selecciona las opciones del compilador de C++. En su lugar, seleccione la base de datos de programa. Para establecer la ruta de acceso del símbolo, inicialice la variable de entorno _NT_SYMBOL_PATH a la ruta de acceso que se utilizará. Puede utilizar el servidor de símbolos de Microsoft para adquirir los símbolos para los componentes de Microsoft.
311503 Utilizar el servidor de símbolos de Microsoft para obtener archivos de símbolos de depuración
Siga estos pasos para establecer la variable de entorno _NT_SYMBOL_PATH:
  1. En el Panel de Control, haga doble clic en sistema.
  2. Haga clic en la ficha Opciones avanzadas y, a continuación, haga clic en las Variables de entorno.
O bien, puede establecer la variable de entorno _NT_SYMBOL_PATH en una ventana de comandos antes de ejecutar UMDH.

Nota: también incluir la ruta de acceso a PDB para los componentes de la aplicación. Por ejemplo, establecer la ruta de acceso para _NT_SYMBOL_PATH lo siguiente:
SRV * c:\symbols* http://msdl.microsoft.com/download/symbols;c: \myapplicationssymbols
La primera parte de esta ruta de acceso señala al servidor de símbolos de Microsoft y Estados que se descargarán los símbolos que se utilizan en la carpeta c:\symbols. La parte que sigue el punto y coma es la ruta de acceso a los archivos PDB (archivos de símbolos) específicamente para la aplicación de la filtración.

Invocar UMDH

El único parámetro de línea de comandos necesario para UMDH es la opción -p , que especifica el PID del proceso del que se obtendrá un volcado del montón. El PID puede obtenerse mediante el Administrador de tareas o el programa Tlist.exe. Para un comando similar a la siguiente, el registro se volcarán en la salida estándar:
Umdh - p: PID
UMDH también muestra varios mensajes informativos en el error estándar y, por tanto, si no se redirija, se mezcla con el registro real. Para recopilar los mensajes informativos de UMDH en un archivo, utilice el siguiente comando:
Umdh - p: 2>umdh.msg PID
Si desea recopilar el registro en el que se vuelca por UMDH en un archivo, utilice uno de los siguientes comandos:
Umdh - p: PID > umdh.log
- o -
Umdh - p: PID-f:umdh.log
Estos comandos son equivalentes.

El registro predeterminado que se obtiene al UMDH contiene una enumeración de los consumidores de montón que se ordenan por la cuenta de asignación. Si, con fines de depuración, también necesita un archivo de volcado de todos los bloques asignados con sus correspondientes seguimientos de la pila, puede utilizarse la opción -d :
Umdh - p: PID -d
Si utiliza este comando, verá lo siguiente en el archivo de registro UMDH:
Asignaciones de traza BackTrace00046: 005F69A0 005F6150
Estas son las direcciones de memoria de las asignaciones para que la pila de llamadas. Si el depurador está asociado al proceso, se puede volcar el contenido de la memoria en estas direcciones para ver lo que se ha asignado.

Si el registro contiene demasiada información, puede ser limitada sólo a los usuarios grandes que la asignación de la cuenta por encima de un umbral determinado. Utilice el siguiente comando:
Umdh - p: PID - t: umbral
Todas las opciones de línea de comandos (por ejemplo, -p-f-t, -d) se pueden especificar simultáneamente en cualquier orden. El siguiente es un ejemplo de línea de comandos más difícil:
Umdh - p: 123 - t: 1000 - f:umdh.log -d
Este comando vuelca los montones para el proceso cuyo PID sea 123 en el archivo Umdh.log. Vuelca sólo trazas de pila que cuenta de más de 1000 asignaciones y también vuelca las direcciones de bloques del montón que se asignan a través del seguimiento de la pila.

Otra opción útil de UMDH es la opción -l . Esto hace el archivo y los números que se imprimirán en la pila de llamadas, siempre que sea posible.

Explicado del resultado de UMDH

Si el registro se le redirige a un archivo (umdh - p: PID-f:umdh.log), el contenido es similar a los siguientes, que se ha obtenido de un proceso en ejecución el Bloc de notas:
UMDH: Logtime 2000-06-28 10:54 - Machine=MYMachine - PID=704
   *********** Heap 00270000 Information ********************
       Flags: 58000062
       Number Of Entries: 87
       Number Of Tags: <unknown>
       Bytes Allocated: 00008DF0
       Bytes Committed: 0000A000
       Total FreeSpace: 00001210
       Number of Virtual Address chunks used: 1
       Address Space Used: <unknown>
       Entry Overhead: 8
       Creator:  (Backtrace00007)
           ntdll!RtlDebugCreateHeap+0x00000196
           ntdll!RtlCreateHeap+0x0000023F
           ntdll!LdrpInitializeProcess+0x00000369
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007
   *********** Heap 00270000 Hogs ********************
   000001A0 bytes in 0x4 allocations (@ 0x00000068) by: BackTrace00031
           ntdll!RtlDebugAllocateHeap+0x000000FB
           ntdll!RtlAllocateHeapSlowly+0x0000005B
           ntdll!RtlAllocateHeap+0x00000D81
           ntdll!LdrpAllocateDataTableEntry+0x00000039
           ntdll!LdrpMapDll+0x000002A4
           ntdll!LdrpLoadImportModule+0x0000010D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpInitializeProcess+0x000009DC
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007

   000001A0 bytes in 0x4 allocations (@ 0x00000068) by: BackTrace00034
           ntdll!RtlDebugAllocateHeap+0x000000FB
           ntdll!RtlAllocateHeapSlowly+0x0000005B
           ntdll!RtlAllocateHeap+0x00000D81
           ntdll!LdrpAllocateDataTableEntry+0x00000039
           ntdll!LdrpMapDll+0x000002A4
           ntdll!LdrpLoadImportModule+0x0000010D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpInitializeProcess+0x000009DC
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007
				
El registro contiene un volcado de cada montón en el proceso. En este ejemplo, el registro se inicia con un montón en la dirección 270000. Después de unos contadores globales para el montón, el registro contiene un volcado por orden decreciente de seguimientos de la pila que son responsables de las mayoría de asignaciones. Al comparar la dinámica de la memoria que se utilizan en diferentes momentos, puede deducir qué ha sucedido en el proceso y si cualquier uso del montón es similar a una pérdida.

Problemas que pueden surgir al utilizar UMDH

Los errores más comunes al utilizar UMDH se producen porque no está habilitado el seguimiento de la pila. Además, símbolos incorrectos para Ntdll.dll evite UMDH ejecutar. Para los archivos de símbolos, UMDH se ejecuta, pero el archivo de registro contiene trazas de pila que no tienen nombres de función, pero en su lugar tienen direcciones relativas dentro de módulos. Especifica un PID erróneo en un distante tercer error. El siguiente mensaje de error se produce cuando se intenta ejecutar UMDH para un proceso que no tiene habilitado el seguimiento de pila:
C:\>Umdh - p: UMDH 1140: Logtime 2000-06-28 12:43 - Machine = MiEquipo - PID = 1140 conectando...Enumeración de módulo completo. SymGetSymFromName (proceso, ntdll!RtlpStackTraceDataBase, xxx) error LastError = 126 UmdhGetAddrFromName no se pudo encontrar el puntero de la base de datos de seguimiento de pila (ntdll!RtlpStackTraceDataBase). símbolos de Ntdll.dll son incorrectos; debemos ver no importar símbolos.
Utilice el siguiente comando para comprobar la configuración para el proceso que se está investigando:
Gflags -i APPNAME
Cuando confía en el seguimiento de pila de todo el sistema, utilice el siguiente comando:
Gflags - r
Estos comandos muestran la lista de los indicadores establecidos para la aplicación. Tenga en cuenta que en el caso de seguimiento de la pila de todo el sistema, la característica puede aparecer como activa pero si no se reinició el equipo después de ejecutar el comando gflags r + sólo , no se activa realmente. Si desea conocer todas las aplicaciones que tiene habilitado el seguimiento de pila, puede ver la clave de USTEnabled bajo la siguiente clave del registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Si ejecuta UMDH en un proceso que tiene habilitado el seguimiento de pila, pero no ha reiniciado la aplicación desde que se establecen los indicadores, puede aparecer el siguiente mensaje en los registros:
No se ha guardado un seguimiento de pila para esta asignación (índice == 0)
Si ejecuta no establecer la ruta de acceso o los símbolos son incorrectos y ejecuta UMDH, recibirá un mensaje de error en el registro. Sin embargo, sólo puede recibir decorados incorrecta o engañosa. Para comprobar que tiene los símbolos correctos, iniciar al depurador del sistema NTSD para un proceso, por ejemplo:
Bloc de notas de NTSD
A continuación, desde la consola del depurador, ejecute el comando LD para cargar la información de símbolos para el módulo y el comando de LM para ver qué módulos tienen sus símbolos cargados. Si el resultado del comando LM muestra símbolos de exportación cargados, los símbolos no son buenos. Si tiene símbolos PDB cargados, los símbolos son buenos. Si especifica el PID erróneo, puede aparecer el siguiente mensaje de error:
C:\>Umdh - p: UMDH 1000: Logtime 2000-06-28 09:45 - Machine = MiEquipo - PID = 1000 conectando... Error de OpenProcess, LastError = solo

Llame a UMDH desde Visual Basic

Puede ser útil a veces volcar un número de registros con el tiempo debido a la pérdida no puede ser muy notable en primer lugar. Por ejemplo, si sospecha que la aplicación Web de páginas Active Server (ASP) es una pérdida de memoria, puede ser útil escribir un componente COM de Visual Basic eso cáscaras en UMDH. Puede llamar entonces ese componente desde la página ASP.

Lo siguiente es cierto código de Visual Basic que llama a UMDH y crea un archivo de registro se basa en la hora actual:
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
      Public Function GetProcessID()
      GetProcessID = GetCurrentProcessId()
      End Function  
   .
   .
   .
      Dim strTime As String

      Dim sProcID As String
      sProcID = GetProcessID()
      strTime = "MYLOG_" & Format(Now(), "hhmm")
     
      Shell ("C:\UMDH\umdh -p:" & sProcID & " -f:d:\logs\" & strTime & ".txt")
				

Utilice UMDH con Windows NT 4.0 Service Pack 6a (SP6a)

La utilidad UMDH que se incluye con los productos de herramientas de depuración para Windows no funciona en Windows NT 4.0. Un archivo ejecutable autoextraíble (Umdhnt4tools.exe) se incluye en este artículo y contiene las siguientes herramientas para su uso con NT 4.0:
  • Umdh_nt4.exe y Dbghelp.dll
    Ésta es la versión de Windows NT 4.0 SP6 de la utilidad UMDH.
  • Dhcmp.exe
    Esta utilidad se utiliza para comparar dos UMDHdumps para determinar donde una memoria posible pérdida se produce.
El siguiente archivo está disponible para su descarga desde el centro de descarga de Microsoft:
Contraer esta imagenAmpliar esta imagen
Descargar
Descargar Umdhnt4tools.exe ahora
Fecha de publicación: 28 de agosto de 2002

Para obtener más información acerca de cómo descargar los archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591 Cómo obtener archivos de soporte de Microsoft de los servicios en línea
Microsoft exploró este archivo en busca de virus. Microsoft ha utilizado el software de detección de virus más reciente disponible en la fecha en que se ha registrado el archivo. El archivo se almacena en los servidores de seguridad mejorada que le ayudan a evitar cambios no autorizados en el archivo. Poner Umdh_nt4.exe y Dbghelp.dll en una carpeta y colocarlos en primer lugar en la variable de entorno PATH. Utilice Umdh_nt4.exe en lugar de UMDH.

En un equipo que ejecuta Windows NT 4.0, debe utilizar Gflags.exe para establecer el seguimiento de pila de todo el sistema. Por ejemplo:
Gflags - r
Asegúrese de que se reinicie el equipo. Seguimiento de la pila de Umdh_nt4 no funciona en una base por proceso en Windows NT versión 4.0. Se establece para todo el sistema.

UMDH_NT4 es como UMDH de no compara los archivos de registro. Por ejemplo, no puede hacer lo siguiente:
UMDH_NT4 dh1.log dh2.log &gt; cmp12.txt
En su lugar debe utilizar la utilidad Dhcmp.exe que se incluye con este artículo. El comando tiene un aspecto similar al siguiente:
DHCMP dh1.log dh2.log &gt; cmp12.txt

Propiedades

Id. de artículo: 268343 - Última revisión: jueves, 6 de febrero de 2014 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
Palabras clave: 
kbdownload kbarttypeshowme kbfile kbgraphxlinkcritical kbhowto kbsample kbmt KB268343 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 268343

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com