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.
È possibile usare WinDbg per connettersi a un processo in esecuzione o per generare e collegare un nuovo processo.
Collegamento a un processo in esecuzione
Esistono diversi modi per usare WinDbg per connettersi a un processo in esecuzione. Indipendentemente dal metodo scelto, sarà necessario l'ID processo o il nome del processo. L'ID del processo è un numero assegnato dal sistema operativo. Per altre informazioni su come determinare l'ID processo e il nome del processo, vedere Ricerca dell'ID processo.
WinDbg Menu
Quando WinDbg è in modalità inattiva, è possibile collegarsi a un processo in esecuzione scegliendo Collega a un processo dal menu File o premendo F6.
Nella finestra di dialogo Connetti a processo selezionare il processo di cui si vuole eseguire il debug e selezionare OK.
Prompt dei comandi
In una finestra del prompt dei comandi è possibile collegarsi a un processo in esecuzione quando si avvia WinDbg. Usare uno dei comandi seguenti:
- windbg -pProcessID
- windbg -pnProcessName
dove ProcessID è l'ID processo di un processo in esecuzione o ProcessName è il nome di un processo in esecuzione.
Per altre informazioni sulla sintassi della riga di comando, vedere Opzioni Command-Line WinDbg.
Finestra di comando del debugger
Se WinDbg sta già eseguendo il debug di uno o più processi, è possibile collegarsi a un processo in esecuzione usando il comando attach (Connetti a processo) nella finestra Comando debugger.
Il debugger avvia sempre più processi di destinazione contemporaneamente, a meno che alcuni thread non vengano bloccati o sospesi.
Se il comando .attach ha esito positivo, il debugger si connetterà al processo specificato la prossima volta che viene emesso un comando di esecuzione dal debugger. Se si usa questo comando più volte in una riga, l'esecuzione deve essere richiesta dal debugger quante volte si usa questo comando.
Collegamento a un processo in esecuzione in modo non invasivo
Se si vuole eseguire il debug di un processo in esecuzione e interferire solo in modo minimo nell'esecuzione, è necessario eseguire il debug del processo in modo non invasivo.
WinDbg Menu
Quando WinDbg è in modalità inattiva, è possibile eseguire il debug non invasivo di un processo in esecuzione scegliendo Connetti a un processo dal menu File o premendo F6.
Quando viene visualizzata la finestra di dialogo Connetti a processo , selezionare la casella di controllo Non invasive . Selezionare quindi la riga contenente l'ID processo e il nome desiderati. È anche possibile immettere l'ID processo nella casella ID processo . Infine, selezionare OK.
Prompt dei comandi
In una finestra del prompt dei comandi è possibile collegarsi a un processo in esecuzione in modo non invasivo quando si avvia WinDbg. Usare uno dei comandi seguenti:
- windbg -pv -pProcessID
- 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.
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. Non è possibile usare questo comando se WinDbg è inattivo.
Se il comando .attach -v ha esito positivo, il debugger avvia il debugging del processo specificato alla successiva volta che il debugger emette 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.
Generazione di un nuovo processo
WinDbg può avviare un'applicazione in modalità utente e quindi eseguire il debug dell'applicazione. L'applicazione viene specificata in base al nome. Il debugger può anche collegarsi automaticamente ai processi secondari (processi aggiuntivi avviati dal processo originale di destinazione).
I processi creati dal debugger (noti anche come processi generati) si comportano in modo leggermente diverso rispetto ai processi che il debugger non crea.
Anziché usare l'API heap standard, i processi creati dal debugger usano un heap di debug speciale. È possibile forzare un processo generato per usare l'heap standard anziché l'heap di debug usando la variabile di ambiente _NO_DEBUG_HEAP o l'opzione della riga di comando -hd.
Inoltre, poiché l'applicazione di destinazione è un processo figlio del debugger, eredita le autorizzazioni del debugger. Questa autorizzazione potrebbe consentire all'applicazione di destinazione di eseguire determinate azioni che non è stato possibile eseguire in altro modo. Ad esempio, l'applicazione di destinazione potrebbe essere in grado di influire sui processi protetti.
WinDbg Menu
Quando WinDbg è in modalità inattiva, è possibile generare un nuovo processo scegliendo Apri eseguibile dal menu File o premendo CTRL+E.
Quando viene visualizzata la finestra di dialogo Apri eseguibile, immettere il percorso completo del file eseguibile nella casella Nome file oppure usare l'elenco Cerca in per selezionare il percorso e il nome file desiderati.
Se si vogliono usare parametri della riga di comando con l'applicazione in modalità utente, immetterli nella casella Argomenti . Se si vuole modificare la directory iniziale dalla directory predefinita, immettere il percorso della directory nella casella Directory iniziale . Se vuoi che WinDbg si connetta ai processi secondari, seleziona la casella di controllo Debug processi secondari anche.
Dopo aver effettuato le selezioni, selezionare Apri.
Prompt dei comandi
In una finestra del prompt dei comandi è possibile generare un nuovo processo quando si avvia WinDbg. Utilizza il seguente comando:
windbg [-o]ProgramName[Arguments]
L'opzione -o fa collegare automaticamente il debugger ai processi figli. Sono disponibili diverse altre opzioni utili della riga di comando. Per altre informazioni sulla sintassi della riga di comando, vedere Opzioni Command-Line WinDbg.
Finestra di comando del debugger
Se WinDbg sta già eseguendo il debug di uno o più processi, è possibile creare un nuovo processo usando il comando .create (Crea processo) nella finestra Comando debugger.
Il debugger avvierà sempre più processi target contemporaneamente, a meno che alcuni thread non siano bloccati o sospesi.
Se il comando .create ha esito positivo, il debugger creerà il processo specificato la prossima volta che emetterà un comando di esecuzione. Se si usa questo comando più volte in una riga, l'esecuzione deve essere richiesta dal debugger quante volte si usa questo comando.
È possibile controllare la directory iniziale dell'applicazione usando il comando.createdir (Set Created Process Directory) prima di .create. È possibile usare il comando .createdir -I o l'opzione -noinh della riga di comando per controllare se l'applicazione di destinazione eredita gli handle del debugger.
È possibile attivare o disattivare il debug dei processi figli usando il comando .childdbg (Debug dei processi figli).
Ricollegamento a un processo
Se il debugger smette di rispondere o si blocca, è possibile collegare un nuovo debugger al processo di destinazione. Per ulteriori informazioni su come ricollegare un debugger in questa situazione, vedere Ricollegamento all'applicazione target.