Cómo habilitar el rastreo de depuración detallado en diversos controladores y subsistemas

Resumen

Al depurar controladores de dispositivo, es importante que recibe el rastreo de depuración detallado de los controladores y subsistemas relacionados.

La mayoría de los controladores proporcionados por Microsoft y subsistemas utiliza variables globales y un conjunto de valores predefinidos para controlar el nivel de detalle de la información de seguimiento de depuración que se envía al depurador.

En este artículo se describe los siguientes temas:
  • Cómo habilitar y controlar el nivel de seguimiento de depuración utilizando un kernel debugger y registro.
  • Para una determinada clase de controladores, puede utilizar las extensiones de depurador correspondiente para habilitar y controlar el seguimiento de depuración.
  • Las diferencias entre lo que permite depuración seguimiento en Windows 2000 y Windows XP.

Más información

Importante: Este artículo contiene información sobre cómo ejecutar archivos .chk para desarrollo y pruebas. Servicios de soporte técnico de Microsoft (PSS) no admite los sistemas de producción que tienen archivos .chk instalados a menos que se les PSS para instalar los archivos .chk para aislar un problema. Antes de instalar los archivos .chk en un sistema de producción, asegúrese de hacer copia de seguridad del sistema y asegúrese de que comprende cómo restaurar el archivo reemplazado si se produce un problema.

Para obtener más información acerca de los archivos .chk, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

103659 el programa de instalación se bloquea al inspeccionar el hardware; cómo utilizar Ntdetect.com

320040 cómo utilizar Ntdetect.chk para identificar problemas de hardware en Windows 2000

Para obtener información acerca de cómo hacer copia de seguridad y restaurar el sistema, ve el soporte y la Ayuda de Windows 2000. Para obtener más información acerca de NTbackups, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

240363 cómo utilizar el programa copia de seguridad para hacer copia de seguridad y restaurar el estado del sistema en Windows 2000

También puede ponerse en contacto con su proveedor de copia de seguridad del producto para obtener información sobre cómo usar su producto.


Nota: La siguiente información de depuración está sujeta a cambios en cualquier momento y sólo está pensada para propósitos de depuración de controlador. También tenga en cuenta que la información de depuración puede no ser particularmente útil para nadie distinto de los desarrolladores.

Depuración de minipuerto de vídeo

Tenga en cuenta lo siguiente acerca de la depuración de minipuerto de vídeo:
  • Requiere controladores de puerto y minipuerto de vídeo compilación comprobada.
  • No utiliza una extensión de depurador.
  • Permite el rastreo de depuración estableciendo la variable global (o variables).
  • Nombres de variables en Windows 2000 son diferentes de los de Windows XP.
  • En Windows 2000, puede habilitar la depuración de seguimiento mediante el registro o el depurador, como sigue:
    • Establecer el valor de VideoDebugLevel (0-3) en el registro de la siguiente manera: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DriverName\DeviceN VideoDebugLevel:REG_DWORD: 2
    • O a través del depurador, como sigue:
      ¡videoprt ED! VideoDebugLevel 2
  • El puerto de vídeo en un equipo basado en Windows XP se utiliza el nuevo DbgPrintEx función (consulte la sección "Notas" de este artículo).

    Se definen las variables siguientes para los controladores de vídeo:
    Kd_IHVVIDEO_Mask
    Kd_VIDEO_Mask
    Kd_VIDEOPRT_Mask
    Para establecer una máscara, haga lo siguiente:
    • Agregar la máscara que desee en el registro. Por ejemplo: filtro de impresión HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug "IHVVIDEO" = DWORD: 0xffffffff
    • O en el depurador, como sigue:
      Ed Kd_IHVVIDEO_Mask 0xffffffff

depuración 1394

Tenga en cuenta lo siguiente sobre depuración 1394:
  • Requiere un sistema de compilación comprobada o comprueban los módulos de generación 1394.
  • En Windows 2000 y sistemas basados en Windows XP, establezca la variable global correspondiente a través del depurador. Por ejemplo:
    Ed ohci1394! ohcidebuglevel 6
    Nombre del móduloSímbolos de depuraciónIntervalo
    OHCI1394.SYSohcidebuglevel1-6
    SBP2PORT.SYSsbp2debuglevel1-4
    1394BUS.SYSbusdebuglevel1-5
    Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

    259855 cómo habilitar depuración imprime en controladores IEEE 1394

Depuración USB

Tenga en cuenta lo siguiente acerca de la depuración de bus serie universal (USB):
  • Requiere un sistema de compilación comprobado o módulos USB de compilación comprobados.
  • En un sistema basado en Windows 2000, debe establecer la variable global correspondiente a través del depurador. Por ejemplo:
    Ed USBD! USBD_Debug_Trace_Level 2
    Nombre del móduloSímbolos de depuraciónIntervalo
    UHCD.SYSUHCD_Debug_Trace_Level0-2
    OPENHCI.SYSOHCI_Debug_Trace_Level0-2
    USBHUB.SYSUSBH_Debug_Trace_Level0-3
    USBD.SYSUSBD_Debug_Trace_Level0-3
  • Utilice los siguientes parámetros en un sistema basado en Windows XP.
    Nombre del móduloSímbolos de depuraciónIntervalo
    USBPORT.SYSUSBPORT_Debug_Trace_Level0-4
    USBCCGP.SYSDbgVerbose0 ó 1
    USBHUB.SYSUSBH_Debug_Trace_Level0-3
    USBD.SYSUSBD_Debug_Trace_Level0-3
    USBPORT.SYSUSBPORT_CatcTrapEnable0-1
  • Todos los controladores de minipuerto USB utilizan USBPORT para el resultado de la depuración.

Depuración de PCI

Tenga en cuenta lo siguiente acerca de la depuración de interconexión de componentes periféricos (PCI, Peripheral Component Interconnect):
  • Requiere una compilación comprobada PCI o un sistema de compilación comprobada. Módulo SYS.
  • En Windows 2000 y sistemas basados en Windows XP, establezca la variable global correspondiente a través del depurador. Por ejemplo (con 0 x 3 siendo el más detallado:
    ¡Ed PCI! PciDebug 0 x 3
    Nombre del móduloSímbolos de depuraciónIntervalo
    PCI.SYSPciDebug 0-3 

Depuración de PCMCIA

Tenga en cuenta lo siguiente acerca de la depuración de PCMCIA:
  • Requiere un sistema de compilación comprobada o un módulo de pcmcia de compilación comprobada.
  • En Windows 2000 y sistemas basados en Windows XP, establezca la variable global correspondiente a través del depurador. Por ejemplo
    ¡Ed PCMCIA! PcmciaDebugMask 0xFFFFFFFF
    donde:
    #define PCMCIA_DEBUG_ALL       0xFFFFFFFF#define PCMCIA_DEBUG_TUPLES    0x00000001
    #define PCMCIA_DEBUG_ENABLE 0x00000002
    #define PCMCIA_DEBUG_PARSE 0x00000004
    #define PCMCIA_DUMP_CONFIG 0x00000008
    #define PCMCIA_DEBUG_INFO 0x00000010
    #define PCMCIA_DEBUG_IOCTL 0x00000020
    #define PCMCIA_DEBUG_DPC 0x00000040
    #define PCMCIA_DEBUG_ISR 0x00000080
    #define PCMCIA_DEBUG_CANCEL 0x00000100
    #define PCMCIA_DUMP_SOCKET 0x00000200
    #define PCMCIA_READ_TUPLE 0x00000400
    #define PCMCIA_SEARCH_PCI 0x00000800
    #define PCMCIA_DEBUG_FAIL 0x00008000
    #define PCMCIA_PCCARD_READY 0x00010000
    #define PCMCIA_DEBUG_DETECT 0x00020000
    #define PCMCIA_COUNTERS 0x00040000
    #define PCMCIA_DEBUG_OVERRIDES 0x00080000
    #define PCMCIA_DEBUG_IRQMASK 0x00100000

    Nombre del móduloSímbolos de depuraciónIntervalo
    PCMCIA.SYSPcmciaDebugMask 0–FFFFFFFF 

Depuración de NDIS

Tenga en cuenta lo siguiente sobre depuración de especificación (NDIS) de la interfaz de controlador de red:
  • Depuración de NDIS requiere una compilación comprobada de NDIS.

Depuración de controlador de almacenamiento

Tenga en cuenta lo siguiente sobre depuración de controlador de almacenamiento:
  • Requiere un sistema de compilación comprobada o comprueban los módulos de almacenamiento de información de generación. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

    296225 cómo SCSIPORT de habilitar el registro de depuración

Depuración de controlador de impresora

Tenga en cuenta lo siguiente sobre depuración de controlador de impresora.

Modo de usuario

  • Requiere un sistema de compilación comprobada o componentes de controlador de impresora de compilación comprobada (unidrv o pscript).
  • Adjuntar a la aplicación de impresión o el proceso de cola de impresión (spoolsv.exe), dependiendo de si está depurando el módulo de interfaz de usuario o en el módulo de procesamiento.
  • Para depurar Unidrv, use la siguiente configuración:
    Ed unidrv! giDebugLevel 1

Modo de núcleo

  • Ejecute el comando gflags y, a continuación, habilite el siguiente indicador en spoolsv.exe:
    • Windows 2000: "lugar asignación en el montón al final de las páginas"
    • Windows XP: "Habilitar PageHeap"
  • Reinicie la cola de impresión (spooler net stop/start).
  • Ejecutar verifier.exe en Win32K.sys para depurar el controlador de impresora.

Depuración de controlador de sonido

Tenga en cuenta lo siguiente sobre depuración de controlador de audio:
  • Requiere un sistema de compilación comprobada o comprueban los módulos de audio de generación.
  • En Windows 2000 y sistemas basados en Windows XP, establezca la variable global correspondiente a través del depurador. Por ejemplo:
    ¡Ed USBAUDIO! USBAudioDebugLevel 3
    Nombre del móduloSímbolos de depuraciónIntervalo
    USBAUDIO.SYSUSBAudioDebugLevel0-3
    SYSAUDIO.SYSSYSAUDIOTraceLevel0-100

Depuración de controlador HID

Tenga en cuenta lo siguiente sobre depuración de controlador HID:
  • Requiere un sistema de compilación comprobada o comprueban los módulos de generación HID.
  • En Windows 2000 y sistemas basados en Windows XP, establezca la variable global correspondiente a través del depurador. Por ejemplo:
    Ed HIDCLASS! dbgverbose 1
    Nombre del móduloSímbolos de depuraciónIntervalo
    HIDUSB.SYSHIDUSB_DebugLevel0-1
    HIDCLASS.SYSdbgverbose0-1

Controlador serie de depuración

Tenga en cuenta lo siguiente sobre depuración de controlador serie:
  • Requiere un sistema de compilación comprobada o comprueban los módulos de generación de serie.
  • Serial.sys (en Windows 2000 y sistemas basados en Windows XP):
    • Establezca el valor de DebugLevel en el registro, como sigue:
      HKLM\System\CurrentControlSet\Services\Serial “DebugLevel”= REG_DWORD:0xFFFFFFFF
      O establecer a través del depurador, como sigue:
      Ed serie! SerialDebugLevel (0 x 00000000: 0xFFFFFFFF)
    • Se definen los valores de la máscara en el directorio siguiente:
      %DDKROOT%\src\kernel\serial\serial.h
  • Serenum.sys (en Windows 2000 y sistemas basados en Windows XP):
    • Establezca el valor de DebugLevel en el registro, como sigue:
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Serenum “DebugLevel”= REG_DWORD:1FF
    • Se definen los valores de la máscara en el directorio siguiente:
      %DDKROOT%\src\kernel\serenum\serenum.h

Depuración de controlador de módem

Para habilitar completo unimodem detallado de depuración en Windows 2000 y sistemas basados en Windows XP, debe tener una compilación comprobada y, a continuación, haga lo siguiente:
  1. Para todo excepto Mdminst.dll y Unimdm.tsp, agregue las siguientes claves del registro:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Unimodem "DebugFlags"=dword:0000003f
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon "SFCDisable"=dword:00000001
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Modem "DebugFlags"=dword:0000003f
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Modemcsa "DebugFlags"=dword:0000003f
  2. Para Mdminst.dll, copie Unimdm.ini en
    % windir %. El siguiente es un ejemplo de un archivo de Unimdm.ini:
    [ModemUI]; DumpFlags:
    ; 00000001 DCB
    ; 00000002 MODEMSETTINGS
    ; 00000004 DEVCAPS
    DumpFlags=0x0000000f

    ; TraceFlags:
    ; 00000001 Warnings
    ; 00000002 Errors
    ; 00000004 General
    ; 00000008 Function trace
    TraceFlags=0x0000000f

    ; BreakFlags:
    ; 00000001 Break on validate
    ; 00000040 Break on process attach
    ; 00000100 Break on API enter
    BreakFlags=0x00000000

    ;; --------------------------------------------------------------------

    [Modem]
    ; DumpFlags:
    DumpFlags=0x0000000f

    ; TraceFlags:
    ; 00000001 Warnings
    ; 00000002 Errors
    ; 00000004 General
    ; 00000008 Function trace
    ; 00010000 Detection queries
    ; 00020000 Class installer trace
    TraceFlags=0x0003000f

    ; BreakFlags:
    ; 00000001 Break on validate
    ; 00000040 Break on process attach
    ; 00000100 Break on API enter
    BreakFlags=0x00000000

    ;; --------------------------------------------------------------------

    [SerialUI]
    ; DumpFlags:
    ; 00000001 DCB
    DumpFlags=0x00000000

    ; TraceFlags:
    ; 00000001 Warnings
    ; 00000002 Errors
    ; 00000004 General
    ; 00000008 Function trace
    TraceFlags=0x00000000

    ; BreakFlags:
    ; 00000001 Break on validate
    ; 00000040 Break on process attach
    ; 00000100 Break on API enter
    BreakFlags=0x00000000

    ;; --------------------------------------------------------------------

    [Unimdm]
    ; DumpFlags:
    DumpFlags=0x0000000f

    ; TraceFlags:
    ; 00000001 Warnings
    ; 00000002 Errors
    ; 00000004 General
    ; 00000008 Function trace
    ; 00010000 dwDeviceID related
    ; 00020000 hdLine related
    ; 00040000 hdCall related
    ; 00080000 pLineDev related
    ; 00100000 pModemInfo related
    TraceFlags=0x001f000f

    ; BreakFlags:
    ; 00000001 Break on validate
    ; 00000040 Break on process attach
    ; 00000080 Break on process detach
    ; 00000100 Break on API enter
    BreakFlags=0x00000000

  3. Para la depuración Unimdm.tsp, agregue la siguiente clave del registro:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}\device instance\Logging

Depuración de instalación de dispositivo

Para recibir un seguimiento detallado de núcleo y modo usuario administrador Plug and Play en Windows XP y versiones posteriores, deberá obtener una compilación comprobada y, a continuación, ejecute el siguiente código:
ed NT!Kd_NTOSPNP_Mask 0xFFFFFFFF ed NT!Kd_PNPMGR_Mask 0xFFFFFFFF 
En Windows 2000, puede establecer la variable global PnpEnumDebugLevel en 1 o 2 en el depurador del núcleo como sigue:
ed nt!PnpEnumDebugLevel 2 

Notas:

Algunos de los controladores y subsistemas en sistemas basados en Windows XP utilizan la nueva función DbgPrintEx :
ULONG DbgPrintEx(IN ULONG ComponentID,                 IN ULONG Level, IN PCHAR Format, . . . .
[arguments]);

Microsoft ha definido unos 95 identificadores de componentes diferentes (busque DPFLTR_TYPE en el archivo Ntddk.h). Para cada identificador de filtro del componente, hay una variable global de máscara, por ejemplo,
¡NT! ¡Kd_IHVVIDEO_Mask, NT! Kd_IHVAUDIO_Mask
Puede establecer el valor de la máscara a través del registro, como sigue:
Filtro de impresión HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug

"IHV_AUDIO" = REG_DWORD:0xFFFFFFFF o con un depurador, por ejemplo,
¡Ed NT! Kd_IHVAUDIO_Mask 0xffffffff
Resultados de la depuración se filtran basándose en la máscara global (Kd_Win2000_Mask) y la máscara de nivel de componente. El archivo de Ayuda de Windbg documenta cómo se utilizan los valores de la máscara y el nivel en el filtrado de la salida.

Para habilitar el seguimiento de depuración, utilice el código siguiente para localizar el identificador del componente en el archivo Ntddk.h o desde el depurador:
x NT!Kd_*_Mask
A continuación, establezca el valor para el máximo para obtener resultados detallados (0xffffffff). Actualmente, sólo unas cuantas clases de controladores (descritos en la sección "Más información" de este artículo) utilizan esta nueva función.
Propiedades

Id. de artículo: 314743 - Última revisión: 22 ene. 2017 - Revisión: 1

Comentarios