Condividi tramite


Opzioni della riga di comando di CDB

La prima volta che gli utenti di CDB o NTSD iniziano con la sezione Debug con CDB e NTSD .

La riga di comando di CDB usa la sintassi seguente:

cdb  [ -server ServerTransport | -remote ClientTransport ] 
[ -premote SmartClientTransport ] [-log{a|au|o|ou} LogFile]
[-2] [-d] [-ddefer] [-g] [-G] [-hd] [-lines] [-myob] [-bonc] 
[-n] [-o] [-s] [-v] [-w] [-cf "filename"] [-cfr "filename"] [-c "command"] 
[-robp] [-r BreakErrorLevel]  [-t PrintErrorLevel] 
[ -x{e|d|n|i} Exception ] [-x] [-clines lines] 
[-i ImagePath]  [-y SymbolPath] [-srcpath SourcePath] 
[-aExtension] [-failinc] [-noio] [-noinh] [-noshell] [-nosqm]
[-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul] [-zp PageFile] 
[-sup] [-sflags 0xNumber] [-ee {masm|c++}]
[-e Event] [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv] 
[ -- | -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ] 
[-cimp] [-isd] [-kqm] [-pvr] [-version] [-vf] [-vf:<opts>] [-netsyms:{yes|no}]

cdb -iae 

cdb -iaec KeyString 

cdb -iu KeyString

cdb -QR Server 

cdb -wake pid 

cdb -?

La sintassi della riga di comando NTSD è identica a quella di CDB:

ntsd  [ -server ServerTransport | -remote ClientTransport ] 
[ -premote SmartClientTransport ] [-log{a|au|o|ou} LogFile]
[-2] [-d] [-ddefer] [-g] [-G] [-hd] [-lines] [-myob] [-bonc] 
[-n] [-o] [-s] [-v] [-w] [-cf "filename"] [-cfr "filename"] [-c "command"] 
[-robp] [-r BreakErrorLevel]  [-t PrintErrorLevel] 
[ -x{e|d|n|i} Exception ] [-x] [-clines lines] 
[-i ImagePath]  [-y SymbolPath] [-srcpath SourcePath] 
[-aExtension] [-failinc] [-noio] [-noinh] [-noshell] [-nosqm]
[-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul] [-zp PageFile] 
[-sup] [-sflags 0xNumber] [-ee {masm|c++}] 
[-e Event] [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv] 
[ -- | -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ] 
[-cimp] [-isd] [-kqm] [-pvr] [-version] [-vf] [-vf:<opts>] [-netsyms:{yes|no}]

ntsd -iae 

ntsd -iaec KeyString 

ntsd -iu KeyString

ntsd -QR Server 

ntsd -wake PID 

ntsd -?

L'unica differenza tra NTSD e CDB è che NTSD genera una nuova finestra della console mentre CDB eredita la finestra da cui è stato richiamato. Poiché il comando start può essere usato anche per generare una nuova finestra della console, le due costruzioni seguenti restituiranno gli stessi risultati:

start cdb [parameters]
ntsd [parameters]

Le descrizioni delle opzioni della riga di comando CDB e NTSD seguono. Solo le opzioni -remote, -server, -g e -G fanno distinzione tra maiuscole e minuscole. Il trattino iniziale può essere sostituito con una barra (/). Le opzioni che non accettano parametri aggiuntivi possono essere concatenate, quindi cdb -o -d -G -g winmine possono essere scritte come cdb -odGg winmine.

Se viene usata l'opzione -remote o -server , deve essere visualizzata prima di qualsiasi altra opzione nella riga di comando. Se viene specificato un eseguibile , deve essere visualizzato per ultimo nella riga di comando. Qualsiasi testo dopo che il nome eseguibile viene passato al programma eseguibile come parametri della riga di comando.

Parametri

-server ServerTransport
Crea un server di debug accessibile da altri debugger. Per una spiegazione dei possibili valori di ServerTransport , vedere Attivazione di un server di debug. Quando si usa questo parametro, deve essere il primo parametro nella riga di comando.

-remoto ClientTransport
Crea un client di debug e si connette a un server di debug già in esecuzione. Per una spiegazione dei possibili valori clientTransport , vedere Attivazione di un client di debug. Quando si usa questo parametro, deve essere il primo parametro nella riga di comando.

-premote SmartClientTransport
Crea un client intelligente e si connette a un server di elaborazione già in esecuzione. Per una spiegazione dei possibili valori di SmartClientTransport , vedere Attivazione di un smart client.

-numero arabo
Se l'applicazione di destinazione è un'applicazione console, questa opzione ne determina la visualizzazione in una nuova finestra della console. L'impostazione predefinita è per un'applicazione console di destinazione per condividere la finestra con CDB o NTSD.

--
Esegue il debug del sottosistema di runtime del server client (CSRSS). Per informazioni dettagliate, vedere Debug di CSRSS.

-un Estensione
Imposta la DLL di estensione predefinita. Il valore predefinito è userexts. Non deve essere presente alcuno spazio dopo "a" e l'estensione .dll non deve essere inclusa. Per informazioni dettagliate e altri metodi di impostazione predefinita, vedere Caricamento di DLL dell'estensione del debugger.

-bonc
Se si specifica questa opzione, il debugger si interromperà nella destinazione non appena inizia la sessione. Ciò è particolarmente utile quando ci si connette a un server di debug che potrebbe non essere attualmente suddiviso nella destinazione.

-c " comando "
Specifica il comando del debugger iniziale da eseguire all'avvio. Questo comando deve essere racchiuso tra virgolette. È possibile separare più comandi con punti e virgola. Se si dispone di un elenco di comandi lungo, potrebbe essere più semplice inserirli in uno script e quindi usare l'opzione -c con il comando $<, $><, $><, $, $$>< (Esegui file script).

Se si avvia un client di debug, questo comando deve essere destinato al server di debug. I comandi specifici del client, ad esempio .lsrcpath , non sono consentiti.

-cf " filename "
Specifica il percorso e il nome di un file di script. Questo file di script viene eseguito non appena viene avviato il debugger. Se il nome file contiene spazi, deve essere racchiuso tra virgolette. Se il percorso viene omesso, viene usata la directory corrente. Se l'opzione -cf non viene usata, il file ntsd.ini nella directory corrente viene usato come file di script. Se il file non esiste, non si verifica alcun errore. Per informazioni dettagliate, vedere Uso di file di script.

-cfr " filename "
Specifica il percorso e il nome di un file di script. Questo file di script viene eseguito non appena viene avviato il debugger e ogni volta che viene riavviata la destinazione. Se il nome file contiene spazi, deve essere racchiuso tra virgolette. Se il percorso viene omesso, viene usata la directory corrente. Se il file non esiste, non si verifica alcun errore. Per informazioni dettagliate, vedere Uso di file di script.

-cimp
Indirizza CDB/NTSD all'avvio con una riga di comando implicita DbgSrv anziché un processo esplicito da eseguire. Questa opzione è il lato client di dbgsrv -pc.

-clines poema
Imposta il numero approssimativo di comandi nella cronologia dei comandi a cui è possibile accedere durante il debug remoto. Per informazioni dettagliate e per altri modi per modificare questo numero, vedere Uso dei comandi del debugger.

-d
Passa il controllo di questo debugger al debugger del kernel. Se si esegue il debug di CSRSS, questo controllo di reindirizzamento è sempre attivo, anche se -d non è specificato. Questa opzione non può essere usata durante il debug remoto. Usare invece -ddefer . Per informazioni dettagliate, vedere Controllo del debugger in modalità utente dal debugger del kernel. Questa opzione non può essere usata insieme all'opzione -ddefer o all'opzione -noio .

Nota Se usi WinDbg come debugger del kernel, molte delle funzionalità familiari di WinDbg non sono disponibili in questo scenario. Ad esempio, non è possibile usare la finestra Variabili locali, la finestra Disassembly o la finestra Stack di chiamate e non è possibile eseguire il codice sorgente. Questo perché WinDbg funge solo da visualizzatore per il debugger (NTSD o CDB) in esecuzione nel computer di destinazione.

-ddefer
Passa il controllo di questo debugger al debugger del kernel, a meno che non sia connesso un client di debug. Si tratta di una variante di -d che può essere usata da un server di debug. Per informazioni dettagliate, vedere Controllo del debugger in modalità utente dal debugger del kernel. Questa opzione non può essere usata insieme all'opzione -d o all'opzione -noio .

-e Evento
Segnala al debugger che si è verificato l'evento specificato. Questa opzione viene usata solo quando si avvia il debugger a livello di codice.

-ee {masm|c++}
Imposta l'analizzatore di espressioni predefinito. Se si specifica masm , verrà usata la sintassi delle espressioni MASM. Se si specifica c++ , verrà usata la sintassi delle espressioni C++. Se l'opzione -ee viene omessa, la sintassi dell'espressione MASM viene usata come impostazione predefinita. Per informazioni dettagliate, vedere Valutazione delle espressioni .

-failinc
Fa in modo che il debugger ignori eventuali simboli discutibili. Quando si esegue il debug di un file minidump in modalità utente o in modalità kernel, questa opzione impedisce anche al debugger di caricare i moduli di cui non è possibile eseguire il mapping delle immagini. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_EXACT_SYMBOLS.

-g
Ignora il punto di interruzione iniziale nell'applicazione di destinazione. Questa opzione causerà la continua esecuzione dell'applicazione di destinazione dopo l'avvio o il collegamento CDB, a meno che non sia stato impostato un altro punto di interruzione. Per informazioni dettagliate, vedere Punto di interruzione iniziale.

-G
Ignora il punto di interruzione finale alla terminazione del processo. Per impostazione predefinita, cdb si arresta durante il processo di esecuzione dell'immagine. Questa opzione causerà l'uscita immediata di CDB quando l'elemento figlio termina. Questo ha lo stesso effetto di immettere il comando sxd epr. Per altre informazioni, vedere Controllo di eccezioni ed eventi.

-disco rigido
Specifica che l'heap di debug non deve essere utilizzato. Per informazioni dettagliate, vedere Debug di un processo in modalità utente tramite CDB .

-io ImagePath
Specifica il percorso dei file eseguibili che hanno generato l'errore. Se il percorso contiene spazi, deve essere racchiuso tra virgolette.

-iae
Installa CDB come debugger postmortem. Per informazioni dettagliate, vedere Abilitazione del debug postmortem.

Se l'azione ha esito positivo, non viene visualizzato alcun messaggio; se ha esito negativo, viene visualizzato un messaggio di errore.

Il parametro -iae non deve essere usato con altri parametri. Questo comando non avvierà effettivamente CDB.

-iaec KeyString
Installa CDB come debugger postmortem. Il contenuto di KeyString verrà aggiunto alla fine della chiave del Registro di sistema AeDebug . Se KeyString contiene spazi, deve essere racchiuso tra virgolette. Per informazioni dettagliate, vedere Abilitazione del debug postmortem.

Se l'azione ha esito positivo, non viene visualizzato alcun messaggio; se ha esito negativo, viene visualizzato un messaggio di errore.

Il parametro -iaec non deve essere usato con altri parametri. Questo comando non avvierà effettivamente CDB.

-isd
Attiva il flag CREATE_IGNORE_SYSTEM_DEFAULT per qualsiasi creazione di processi.

-Ui KeyString
Registra la comunicazione remota del debugger come tipo di URL in modo che gli utenti possano avviare automaticamente un client remoto del debugger con un URL. KeyString ha il formato remdbgeng://RemotingOption. RemotingOption è una stringa che definisce il protocollo di trasporto come definito nell'argomento Attivazione di un client di debug. Se l'azione ha esito positivo, non viene visualizzato alcun messaggio; se ha esito negativo, viene visualizzato un messaggio di errore.

Il parametro -iu non deve essere usato con altri parametri. Questo comando non avvierà effettivamente CDB.

-kqm
Avvia CDB/NTSD in modalità non interattiva.

-poema
Abilita il debug della riga di origine. Se questa opzione viene omessa, sarà necessario usare il comando .lines (Toggle Source Line Support) prima del debug dell'origine. Per altri metodi di controllo, vedere SYMOPT_LOAD_LINES.

-log{a|au|o|ou} LogFile
Inizia la registrazione delle informazioni in un file di log. Se il file specificato esiste già, verrà sovrascritto se viene usato -logo o l'output verrà aggiunto al file se si usa -loga. Le opzioni -loproj e -logou funzionano rispettivamente come -loga e -logo , ad eccezione del fatto che il file di log è un file Unicode. Per altre informazioni, vedere Mantenimento di un file di log in CDB.

-Myob
Se si verifica una mancata corrispondenza della versione con dbghelp.dll, il debugger continuerà a essere eseguito. Senza l'opzione -myob , questo è considerato un errore irreversibile.

-n
Caricamento di simboli rumorosi: abilita l'output dettagliato dal gestore dei simboli. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_DEBUG.

-netsyms {yes|no}
Consentire o impedire il caricamento dei simboli da un percorso di rete.

-noinh
Impedisce ai processi creati dal debugger di ereditare handle dal debugger. Per altri metodi di controllo, vedere Debug di un processo in modalità utente tramite CDB.

-noio
Impedisce l'uso del server di debug per l'input o l'output. L'input verrà accettato solo dal client di debug (più qualsiasi comando iniziale o script di comando specificato dall'opzione della riga di comando -c ).

Tutto l'output verrà indirizzato al client di debug. Se viene usato NTSD per il server, non verrà creata alcuna finestra della console. Per altri dettagli, vedere Attivazione di un server di debug. Questa opzione non può essere usata insieme all'opzione -d o all'opzione -ddefer .

-noshell
Impedisce tutti i comandi della shell . Questo divieto durerà finché il debugger è in esecuzione, anche se viene avviata una nuova sessione di debug. Per informazioni dettagliate e per altri modi per disabilitare i comandi della shell, vedere Uso dei comandi della shell.

-nosqm
Disabilita la raccolta e il caricamento dei dati di telemetria.

-o
Esegue il debug di tutti i processi avviati dall'applicazione di destinazione (processi figlio). Per impostazione predefinita, i processi creati da quello di cui si sta eseguendo il debug verranno eseguiti normalmente. Per altri metodi di controllo, vedere Debug di un processo in modalità utente tramite CDB.

-p PID
Specifica l'ID del processo decimale da eseguire per il debug. Viene usato per eseguire il debug di un processo già in esecuzione. Per informazioni dettagliate, vedere Debug di un processo in modalità utente tramite CDB.

-Pb
Impedisce al debugger di richiedere un'interruzione iniziale durante il collegamento a un processo di destinazione. Ciò può essere utile se l'applicazione è già sospesa o se si desidera evitare di creare un thread di interruzione nella destinazione.

-Pd
Fa sì che l'applicazione di destinazione non venga terminata alla fine della sessione di debug. Per informazioni dettagliate, vedere Terminare una sessione di debug in CDB .

-Pe
Indica che l'applicazione di destinazione è già in fase di debug. Per informazioni dettagliate, vedere Ricollegamento all'applicazione di destinazione.

-Pn Nome
Specifica il nome del processo di cui eseguire il debug. Questo nome deve essere univoco. Viene usato per eseguire il debug di un processo già in esecuzione.

-Pr
Fa sì che il debugger avvii il processo di destinazione in esecuzione quando viene collegato. Ciò può essere utile se l'applicazione è già sospesa e si vuole riprendere l'esecuzione.

-Psn ServiceName
Specifica il nome di un servizio contenuto nel processo di cui eseguire il debug. Viene usato per eseguire il debug di un processo già in esecuzione.

-Pt Secondi
Specifica il timeout dell'interruzione, espresso in secondi. Il valore predefinito è 30. Per informazioni dettagliate, vedere Controllo della destinazione .

-Pv
Specifica che il debugger deve connettersi al processo di destinazione in modo non invasivo. Per informazioni dettagliate, vedere Debug non invasivo (modalità utente).

-pvr
Funziona come -pv , ad eccezione del fatto che il processo di destinazione non è sospeso.

-QR Server
Elenca tutti i server di debug in esecuzione nel server di rete specificato. La doppia barra rovesciata (\) precedente server è facoltativa. Per informazioni dettagliate, vedere Ricerca di server di debug.

Il parametro -QR non può essere usato con altri parametri. Questo comando non avvierà effettivamente CDB.

-r BreakErrorLevel
Specifica il livello di errore che causerà l'interruzione della destinazione nel debugger. Si tratta di un numero decimale uguale a 0, 1, 2 o 3. I possibili valori sono i seguenti:

Valore Costante Significato

0

NONE

Non interrompere gli errori.

1

ERROR

Interrompere gli eventi di debug a livello di ERRORE.

2

MINORERROR

Interrompere gli eventi di debug a livello DI ERRORE e MINORERROR.

3

AVVISO

Interrompere gli eventi di debug a livello DI AVVISO, MINORERROR e ERROR.

Questo livello di errore ha significato solo nelle build controllate di Microsoft Windows. Il valore predefinito è 1. Le build controllate erano disponibili nelle versioni precedenti di Windows, precedenti a Windows 10 versione 1803.

-robp
Ciò consente a CDB di impostare un punto di interruzione in una pagina di memoria di sola lettura. L'impostazione predefinita è che un'operazione di questo tipo non riesca.

-s
Disabilita il caricamento di simboli lazy. Questo rallenterà l'avvio del processo. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_DEFERRED_LOADS.

-sdce
Fa sì che il debugger visualizzi le finestre di dialogo Errore di accesso ai file durante il caricamento dei simboli. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_FAIL_CRITICAL_ERRORS.

-Ses
Fa sì che il debugger esegua una valutazione rigorosa di tutti i file di simboli e ignori eventuali simboli discutibili. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_EXACT_SYMBOLS.

-sflags 0x Numero
Imposta tutte le opzioni del gestore di simboli contemporaneamente. Il numero deve essere un numero esadecimale preceduto da 0x - un decimale senza 0x è consentito, ma le opzioni del simbolo sono flag binari e pertanto è consigliabile esadecimale. Questa opzione deve essere usata con attenzione, perché eseguirà l'override di tutti i valori predefiniti del gestore dei simboli. Per informazioni dettagliate, vedere Impostazione delle opzioni dei simboli.

-sicv
Fa in modo che il gestore dei simboli ignori il record CV. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_IGNORE_CVREC.

-peccati
Fa sì che il debugger ignori il percorso del simbolo e le variabili di ambiente del percorso dell'immagine eseguibile. Per informazioni dettagliate, vedere SYMOPT_IGNORE_NT_SYMPATH.

-snc
Determina la disattivazione della conversione C++da parte del debugger. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_NO_CPP.

-snul
Disabilita il caricamento automatico dei simboli per i nomi non qualificati. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_NO_UNQUALIFIED_LOADS.

-srcpath SourcePath
Specifica il percorso di ricerca del file di origine. Separare più percorsi con un punto e virgola (;). Se il percorso contiene spazi, deve essere racchiuso tra virgolette. Per informazioni dettagliate e per altri modi per modificare questo percorso, vedere Percorso di origine.

-Sorseggiare
Fa in modo che il gestore dei simboli esequisi la tabella dei simboli pubblici durante ogni ricerca di simboli. Per informazioni dettagliate e per altri metodi di controllo, vedere SYMOPT_AUTO_PUBLICS.

-t PrintErrorLevel
Specifica il livello di errore che causerà la visualizzazione di un messaggio di errore da parte del debugger. Si tratta di un numero decimale uguale a 0, 1, 2 o 3. I possibili valori sono i seguenti:

Valore Costante Significato

0

NONE

Non visualizzare errori.

1

ERROR

Visualizzare gli eventi di debug a livello di ERRORE.

2

MINORERROR

Visualizzare gli eventi di debug a livello DI ERRORE e MINORERROR.

3

AVVISO

Visualizzare eventi di debug a livello DI AVVISO, MINORERROR e ERROR.

Questo livello di errore ha significato solo nelle build controllate di Microsoft Windows. Le build controllate erano disponibili nelle versioni precedenti di Windows precedenti a Windows 10, versione 1803. Il valore predefinito è 1.

-v
Abilita l'output dettagliato dal debugger.

-Versione
Stampa la stringa di versione del debugger.

-Vf
Abilita le impostazioni predefinite di ApplicationVerifier.

-Vf: <Opta>
Abilita le impostazioni di ApplicationVerifier specificate.

-w
Specifica di eseguire il debug di applicazioni a 16 bit in un VDM separato.

-svegliare PID
Fa sì che la modalità sospensione venga terminata per il debugger in modalità utente il cui ID processo è specificato da PID. Questo comando deve essere eseguito nel computer di destinazione durante la modalità sospensione. Per informazioni dettagliate, vedere Controllo del debugger in modalità utente dal debugger del kernel.

Il parametro -wake non deve essere usato con altri parametri. Questo comando non avvierà effettivamente CDB.

Eccezione -x{e|d|n|i}
Controlla il comportamento del debugger quando si verifica l'evento specificato. L'eccezione può essere un numero di eccezione o un codice evento. È possibile specificare questa opzione più volte per controllare eventi diversi. Per informazioni dettagliate e per altri metodi di controllo di queste impostazioni, vedere Controllo di eccezioni ed eventi .

-x
Disabilita l'interruzione della prima probabilità nelle eccezioni di violazione di accesso. La seconda occorrenza di una violazione di accesso verrà interrotta nel debugger. Si tratta dello stesso valore di -xd av.

-y SymbolPath
Specifica il percorso di ricerca dei simboli. Separare più percorsi con un punto e virgola (;). Se il percorso contiene spazi, deve essere racchiuso tra virgolette. Per informazioni dettagliate e per altri modi per modificare questo percorso, vedere Percorso simbolo.

-z DumpFile
Specifica il nome di un file di dump di arresto anomalo del sistema di cui eseguire il debug. Se il percorso e il nome file contengono spazi, questo deve essere racchiuso tra virgolette. È possibile aprire più file di dump contemporaneamente includendo più opzioni -z, ognuna seguita da un valore DumpFile diverso. Per informazioni dettagliate, vedere Analisi di un file di dump in modalità utente.

-zp PageFile
Specifica il nome di un file di pagina modificato. Ciò è utile se si esegue il debug di un file dump e si vuole usare il comando .pagein (Page In Memory). Non è possibile usare -zp con un file di pagina Di Windows standard. È possibile usare solo file di pagina appositamente modificati.

eseguibile
Specifica la riga di comando di un processo eseguibile. Viene usato per avviare un nuovo processo ed eseguirne il debug. Deve essere l'elemento finale nella riga di comando. Tutto il testo dopo che il nome eseguibile viene passato al file eseguibile come stringa di argomento.

-?
Visualizza il testo della Guida della riga di comando.

Quando si avvia il debugger da Start | Eseguire o da una finestra del prompt dei comandi specificare gli argomenti per l'applicazione di destinazione dopo il nome file dell'applicazione. Ad esempio:

cdb myexe arg1arg2