Condividi tramite


Passaggio da una modalità all'altra

Quando si controlla il debug in modalità utente dal debugger del kernel, si verificano quattro diverse modalità e possono passare tra di essi in diversi modi.

Nota In questo scenario, l'applicazione di destinazione fa riferimento all'applicazione in modalità utente in fase di debug, il computer di destinazione fa riferimento al computer che contiene l'applicazione di destinazione e il processo CDB o NTSD e il computer host fa riferimento al computer che contiene il debugger del kernel.

Verranno rilevate le quattro modalità seguenti:

Debug in modalità utente
Il computer di destinazione e l'applicazione di destinazione vengono bloccati. Il prompt di debug in modalità utente viene visualizzato nella finestra Comando debugger del debugger del debugger. In WinDbg il prompt nel pannello inferiore della finestra WinDbg visualizza Input>. È possibile immettere i comandi al prompt, come se vengano immessi durante il debug in modalità utente, per analizzare lo stato dell'applicazione di destinazione o eseguirlo o eseguirne l'esecuzione. File di simboli, DLL di estensione e altri file a cui accede il debugger saranno i file nel computer di destinazione, non il computer host.

Esecuzione dell'applicazione di destinazione
Il computer di destinazione è in esecuzione, l'applicazione di destinazione è in esecuzione e il debugger è in attesa. Questa modalità equivale a consentire l'esecuzione della destinazione nel debug ordinario.

Modalità sospensione
Il computer di destinazione è in esecuzione, ma l'applicazione di destinazione è bloccata e entrambi i debugger sono bloccati. Questa modalità è utile se è necessario eseguire operazioni nel computer di destinazione, ma non si vuole modificare lo stato della sessione di debug.

Debug in modalità kernel
Il computer di destinazione e l'applicazione di destinazione sono bloccati. Il prompt di debug in modalità kernel kd> viene visualizzato nella finestra Comando debugger del debugger del debugger. Questa modalità è lo stato di debug in modalità kernel tipico.

La sessione inizia in modalità debug in modalità utente. Le azioni e gli eventi seguenti causano la modifica della modalità:

  • Per passare dal debug in modalità utente all'esecuzione dell'applicazione di destinazione, usare il comando g (Go) al Input> prompt.

  • Per passare temporaneamente dal debug in modalità utente all'esecuzione dell'applicazione di destinazione e quindi tornare al debug in modalità utente, usare un passaggio, una traccia o un altro comando di esecuzione temporanea. Per un elenco di tali comandi, vedere Controllo della destinazione.

  • Per passare dal debug in modalità utente alla modalità sospensione, usare il comando .sleep (Pause Debugger). Questo comando viene timeizzato. Al termine dell'ora, il sistema restituisce il debug in modalità utente.

  • Per passare dal debug in modalità utente al debug in modalità kernel, usare il comando .breakin (Break to the Kernel Debugger). Si noti che .breakin potrebbe non riuscire con un errore di accesso negato se il processo chiamante non dispone dei diritti di amministratore. In questo caso passare a KD emettendo un comando con estensione sospensione breve e premendo CTRL+C.

  • È possibile passare dall'esecuzione dell'applicazione di destinazione al debug in modalità utente solo in determinati ambienti. Se il computer di destinazione esegue Microsoft Windows XP o una versione successiva del sistema operativo Windows, è possibile usare il comando !bpid extension. Se si usa CDB (non NTSD), è possibile attivare la finestra CDB nel computer di destinazione e premere CTRL+C.

  • Se l'applicazione di destinazione raggiunge un punto di interruzione, rileva un'eccezione, rileva un altro evento controllato o termina, il sistema passa dall'esecuzione dell'applicazione di destinazione al debug in modalità utente. È consigliabile pianificare tali eventi in anticipo, soprattutto quando si usa NTSD. Per altre informazioni su questi eventi, vedere Uso di punti di interruzionee controllo di eccezioni ed eventi.

  • Per passare dall'esecuzione dell'applicazione di destinazione al debug in modalità kernel, premere CTRL+C nella finestra KD, premere CTRL+BREAK o fare clic su Interruzione nel menu Debug nella finestra WinDbg oppure premere SYSRQ o ALT+SYSRQ nella tastiera del computer di destinazione. Se il debugger del kernel è KD e se si preme CTRL+C contemporaneamente che il debugger del kernel comunica con il debugger in modalità utente, il debugger in modalità utente potrebbe acquisire ctrl+C premendo CTRL+C.

  • Se il debugger rileva un errore del kernel o se si usa lo strumento Breakin.exe, il sistema passa dall'esecuzione dell'applicazione di destinazione al debug in modalità kernel.

  • Per passare dalla modalità di sospensione al debug in modalità utente, attendere la scadenza del tempo di sospensione, avviare un nuovo processo CDB nel computer di destinazione usando l'opzione della riga di comando -wake o usare il comando .wake (Wake Debugger) in una copia diversa di CDB o NTSD nel computer di destinazione.

  • Per uscire dal debug in modalità kernel, usare il comando g (Go) al kd> prompt. Questo comando restituisce il debug in modalità utente o l'esecuzione di un'applicazione di destinazione (che tuttavia dei due era lo stato usato più di recente).