Preparación para usar UMDH
Debe completar las tareas de configuración descritas en esta sección antes de usar el montón de volcado de modo de usuario (UMDH) para capturar las asignaciones del montón de montón para un proceso. Si el equipo no está configurado correctamente, UMDH no generará ningún resultado o los resultados serán incompletos o incorrectos.
Creación de la base de datos de seguimiento de pila en modo de usuario
Antes de usar UMDH para capturar las asignaciones del montón de un proceso, debe configurar Windows para capturar seguimientos de pila.
Para habilitar la captura de seguimiento de pila para un proceso, use GFlags para establecer la marca crear base de datos de seguimiento de pila en modo de usuario para el proceso. Esto se puede hacer mediante cualquiera de los métodos siguientes:
En la interfaz gráfica GFlags, elija la pestaña Archivo de imagen. Escriba el nombre del proceso, incluida la extensión de nombre de archivo (por ejemplo, Notepad.exe). Presione la tecla TAB , seleccione Crear base de datos de seguimiento de pila en modo de usuario y, a continuación, seleccione Aplicar.
O bien, de forma equivalente, use la siguiente línea de comandos de GFlags, donde ImageName es el nombre del proceso (incluida la extensión de nombre de archivo):
gflags /i ImageName +ust
De forma predeterminada, la cantidad de datos de seguimiento de pila que Recopila Windows está limitado a 32 MB en un procesador x86 y 64 MB en un procesador x64. Si debe aumentar el tamaño de esta base de datos, elija la pestaña Archivo de imagen de la interfaz gráfica GFlags, escriba el nombre del proceso, presione la tecla TAB , active la casilla Stack Backtrace (Megs), escriba un valor (en MB) en el cuadro de texto asociado y, a continuación, seleccione Aplicar.
Nota Aumente esta base de datos solo cuando sea necesario, ya que puede agotar los recursos limitados de Windows. Cuando ya no necesite el tamaño mayor, devuelva esta configuración a su valor original.
Esta configuración afecta a todas las nuevas instancias del programa. No afecta a las instancias actualmente en ejecución del programa.
Obtener acceso a los símbolos necesarios
Antes de usar UMDH, debe tener acceso a los símbolos adecuados para la aplicación. UMDH usa la ruta de acceso de símbolo especificada por la variable de entorno _NT_SYMBOL_PATH. Establezca esta variable igual a una ruta de acceso que contenga los símbolos de la aplicación.
Si también incluye una ruta de acceso a símbolos de Windows, el análisis puede ser más completo. La sintaxis de esta ruta de acceso de símbolo es la misma que la usada por el depurador; para obtener más información, consulte Ruta de acceso de símbolos.
Por ejemplo, si los símbolos de la aplicación se encuentran en C:\MyApp\Symbols y ha instalado los archivos de símbolos de Windows en \\myshare\winsymbols, usaría el siguiente comando para establecer la ruta de acceso del símbolo:
set _NT_SYMBOL_PATH=c:\myapp\symbols;\\myshare\winsymbols
Como otro ejemplo, si los símbolos de la aplicación se encuentran en C:\MyApp\Symbols y quiere usar el almacén de símbolos públicos de Microsoft para los símbolos de Windows, con C:\MyCache como almacén de bajada, usaría el siguiente comando para establecer la ruta de acceso del símbolo:
set _NT_SYMBOL_PATH=c:\myapp\symbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols
Importante 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.
Deshabilitar el almacenamiento en caché de BSTR
Automation (anteriormente conocido como Automatización OLE) almacena en caché la memoria que usan las cadenas BSTR. Esto puede impedir que UMDH determine correctamente el propietario de una asignación de memoria. Para evitar este problema, debe deshabilitar el almacenamiento en caché de BSTR.
Para deshabilitar el almacenamiento en caché de BSTR, establezca la variable de entorno OANOCACHE igual a una (1). Esta configuración debe realizarse antes de iniciar la aplicación cuyas asignaciones se van a rastrear.
Como alternativa, puede deshabilitar el almacenamiento en caché de BSTR desde la propia aplicación llamando a la función SetNoOaCache de .NET Framework. Si elige este método, debe llamar a esta función al principio, ya que las asignaciones de BSTR que ya se han almacenado en caché cuando se llama a SetNoOaCache permanecerán en caché.
Si necesita realizar un seguimiento de las asignaciones realizadas por un servicio, debe establecer OANOCACHE como una variable de entorno del sistema y, a continuación, reiniciar Windows para que esta configuración surta efecto.
Buscar el identificador de proceso
UMDH identifica el proceso por su identificador de proceso (PID). Puede encontrar el PID de cualquier proceso en ejecución mediante el Administrador de tareas, tasklist o TList.