Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se un'applicazione in modalità utente è già in esecuzione, il debugger può eseguirne il debug in modo non invasivo. Con il debug non invasivo, non sono disponibili tutte le azioni di debug. Tuttavia, è possibile ridurre al minimo l'interferenza del debugger con l'applicazione di destinazione. Il debug non invasivo è utile se l'applicazione di destinazione ha smesso di rispondere.
Nel debug non invasivo, il debugger non è effettivamente collegato all'applicazione di destinazione. Il debugger sospende tutti i thread della destinazione e ha accesso alla memoria, ai registri e ad altre informazioni di questo tipo. Tuttavia, il debugger non può controllare la destinazione, quindi i comandi come g (Go) non funzionano.
Se si tenta di eseguire comandi non consentiti durante il debug non invasivo, viene visualizzato un messaggio di errore che indica che il debugger non è collegato, quindi non è possibile monitorare l'esecuzione del processo.
Selezione del processo di debug
È possibile specificare l'applicazione di destinazione in base all'ID processo (PID) o al nome del processo.
Se si specifica l'applicazione in base al nome, è necessario usare il nome completo del processo, inclusa l'estensione del nome file. Se due processi hanno lo stesso nome, è necessario usare invece l'ID processo.
Per altre informazioni su come determinare l'ID processo e il nome del processo, vedere Ricerca dell'ID processo.
Per informazioni sull'avvio e l'arresto di una sessione di debug non invasiva, vedere gli argomenti seguenti:
Riga di comando cdb
Per eseguire il debug non invasivo di un processo in esecuzione dalla riga di comando di CDB, specificare l'opzione -pv, l'opzione -p e l'ID processo nella sintassi seguente.
cdb -pv -pProcessID
In alternativa, per eseguire il debug non invasivo di un processo in esecuzione specificando il nome del processo, usare invece la sintassi seguente.
cdb -pv -pnProcessName
Sono disponibili diverse altre opzioni utili della riga di comando. Per altre informazioni sulla sintassi della riga di comando, vedere opzioni Command-Line CDB.
Riga di comando di WinDbg
Per eseguire il debug non invasivo di un processo in esecuzione dalla riga di comando di WinDbg, specificare l'opzione -pv, l'opzione -p e l'ID processo nella sintassi seguente.
windbg -pv -pProcessID
In alternativa, per eseguire il debug non invasivo di un processo in esecuzione specificando il nome del processo, usare invece la sintassi seguente.
windbg -pv -pnProcessName
Sono disponibili diverse altre opzioni utili della riga di comando. Per altre informazioni sulla sintassi della riga di comando, vedere Opzioni Command-Line WinDbg.
WinDbg Menu
Quando WinDbg è in modalità inattiva, è possibile eseguire il debug non invasivo di un processo in esecuzione facendo clic su Collega a un processo dal menu File o premendo F6.
Quando viene visualizzata la finestra di dialogo Aggancia a processo, selezionare la casella di controllo Noninvasive. Selezionare quindi la riga contenente l'ID processo e il nome desiderati. È anche possibile immettere l'ID processo nella casella ID processo. Infine, fare clic su OK.
Finestra di comando del debugger
Se il debugger è già attivo, è possibile eseguire il debug in modo non invasivo di un processo in esecuzione usando il comando attach -v (Connetti a processo) nella finestra Comando debugger.
È possibile usare il comando .attach se il debugger sta già eseguendo il debug di uno o più processi in modo invasivo. È possibile usare questo comando in CDB se è inattivo, ma non in un WinDbg inattivo.
Se il comando .attach -v ha esito positivo, il debugger eseguirà il debug del processo specificato la prossima volta che il debugger emetterà un comando di esecuzione. Poiché l'esecuzione non è consentita durante il debug non invasivo, il debugger non può eseguire il debug in modo non invasivo di più processi alla volta. Questa restrizione significa anche che l'uso del comando .attach -v potrebbe rendere meno utile una sessione di debug invasiva esistente.
Inizio della sessione di debug
Per altre informazioni su come iniziare una sessione di debug, vedere Operazione del debugger.