Eseguire il debug di uno o più processi in Visual Studio
Viene illustrato come avviare i processi di debug, passare da un processo all'altro, interrompere e continuare l'esecuzione, eseguire l'origine un'istruzione alla volta, interrompere il debug e terminare o disconnettersi dai processi.
Contenuto
Configurare il comportamento di esecuzione di più processi
Individuare i file di origine e di simboli (con estensione pdb)
Avviare più processi in una soluzione VS, connettersi a un processo, avviare automaticamente un processo nel debugger
Passare da un processo all'altro, interrompere e continuare l'esecuzione, eseguire l'origine un'istruzione alla volta
Interrompere il debug, terminare o disconnettersi dai processi
Configurare il comportamento di esecuzione di più processi
Per impostazione predefinita, quando più processi sono in esecuzione nel debugger, i comandi del debugger di interruzione, esecuzione delle istruzioni e arresto di solito interessano tutti i processi. Ad esempio, quando un processo viene sospeso in corrispondenza di un punto di interruzione, viene sospesa anche l'esecuzione di tutti gli altri processi. È possibile modificare questo comportamento predefinito per ottenere un maggiore controllo sulle destinazioni dei comandi di esecuzione.
Scegliere Opzioni e impostazioni dal menu Debug.
In Debug, nella pagina Generale, deselezionare la casella di testo Quando si interrompe un processo, interrompi tutti i processi.
Contenuto
Individuare i file di origine e di simboli (con estensione pdb)
Per esplorare il codice sorgente di un processo, il debugger deve accedere ai file di origine e di simboli del processo. Vedere Specifica di file di simboli con estensione pdb) e di file di origine nel debugger di Visual Studio.
Se non è possibile accedere ai file per un processo, è possibile spostarsi utilizzando la finestra Disassembly. Vedere Procedura: utilizzare la finestra Disassembly
Contenuto
Avviare più processi in una soluzione VS, connettersi a un processo, avviare automaticamente un processo nel debugger
- Avviare il debug di più processi in una soluzione Visual Studio • Modificare il progetto di avvio • Avviare un progetto specifico in una soluzione • Avviare più progetti in una soluzione • Connettersi a un processo • Avviare automaticamente un processo nel debugger
Nota
Il debugger non si connette automaticamente a un processo figlio che viene avviato da un processo sottoposto a debug, anche se il progetto figlio si trova nella stessa soluzione.Per eseguire il debug di un processo figlio:
-
Connettersi al processo figlio dopo averlo avviato.
-oppure-
-
Configurare Windows per avviare automaticamente il processo figlio in una nuova istanza del debugger.
Avviare il debug di più processi in una soluzione Visual Studio
Quando sono presenti più progetti in una soluzione Visual Studio che è possibile eseguire in modo indipendente (progetti eseguiti in processi distinti), è possibile selezionare quali progetti vengono avviati dal debugger.
Modificare il progetto di avvio
Per modificare il progetto di avvio per una soluzione, selezionarlo in Esplora soluzioni e scegliere Imposta come progetto di avvio dal menu di scelta rapida.
Avviare un progetto specifico in una soluzione
Per avviare un progetto per una soluzione senza modificare il progetto di avvio predefinito, selezionare il progetto in Esplora soluzioni e scegliere Debug dal menu di scelta rapida. È quindi possibile scegliere Avvia nuova istanza o Esegui istruzione nuova istanza.
Contenuto
Avviare più progetti in una soluzione
Selezionare la soluzione in Esplora soluzioni, quindi scegliere Proprietà dal menu a scelta rapida.
Selezionare Proprietà comuni e Progetto di avvio nella finestra di dialogo Proprietà.
Per ogni progetto da modificare, scegliere Avvia, Avvia senza eseguire debug o Nessuno.
Contenuto
Connettersi a un processo
Il debugger può inoltre connettersi ai programmi in esecuzione in processi esterni a Visual Studio, inclusi i programmi in esecuzione in un dispositivo remoto. Dopo essersi connessi a un programma, è possibile utilizzare i comandi di esecuzione del debugger, analizzare lo stato del programma e così via. La possibilità di analisi del programma dipende dall'eventualità che il programma sia stato generato con informazioni di debug, che si disponga dell'accesso al relativo codice sorgente e che il compilatore JIT di Common Language Runtime stia registrando informazioni di debug.
Per ulteriori informazioni, vedere Connessione a processi in esecuzione con il debugger di Visual Studio.
Connettersi a un processo in esecuzione nel computer locale
Scegliere Debug, Connetti a processo. Nella finestra di dialogo Connetti a processo selezionare il processo dall'elenco Processi disponibili, quindi scegliere Connetti.
Contenuto
Avviare automaticamente un processo nel debugger
In alcuni casi potrebbe essere necessario eseguire il debug del codice di avvio di un programma avviato da un altro processo. Può ad esempio trattarsi di servizi o operazioni di installazione personalizzate. In questi scenari è possibile avviare e connettere il debugger automaticamente all'avvio dell'applicazione.
Avviare l'Editor del Registro di sistema (regedit.exe).
Individuare la cartella HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.
Selezionare la cartella dell'app da avviare nel debugger.
Se il nome dell'app non è elencato come cartella figlio, selezionare Image File Execution Options, quindi Nuova e Chiave nel menu di scelta rapida. Selezionare la nuova chiave, scegliere Rinomina dal menu di scelta rapida, quindi immettere il nome dell'app.
Nel menu di scelta rapida della cartella delle app scegliere Nuova e Valore stringa.
Modificare il nome del nuovo valore da New Value a debugger.
Nel menu di scelta rapida della voce del debugger scegliere Modifica.
Nella finestra di dialogo Modifica stringa digitare vsjitdebugger.exe nella casella Dati valore.
Contenuto
Passare da un processo all'altro, interrompere e continuare l'esecuzione, eseguire l'origine un'istruzione alla volta
- Spostarsi tra i processi • Comandi per interrompere, eseguire e continuare
Spostarsi tra i processi
Nonostante durante il debug sia possibile connettersi a più processi, nel debugger è sempre attivo un solo processo in un dato momento. È possibile impostare il processo attivo o corrente nella barra degli strumenti Posizione di debug o nella finestra Processi. Per passare da un processo all'altro, entrambi i processi devono essere in modalità di interruzione.
Per impostare il processo corrente
Sulla barra degli strumenti Posizione di debug scegliere Processo per visualizzare la relativa casella di riepilogo. Selezionare il processo da designare come processo corrente.
Se la barra degli strumenti Posizione di debug non è visibile, scegliere Strumenti, Personalizza. Nella scheda Barre degli strumenti scegliere Posizione di debug.
Aprire la finestra Processi (tasti di scelta rapida Ctrl+Alt+Z), individuare il processo da impostare come corrente e fare doppio clic su di esso.
Il processo corrente è contrassegnato da una freccia gialla.
Quando si passa a un progetto esso viene impostato per il debug. In tutte le finestre del debugger visualizzate è mostrato lo stato del processo corrente e tutti i comandi per l'esecuzione di istruzioni interessano solo il processo corrente.
Contenuto
Comandi per interrompere, eseguire le istruzioni e continuare
Nota
Per impostazione predefinita, i comandi del debugger per interrompere, continuare ed eseguire le istruzioni interessano tutti i processi sottoposti a debug.Per modificare questo comportamento, vedere Configurare il comportamento di esecuzione di più processi
Comando |
Quando si interrompe un processo, interrompi tutti i processi Selezionato (impostazione predefinita) |
Quando si interrompe un processo, interrompi tutti i processi Deselezionato |
Menu Debug:
|
Interruzione di tutti i processi. |
Interruzione di tutti i processi. |
Menu Debug:
|
Ripresa di tutti i processi. |
Ripresa di tutti i processi sospesi. |
Menu Debug:
|
Esecuzione di tutti i processi durante l'esecuzione delle istruzioni del processo corrente. Successiva interruzione di tutti i processi. |
Esecuzione delle istruzioni del processo corrente. Ripresa dei processi sospesi. Continuazione dei processi in esecuzione. |
Menu Debug:
|
N/D |
Esecuzione delle istruzioni del processo corrente. Mantenimento dello stato esistente (sospeso o in esecuzione) degli altri processi. |
Finestra di origine
|
Interruzione di tutti i processi. |
Interruzione solo del processo della finestra di origine. |
Menu di scelta rapida della finestra di origine:
La finestra di origine deve essere nel processo corrente. |
Esecuzione di tutti i processi mentre il processo della finestra di origine viene eseguito fino al cursore e quindi interrotto. Successiva interruzione di tutti gli altri processi. |
Esecuzione del processo della finestra di origine fino al cursore. Mantenimento dello stato esistente (sospeso o in esecuzione) degli altri processi. |
Menu di scelta rapida della finestraProcessi:
|
N/D |
Interruzione del processo selezionato. Mantenimento dello stato esistente (sospeso o in esecuzione) degli altri processi. |
Menu di scelta rapida della finestraProcessi:
|
N/D |
Ripresa del processo selezionato. Mantenimento dello stato esistente (sospeso o in esecuzione) degli altri processi. |
Contenuto
Interrompere il debug, terminare o disconnettersi dai processi
- Interrompere, terminare e disconnettere i comandi
Per impostazione predefinita, se si sceglie Debug, Interrompi debug quando più processi sono aperti nel debugger, questo termina o disconnette tutti i processi a seconda della modalità di apertura del processo nel debugger:
Se il processo corrente è stato avviato nel debugger, esso viene terminato.
Se il debugger è stato connesso al processo corrente, viene disconnesso e il processo rimane in esecuzione.
Ad esempio, se si avvia il debug di un processo da una soluzione Visual Studio, si connette un altro processo già in esecuzione e si sceglie Interrompi debug, la sessione di debug termina, il processo avviato in Visual Studio viene interrotto, mentre quello connesso viene mantenuto in esecuzione. È possibile utilizzare le procedure seguenti per controllare la modalità di interruzione del debug.
Nota
L'opzione Quando si interrompe un processo, interrompi tutti i processi non influisce sull'interruzione del debug o sull'interruzione e la disconnessione dai processi.
Per modificare gli effetti dell'interruzione del debug su un singolo processo
- Aprire la finestra Processi (tasti di scelta rapida Ctrl+Alt+Z). Selezionare un processo, quindi selezionare o deselezionare la casella di controllo Disconnetti al termine del debug.
Interrompere, terminare e disconnettere i comandi
Comando |
Descrizione |
Menu Debug:
|
A meno che il comportamento non sia stato modificato mediante l'opzione Disconnetti al termine del debug della finestra Processi:
|
Menu Debug:
|
Tutti i processi vengono terminati. |
Menu Debug:
|
Il debugger si disconnette da tutti i processi. |
Menu di scelta rapida della finestraProcessi:
|
Il debugger si disconnette da tutti i processi selezionati. Mantenimento dello stato esistente (sospeso o in esecuzione) degli altri processi. |
Menu di scelta rapida della finestraProcessi:
|
Il processo selezionato viene terminato. Mantenimento dello stato esistente (sospeso o in esecuzione) degli altri processi. |
Menu di scelta rapida della finestraProcessi:
|
Attiva/disattiva il comportamento di Debug, Interrompi debug per il processo selezionato:
|
Interrompere il debug, terminare o disconnettersi dai processi
Contenuto
Vedere anche
Concetti
Altre risorse
Specifica di file di simboli con estensione pdb) e di file di origine nel debugger di Visual Studio
Connessione a processi in esecuzione con il debugger di Visual Studio