Referencia de código de volcado en vivo de kernel
Esta sección contiene descripciones de los códigos comunes de volcado activo del kernel que pueden producirse. Los volcados en vivo no restablecen el sistema operativo, pero permiten la captura de información de memoria en situaciones anómalas en las que el sistema operativo puede continuar.
Nota
Este tema está destinado a los programadores. Si es un cliente cuyo sistema ha mostrado una pantalla azul con un código de comprobación de errores, consulte Solución de errores de pantalla azul.
Volcado activo del kernel en comparación con la comprobación de errores
Con una comprobación de errores tradicional, el equipo se restablece y el trabajo del usuario se interrumpe. El objetivo del volcado en vivo del kernel es recopilar datos para solucionar problemas en una situación anómala, pero permitir que el sistema operativo continúe con la operación. Esto reduce el tiempo de inactividad en comparación con una comprobación de errores para "errores no irrecuperables", pero errores de alto impacto y bloqueos. Los volcados en vivo del kernel se usan cuando es posible recuperar el sistema operativo a un estado correcto conocido. Por ejemplo, un restablecimiento de hardware de un subsistema, como vídeo/pantalla, USB3 o Wi-Fi puede permitir que esos sistemas vuelvan a un estado correcto conocido, con un impacto mínimo en el usuario.
Un volcado en vivo de kernel crea una instantánea coherente de la memoria del kernel y la guarda en un archivo de volcado para el análisis futuro. Para minimizar el impacto en el rendimiento, se usan técnicas de copia de memoria para crear el archivo de volcado en un breve período de tiempo. Además, se limita la recopilación de volcados dinámicos, de modo que se minimice el impacto del usuario.
Un volcado en vivo de kernel es eficaz para una categoría de problemas en los que algo tarda mucho tiempo y, sin embargo, no se produce ningún error técnico. Un temporizador de guardián se puede inicializar cuando se inicia una operación. Si el guardián expira antes de que se complete la operación con en el tiempo esperado, se puede tomar un volcado en vivo del sistema. A continuación, el volcado se puede analizar mediante el recorrido de la pila de llamadas y la cadena de espera relacionada para esa operación para investigar por qué no se completa con el período de tiempo esperado.
Los registros del sistema funcionan bien cuando se produce un error y el propietario del código ha registrado la causa del error y puede identificar la causa. Los volcados en directo que usan temporizadores de guardián intentan detectar rutas de acceso de error que no se anticipó y registraron. Pero al igual que con cada error, los registros del sistema pueden identificar otros problemas que pueden proporcionar pistas sobre la causa principal específica del error.
Contenido del archivo de volcado en vivo del kernel
De forma similar a los archivos de volcado normales, los archivos de volcado en vivo pueden contener minivolcados de memoria (con datos secundarios) y volcados de kernel completos, que también pueden incluir memoria en modo de usuario, similar a volcados activos. Para obtener información general sobre el contenido del archivo de volcado, vea Variedades de Kernel-Mode Archivos de volcado de memoria. Algunos volcados en vivo solo intentan capturar minivolcados, ya que están diseñados para capturar datos específicos relacionados con el hardware, mientras que otros pueden intentar capturar un volcado en vivo de kernel más grande.
Para el rendimiento, el tamaño de archivo y la confiabilidad de las capturas de volcado de memoria, no se incluye información, como páginas de la lista independiente y las memorias caché de archivos.
Los archivos de volcado de memoria normalmente contienen páginas de memoria como:
- KdDebuggerBlock
- Lista de módulos cargados
Para cada procesador se captura la siguiente información en volcados de kernel:
- KiProcessorBlock
- PRCB
- Pila actual
- Tabla de directorios de página actual
- KI_USER_SHARED_DATA
- Imagen del kernel de NTOS
- Imagen HAL
Puede incluir información adicional en volcados de kernel:
- Estado de subproceso y memoria
- Registro en memoria
Algunos volcados en vivo pueden contener páginas de proceso en modo de usuario.
Se pueden incluir datos específicos de dominio adicionales, por ejemplo, datos específicos de USB para errores USB para algunos volcados en directo.
Archivo de volcado en vivo de kernel parcial
Se puede generar un archivo de volcado en vivo de kernel parcial en situaciones en las que el volcado de memoria activo no puede capturar de forma confiable todas las páginas de memoria deseadas. La información que se captura en un volcado parcial se filtra y da prioridad, mediante la captura de páginas que contienen datos importantes necesarios para generar un volcado válido antes de otras páginas. Por ejemplo, las páginas del kernel se priorizan por encima de las páginas de usuario, cuando el volcado en directo incluye páginas de usuario. En algunas situaciones no hay suficientes recursos disponibles para capturar todas las páginas de memoria opcionales previstas, por lo que es posible que falte memoria en el archivo de volcado. El depurador de WinDbg todavía debe reconocer el archivo de volcado de memoria, pero puede mostrar errores al intentar volcar memoria. Si el depurador muestra un error al intentar volcar memoria en una dirección, puede usar la extensión !pte para comprobar si el PTE de una dirección es válido o no. Esto puede ayudar a determinar si la dirección de memoria no es realmente válida o si la página es válida pero no está disponible en el archivo de volcado de memoria.
Análisis de archivos de volcado en vivo
Cuando se produce un volcado en vivo, el archivo de volcado de memoria se puede analizar con las mismas técnicas que se usan para otros archivos de volcado de memoria. Para comprender el contenido de la memoria durante un error, se requiere el conocimiento de los registros de memoria del procesador y la programación de ensamblados.
Para más información, consulte:
Uso de WinDbg para mostrar la información del código de detención del volcado en directo
Si un código de volcado en vivo específico no aparece en este tema, use la extensión !analyze en el Depurador de Windows (WinDbg) con la siguiente sintaxis (en modo kernel), reemplazando por <code>
un código de volcado en vivo:
!analyze -show <code>
Al escribir este comando, WinDbg muestra información sobre el código de volcado activo especificado. Si el número predeterminado base (radix) no es 16, prefijo <code>
con 0x.
Proporcione los parámetros de código de volcado en vivo al comando !analyze para mostrar cualquier información de parámetro disponible. Por ejemplo, para mostrar información sobre la comprobación de errores 0x144 BUGCODE_USB3_DRIVER, con un valor de parámetro 1 de 0x3003, use !analyze -show 0x144 0x3003
como se muestra aquí.
0: kd> !analyze -show 0x144 0x3003
BUGCODE_USB3_DRIVER (144)
This bugcheck usually happens when the USB3 core stack detects an invalid
operation being performed by a USB client. This bugcheck may also occur
due to hardware failure on a USB Boot Device.
Arguments:
Arg1: 0000000000003003, USB3_WER_BUGCODE_USBHUB3_DEVICE_ENUMERATION_FAILURE
A USB device failed enumeration.
Arg2: 0000000000000000, USBHUB3_LIVEDUMP_CONTEXT
Arg3: 0000000000000000, 0
Arg4: 0000000000000000, 0
Para descargar WinDbg, consulte Herramientas de depuración para Windows. Para obtener más información sobre las herramientas de desarrollo de WinDbg, consulte Introducción con la depuración de Windows.
Ubicaciones de archivos de volcado en vivo
Los volcados en vivo se almacenan de forma predeterminada en el directorio "C:\WINDOWS\LiveKernelReports".
Volcados completos: %systemroot%\LiveKernelReports\*.dmp
Minivolcados: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp
Una estructura de directorios se usa para almacenar volcados en vivo para distintos componentes.
NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG
Claves del Registro de volcado en vivo
Para obtener más información sobre las opciones de configuración de los informes de kernel dinámicos generados por el sistema, consulte Configuración de WER.
Uso de PowerShell para desencadenar manualmente un volcado en vivo
Abra y el símbolo del sistema de PowerShell del administrador.
Obtenga el nombre descriptivo storageSubsystem mediante el comando Get-StorageSubSystem de PowerShell.
C:\> Get-StorageSubSystem
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Windows Storage on 10-2411-PC Healthy OK
- Use Get-StorageDiagnosticInfo para generar un volcado en vivo para el subsistema anterior (junto con otros registros de diagnóstico). Para más información, consulte Get-StorageDiagnosticInfo.
C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
- La salida indicará que se está generando la información solicitada.
Gathering storage subsystem diagnostic information
Running
[oooooooooooo ]
- El volcado de memoria estará dentro
[DestinationPath]\localhost
de .
C:\> dir C:\destinationfolder\localhost\*.dmp
Directory: C:\destinationfolder\localhost
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/5/2016 1:08 PM 867135488 LiveDump.dmp
- El uso del depurador para ejecutar !analyze en el archivo de volcado de memoria indicará que se trata de un código de volcado activo de LIVE_SYSTEM_DUMP (161).
Códigos de volcado en vivo del kernel
En la tabla siguiente se proporcionan vínculos a códigos de volcado de memoria activo del kernel.
Estos códigos de detención se pueden usar para volcados en directo o para comprobar el dispositivo.
Código | Nombre |
---|---|
0x00000124 | WHEA_UNCORRECTABLE_ERROR |
0x00000144 | BUGCODE_USB3_DRIVER |
0x00000164 | WIN32K_CRITICAL_FAILURE |
Consulte también
Bug Check Code Reference (Referencia de código de comprobación de errores)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de