Episodio
Herramientas de desfragmentación n.º 167: depuración de volcados de memoria en modo de usuario Redux
En este episodio de Defrag Tools, Andrew Richards y Chad Beeder usan herramientas de depuración para Windows (WinDbg) para determinar la causa principal de varios bloqueos de aplicaciones que se han producido en el equipo de Andrew. Usamos Sysinternals ProcDump para capturar los volcados de memoria.
Durante la depuración, realizamos un recorrido lateral por la configuración de colores para archivos comprimidos y cifrados en el Explorador de Windows y usamos el Monitor de procesos de Sysinternals para determinar por qué el depurador estaba obteniendo un acceso denegado al cargar la extensión del depurador PDE.
Hicimos una investigación similar en estos dos episodios:
- Herramientas de desfragmentación n.º 135: depuración de volcados de memoria del modo de usuario, parte 1
- Herramientas de desfragmentación n.º 136: depuración de volcados de memoria del modo de usuario, parte 2
Tratamos cómo instalar las herramientas de depuración para Windows en este episodio:
Obtenga las herramientas de Sysinternals de http://www.sysinternals.com. Usamos:
Obtener la extensión del depurador de PDE desde Defrag Tools OneDrive
Obtenga la ruta de acceso del símbolo al servidor de símbolos públicos de Microsoft:
- A través de la variable de entorno
setx /m _NT_SYMBOL_PATH SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols - En el depurador
.sympath SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols
Para recopilar volcados de memoria en su propia máquina, instale ProcDump como depurador postmortem (AeDebugger):
md c:\dumps
procdump.exe -ma -i c:\dumps
En cualquier volcado de memoria (usuario o kernel), puede ejecutar análisis automatizados para ver el problema:
!analyze -v
Hoja de referencia rápida de depuración
- c0000005 es una infracción de acceso: use .ecxr & k
- c000027b es una excepción de stowed (aplicaciones de la Tienda): use !pde.dse
- e0434352 es una excepción CLR: use !sos.pe
- e0697282 es una excepción de C++: usar .ecxr & k
- 80000003 es un punto de interrupción: usar !analyze -v
- Al escribir un número decimal, prefijo "0n"
- Al escribir un número hexadecimal, prefijo "0x" (el prefijo predeterminado)
Comandos comunes del depurador
.exr -1
- Ver el código de excepción y los parámetros de excepción
- El número que se parece a C0xxxxxx y 80xxxxxx son HRESULTs (códigos de error)
- El número que parece 7FFFxxxxxxxx suele ser direcciones de código (ensamblador)
!dirección
- Mostrar la información de dirección: Commited/Reserved/Free, Image/Mapped/Private
- Se usa para determinar si un número es código o datos.
En
- Lista de direcciones más cercanas
- Muestra el símbolo en o cerca de la dirección.
- Se usa para determinar si un número es código o datos.
.ecxr
- Cambie el contexto de depuración al punto de la excepción (en lugar de estar en el contexto de Informe de errores de Windows).
r
- Vea los registros en el contexto actual. (.ecxr genera la misma salida)
k
- Ver la pila de llamadas
lmvm
- Visualización detallada del módulo cargado con una máscara
- Ver los detalles de un módulo, incluida la carpeta, la marca de tiempo, la descripción, el copyright, la versión del producto o archivo
| (Barra vertical o carácter de canalización)
- Ver la ruta de acceso del ejecutable (por ejemplo, c:\windows\notepad.exe)
!ext.error
- Obtenga la descripción de un código de error. Lo mejor es describir los códigos de error del sistema.
!pde.err
- Obtenga la descripción de un código de error. Bueno para describir HRESULTs (80xxxxxx y C0xxxxxx)
!pde.dpx
- Extrae el subproceso actual para la evidencia (símbolos, estructuras, cadenas, etc.)
.Formatos
- Muestra el número en varios formatos.
- Forma sencilla de trabajar si un número es realmente texto ASCII o una fecha y hora
!sos.pe
- Muestra una excepción CLR.
- Si hay una excepción interna, haga clic en el vínculo para verlo.
.cordll -u & .cordll -l
- Si SOS no se carga, intente realizar una descarga y carga de la compatibilidad con CLR.
!peb
- Ver el bloque de entorno de proceso (módulos, línea de comandos, variables de entorno, etc.)
!Teb
- Ver el bloque de entorno del subproceso actual (intervalo de pila, último código de error, último código de estado, etc.)
!Gle
- Obtención del último error
- Mostrar el último código de error y el último código de estado del subproceso actual
.Cls
- Borre la pantalla.
.reload
- Forzar una recarga (descarga) de símbolos para los módulos de la pila actual.
.reload /f
- Forzar una recarga completa (descarga) de símbolos para los módulos de la pila actual.
Almacenar aplicaciones
Para ver las aplicaciones de la Tienda instaladas actualmente y su versión, use:
Editor del Registro (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActiveableClasses\Package
PowerShell
En este episodio de Defrag Tools, Andrew Richards y Chad Beeder usan herramientas de depuración para Windows (WinDbg) para determinar la causa principal de varios bloqueos de aplicaciones que se han producido en el equipo de Andrew. Usamos Sysinternals ProcDump para capturar los volcados de memoria.
Durante la depuración, realizamos un recorrido lateral por la configuración de colores para archivos comprimidos y cifrados en el Explorador de Windows y usamos el Monitor de procesos de Sysinternals para determinar por qué el depurador estaba obteniendo un acceso denegado al cargar la extensión del depurador PDE.
Hicimos una investigación similar en estos dos episodios:
- Herramientas de desfragmentación n.º 135: depuración de volcados de memoria del modo de usuario, parte 1
- Herramientas de desfragmentación n.º 136: depuración de volcados de memoria del modo de usuario, parte 2
Tratamos cómo instalar las herramientas de depuración para Windows en este episodio:
Obtenga las herramientas de Sysinternals de http://www.sysinternals.com. Usamos:
Obtener la extensión del depurador de PDE desde Defrag Tools OneDrive
Obtenga la ruta de acceso del símbolo al servidor de símbolos públicos de Microsoft:
- A través de la variable de entorno
setx /m _NT_SYMBOL_PATH SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols - En el depurador
.sympath SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols
Para recopilar volcados de memoria en su propia máquina, instale ProcDump como depurador postmortem (AeDebugger):
md c:\dumps
procdump.exe -ma -i c:\dumps
En cualquier volcado de memoria (usuario o kernel), puede ejecutar análisis automatizados para ver el problema:
!analyze -v
Hoja de referencia rápida de depuración
- c0000005 es una infracción de acceso: use .ecxr & k
- c000027b es una excepción de stowed (aplicaciones de la Tienda): use !pde.dse
- e0434352 es una excepción CLR: use !sos.pe
- e0697282 es una excepción de C++: usar .ecxr & k
- 80000003 es un punto de interrupción: usar !analyze -v
- Al escribir un número decimal, prefijo "0n"
- Al escribir un número hexadecimal, prefijo "0x" (el prefijo predeterminado)
Comandos comunes del depurador
.exr -1
- Ver el código de excepción y los parámetros de excepción
- El número que se parece a C0xxxxxx y 80xxxxxx son HRESULTs (códigos de error)
- El número que parece 7FFFxxxxxxxx suele ser direcciones de código (ensamblador)
!dirección
- Mostrar la información de dirección: Commited/Reserved/Free, Image/Mapped/Private
- Se usa para determinar si un número es código o datos.
En
- Lista de direcciones más cercanas
- Muestra el símbolo en o cerca de la dirección.
- Se usa para determinar si un número es código o datos.
.ecxr
- Cambie el contexto de depuración al punto de la excepción (en lugar de estar en el contexto de Informe de errores de Windows).
r
- Vea los registros en el contexto actual. (.ecxr genera la misma salida)
k
- Ver la pila de llamadas
lmvm
- Visualización detallada del módulo cargado con una máscara
- Ver los detalles de un módulo, incluida la carpeta, la marca de tiempo, la descripción, el copyright, la versión del producto o archivo
| (Barra vertical o carácter de canalización)
- Ver la ruta de acceso del ejecutable (por ejemplo, c:\windows\notepad.exe)
!ext.error
- Obtenga la descripción de un código de error. Lo mejor es describir los códigos de error del sistema.
!pde.err
- Obtenga la descripción de un código de error. Bueno para describir HRESULTs (80xxxxxx y C0xxxxxx)
!pde.dpx
- Extrae el subproceso actual para la evidencia (símbolos, estructuras, cadenas, etc.)
.Formatos
- Muestra el número en varios formatos.
- Forma sencilla de trabajar si un número es realmente texto ASCII o una fecha y hora
!sos.pe
- Muestra una excepción CLR.
- Si hay una excepción interna, haga clic en el vínculo para verlo.
.cordll -u & .cordll -l
- Si SOS no se carga, intente realizar una descarga y carga de la compatibilidad con CLR.
!peb
- Ver el bloque de entorno de proceso (módulos, línea de comandos, variables de entorno, etc.)
!Teb
- Ver el bloque de entorno del subproceso actual (intervalo de pila, último código de error, último código de estado, etc.)
!Gle
- Obtención del último error
- Mostrar el último código de error y el último código de estado del subproceso actual
.Cls
- Borre la pantalla.
.reload
- Forzar una recarga (descarga) de símbolos para los módulos de la pila actual.
.reload /f
- Forzar una recarga completa (descarga) de símbolos para los módulos de la pila actual.
Almacenar aplicaciones
Para ver las aplicaciones de la Tienda instaladas actualmente y su versión, use:
Editor del Registro (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActiveableClasses\Package
PowerShell
¿Quiere hacer algún comentario? Comunique un problema aquí.