Attivazione dell'analisi del debug dettagliato in diversi driver e sottosistemi

Traduzione articoli Traduzione articoli
Identificativo articolo: 314743 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I314743
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Durante l'esecuzione del debug dei driver di periferica è importante ricevere l'analisi del debug dettagliato dai driver e dai sottosistemi correlati.

Quasi tutti i driver e i sottosistemi forniti da Microsoft utilizzano variabili globali e insiemi di valori predefiniti per controllare il livello di dettaglio delle informazioni di analisi del debug inviate al debugger.

In questo articolo vengono affrontati i seguenti argomenti:
  • Come attivare e controllare il livello di analisi del debug utilizzando un debugger del kernel e valori del Registro di sistema.
  • Per una determinata classe di driver è possibile utilizzare le estensioni del debugger corrispondente per attivare e controllare l'analisi del debug.
  • Differenze tra l'attivazione dell'analisi del debug in Windows 2000 e in Windows XP.

Informazioni

Importante In questo articolo sono contenute informazioni su come eseguire file con estensione chk a scopo di sviluppo e verifica. Il Servizio Supporto Tecnico Clienti Microsoft (PSS) non supporta l'installazione di file chk in sistemi di produzione, a meno che indicazioni specifiche in tal senso siano state fornite da PSS per isolare un problema. Prima di installare file chk in un sistema di produzione, eseguire una copia di backup del sistema e assicurarsi di sapere come ripristinare il file sostituito in caso di problemi.

Per ulteriori informazioni sui file chk, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
103659 Informazioni sull'utilizzo di Ntdetect.com se il programma di installazione si blocca durante l'analisi dell'hardware
320040 HOW TO: Utilizzare Ntdetect.chk per identificare problemi hardware in Windows 2000
Per informazioni su come eseguire il backup e il ripristino del sistema, vedere Guida in linea e supporto tecnico in Windows 2000. Per ulteriori informazioni su NTbackups, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
240363 HOW TO: Eseguire il backup e ripristinare lo stato del sistema utilizzando il programma di backup di Windows 2000
È inoltre possibile contattare il fornitore del prodotto di backup per informazioni su come utilizzare il prodotto.

Note Le seguenti informazioni sul debug sono soggette a modifica in qualsiasi momento e vengono fornite unicamente a scopo di debug dei driver. Le informazioni relative al debug sono rivolte agli sviluppatori e possono risultare scarsamente utili per gli utenti comuni.

Debug di driver video Miniport

Per il debug di driver video Miniport tenere presente quanto segue:
  • Sono richiesti driver Miniport e porta video di una build verificata.
  • Non viene utilizzata un'estensione del debugger.
  • È consentita l'analisi del debug tramite l'impostazione di variabili globali.
  • I nomi delle variabili di Windows 2000 sono diversi da quelli di Windows XP.
  • In Windows 2000 è possibile attivare l'analisi del debug tramite il Registro di sistema o tramite il debugger, come indicato di seguito:
    • Impostare il valore di VideoDebugLevel (0-3) nel Registro di sistema come segue:
      HKEY_LOCAL_MACHINE\SYSTEM\CCS\Services\DriverName\DeviceN VideoDebugLevel:REG_DWORD: 2
    • In alternativa impostare il valore tramite il debugger come segue:
      ed videoprt!VideoDebugLevel 2
  • Per la porta video in un computer basato su Windows XP viene utilizzata la nuova funzione DbgPrintEx. Vedere la sezione "NOTE" in questo articolo.

    Per i driver video sono definite le seguenti variabili:
    Kd_IHVVIDEO_Mask
    Kd_VIDEO_Mask
    Kd_VIDEOPRT_Mask
    Per impostare una maschera, procedere come segue:
    • Aggiungere la maschera desiderata al Registro di sistema. Ad esempio:
      HKEY_LOCAL_MACHINE\SYSTEM\CCS\Control\Session Manager\Debug Print Filter ?IHVVIDEO?=DWORD: 0xffffffff
    • In alternativa aggiungere la maschera nel debugger come segue:
      ed Kd_IHVVIDEO_Mask 0xffffffff

Debug di driver 1394

Per il debug di driver 1394, tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli 1394 di una build verificata.
  • Nei sistemi basati sia su Windows 2000 sia su Windows XP impostare la variabile globale corrispondente tramite il debugger. Ad esempio:
    ed ohci1394!ohcidebuglevel 6
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug  Intervallo
    OHCI1394.SYSohcidebuglevel1-6
    SBP2PORT.SYSsbp2debuglevel1-4
    1394BUS.SYSbusdebuglevel1-5
    Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    259855 Attivazione di stampe di debug nei driver IEEE 1394

Debug di driver USB

Per il debug di driver USB (Universal Serial Bus), tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli USB di una build verificata.
  • Nei sistemi basati su Windows 2000 è necessario impostare la variabile globale corrispondente tramite il debugger. Ad esempio:
    ed USBD!USBD_Debug_Trace_Level 2
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug  Intervallo
    UHCD.SYSUHCD_Debug_Trace_Level0-2
    OPENHCI.SYSOHCI_Debug_Trace_Level0-2
    USBHUB.SYSUSBH_Debug_Trace_Level0-3
    USBD.SYSUSBD_Debug_Trace_Level0-3
  • Nei sistemi basati su Windows XP utilizzare i seguenti parametri.
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug  Intervallo
    USBPORT.SYSUSBPORT_Debug_Trace_Level0-4
    USBCCGP.SYSDbgVerbose0 o 1
    USBHUB.SYSUSBH_Debug_Trace_Level0-3
    USBD.SYSUSBD_Debug_Trace_Level0-3
    USBPORT.SYSUSBPORT_CatcTrapEnable0-1
  • Per l'output di debug di tutti i driver Miniport USB viene utilizzato USBPORT.

Debug di driver PCI

Per il debug di driver PCI (Peripheral Component Interconnect), tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli PCI.SYS di una build verificata.
  • Nei sistemi basati sia su Windows 2000 sia su Windows XP impostare la variabile globale corrispondente tramite il debugger. Ad esempio (dove 0x3 corrisponde all'output più dettagliato):
    ed PCI!PciDebug 0x3
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug  Intervallo
    PCI.SYS PciDebug  0-3 

Debug di driver PCMCIA

Per il debug di driver PCMCIA, tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o un modulo pcmcia di una build verificata.
  • Nei sistemi basati sia su Windows 2000 sia su Windows XP impostare la variabile globale corrispondente tramite il debugger. Ad esempio
    ed PCMCIA!PcmciaDebugMask 0xFFFFFFFF
    dove:
    #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
    					
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug  Intervallo
    PCMCIA.SYS PcmciaDebugMask  0?FFFFFFFF 

Debug di driver NDIS

Per il debug di driver NDIS (Network Driver Interface Specification), tenere presente quanto segue:

Debug di driver di archiviazione

Per il debug di driver di archiviazione, tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli di archiviazione di una build verificata. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    296225 Come attivare la registrazione del debug di SCSIPORT

Debug di driver della stampante

Per il debug di driver della stampante, tenere presente quanto segue:

Modalità utente

  • È richiesto un sistema di una build verificata o componenti di driver della stampante (unidrv o pscript) di una build verificata.
  • Effettuare il collegamento all'applicazione di stampa o al processo di spooling (spoolsv.exe), a seconda dell'esecuzione del debug nel modulo dell'interfaccia utente (UI) o nel modulo di rendering.
  • Per il debug di Unidrv, utilizzare la seguente impostazione:
    ed unidrv!giDebugLevel 1

Modalità kernel

  • Eseguire il comando gflags, quindi attivare il seguente flag in spoolsv.exe:
    • Windows 2000: "posizionare l'allocazione dell'heap alla fine delle pagine"
    • Windows XP: "attivare l'heap della pagina"
  • Riavviare lo spooler (net stop/start spooler).
  • Eseguire verifier.exe su Win32K.sys per eseguire il debug del driver della stampante.

Debug di driver audio

Per il debug di driver audio, tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli audio di una build verificata.
  • Nei sistemi basati sia su Windows 2000 sia su Windows XP impostare la variabile globale corrispondente tramite il debugger. Ad esempio:
    ed USBAUDIO!USBAudioDebugLevel 3
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug    Intervallo  
    USBAUDIO.SYSUSBAudioDebugLevel0-3
    SYSAUDIO.SYSSYSAUDIOTraceLevel0-100

Debug di driver HID

Per il debug di driver HID, tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli HID di una build verificata.
  • Nei sistemi basati sia su Windows 2000 sia su Windows XP impostare la variabile globale corrispondente tramite il debugger. Ad esempio:
    ed HIDCLASS!dbgverbose 1
    Riduci questa tabellaEspandi questa tabella
      Nome modulo    Simbolo di debug    Intervallo  
    HIDUSB.SYSHIDUSB_DebugLevel0-1
    HIDCLASS.SYSdbgverbose0-1

Debug di driver seriali

Per il debug di driver seriali, tenere presente quanto segue:
  • È richiesto un sistema di una build verificata o moduli seriali di una build verificata.
  • Serial.sys (sia su sistemi Windows 2000 che Windows XP):
    • Impostare il valore DebugLevel nel Registro di sistema come segue:
      HKLM\System\CCS\Services\Serial ?DebugLevel?= REG_DWORD:0xFFFFFFFF
      In alternativa impostare il valore tramite il debugger come segue:
      ed Serial!SerialDebugLevel (0x00000000 ? 0xFFFFFFFF)
    • I valori della maschera sono definiti nella seguente directory:
      %DDKROOT%\src\kernel\serial\serial.h
  • Serenum.sys (sia su sistemi Windows 2000 che Windows XP):
    • Impostare il valore DebugLevel nel Registro di sistema come segue:
      HKEY_LOCAL_MACHINE\System\CCS\Services\Serenum ?DebugLevel?= REG_DWORD:1FF
    • I valori della maschera sono definiti nella seguente directory:
      %DDKROOT%\src\kernel\serenum\serenum.h

Debug di driver del modem

Per consentire il debug dettagliato e completo dei driver Unimodem nei sistemi basati su Windows 2000 e Windows XP, è necessario disporre di una build verificata ed eseguire le seguenti operazioni:
  1. Fatta eccezione per Mdminst.dll e per Unimdm.tsp, per tutti gli altri aggiungere le seguenti chiavi del Registro di sistema:
    • 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. Per Mdminst.dll, copiare Unimdm.ini in %windir%. Di seguito è riportato un esempio di file 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. Per il debug di Unimdm.tsp, aggiungere la seguente chiave del Registro di sistema:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}\device instance\Logging

Debug dell'installazione di periferiche

Per ricevere un'analisi dettagliata dal modulo di gestione PNP in modalità utente e kernel in Windows XP e versioni successive, è necessario disporre di una build verificata ed eseguire le seguenti operazioni:
ed NT!Kd_NTOSPNP_Mask 0xFFFFFFFF ed NT!Kd_PNPMGR_Mask 0xFFFFFFFF
In Windows 2000 è possibile impostare la variabile globale PnpEnumDebugLevel su 1 o 2 nel debugger del kernel come segue:
ed nt!PnpEnumDebugLevel 2

Note

Per alcuni driver e sottosistemi di sistemi basati su Windows XP viene utilizzata la nuova funzione DbgPrintEx:
ULONG DbgPrintEx(IN ULONG ComponentID,
                 IN ULONG Level, IN PCHAR Format, . . . .
                 [arguments]);
				
Microsoft ha definito circa 95 diversi ID di componenti (cercare DPFLTR_TYPE nel file Ntddk.h). Per ogni ID di filtro dei componenti è disponibile una variabile di maschera globale, ad esempio
NT! Kd_IHVVIDEO_Mask, NT!Kd_IHVAUDIO_Mask
È possibile impostare il valore della maschera tramite il Registro di sistema come segue:
HKEY_LOCAL_MACHINE\SYSTEM\CCS\Control\Session Manager\Debug Print Filter

?IHV_AUDIO?=REG_DWORD:0xFFFFFFFF o tramite un debugger, ad esempio
ed NT!Kd_IHVAUDIO_Mask 0xffffffff
L'output di debug viene filtrato in base alla maschera globale (Kd_Win2000_Mask) e alla maschera a livello di componente. Nel file della Guida Windbg è documentato l'utilizzo della maschera e dei valori dei livelli per filtrare l'output.

Per attivare l'analisi del debug, utilizzare il codice riportato di seguito per individuare l'ID del componente in uso dal file Ntddk.h o dal debugger:
x NT!Kd_*_Mask
				
Impostare quindi il valore massimo per l'output dettagliato (0xffffffff). Questa nuova funzione viene attualmente utilizzata solo da alcune classi di driver descritte nella sezione "Informazioni" di questo articolo.

Proprietà

Identificativo articolo: 314743 - Ultima modifica: mercoledì 14 dicembre 2005 - Revisione: 5.0
Le informazioni in questo articolo si applicano a
  • Microsoft Windows XP Driver Development Kit
  • Microsoft Win32 Device Driver Kit for Windows 2000
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
Chiavi: 
kbhowto kbinfo kbbug kbkmode kbwdm kbplugplay kbinput kbndis kbfile kbdebug kbserial kbusb kbdisplay KB314743
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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