Connessione a processi in esecuzione
Il debugger di Visual Studio è in grado di connettersi a un processo in esecuzione all'esterno di Visual Studio.Questa funzionalità di connessione può essere utilizzata per effettuare le seguenti operazioni:
Debug di un'applicazione non creata in Visual Studio.
Debug simultaneo di più processi.Per eseguire il debug simultaneo di più processi, è anche possibile avviare più progetti all'interno di un'unica soluzione.
Debug di un processo in esecuzione in un computer remoto.
Debug di una DLL in esecuzione in un processo distinto che non può essere facilmente avviato da Visual Studio, ad esempio una DLL di servizio o ISAPI in esecuzione con Internet Information Services.
Avvio automatico del debugger in caso di arresto anomalo di un processo in esecuzione all'esterno di Visual Studio.Tale operazione corrisponde al debug JIT.
Dopo essersi connessi a un programma, è possibile utilizzare i comandi di esecuzione del debugger, esaminare lo stato del programma e così via.Per ulteriori informazioni, vedere Avviare, interrompere, esplorare e arrestare il debugger di Visual Studio e Visualizzazione di dati nel debugger.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.
![]() |
---|
Affinché il debugger possa connettersi a codice scritto in C++, è necessario che venga generato l'elemento DebuggableAttribute.È possibile aggiungere automaticamente questo elemento al codice mediante il collegamento all'opzione del linker /ASSEMBLYDEBUG. |
![]() |
---|
Per connettersi alle finestre dell'applicazione scritta in JavaScript, è necessario innanzitutto abilitare il debug per l'applicazione.Vedere Attach the debugger nel centro per sviluppatori di Windows. |
Per connettersi a un processo in esecuzione
Scegliere Connetti a processo dal menu Debug.
Nella finestra di dialogo Connetti a processo individuare il programma con il quale si desidera stabilire una connessione nell'elenco Processi disponibili.
Se il programma di cui si desidera eseguire il debug è in esecuzione in un altro computer, utilizzare la casella di riepilogo Qualificatore per selezionare il computer remoto.Per ulteriori informazioni, vedere Procedura: selezionare un computer remoto.
Se il processo viene eseguito con un account utente diverso, selezionare la casella di controllo Mostra processi di tutti gli utenti.
Se la connessione è stata effettuata mediante Connessione desktop remoto, selezionare la casella di controllo Mostra processi in tutte le sessioni.
Nella casella Connetti a verificare che sia presente il tipo di codice di cui eseguire il debug.L'impostazione predefinita Automatico tenta di determinare il tipo di codice di cui si desidera eseguire il debug.Se l'impostazione automatica non è adatta:
Fare clic su Seleziona.
Nella finestra di dialogo Seleziona tipo di codice fare clic su Esegui il debug di questi tipi di codice e selezionare i tipi da sottoporre a debug.
Scegliere OK.
Scegliere Connetti.
L'elenco Processi disponibili viene visualizzato automaticamente quando si apre la finestra di dialogo Processi.I processi possono essere avviati e interrotti in background mentre la finestra di dialogo è aperta.È quindi possibile che il contenuto non sia sempre aggiornato.Per visualizzare i processi correnti, è possibile aggiornare l'elenco in qualsiasi momento utilizzando il pulsante Aggiorna.
Durante l'esecuzione del debug è possibile essere connessi a più di un programma, ma in un dato momento solo uno di tali programmi potrà essere attivo nel debugger.È possibile impostare il programma attivo nella barra degli strumenti Posizione di debug o nella finestra Processi.Per ulteriori informazioni, vedere Procedura: impostare il processo corrente.
Tutti i comandi di esecuzione del menu Debug hanno effetto sul programma attivo.È possibile interrompere l'esecuzione di un programma in fase di debug dalla finestra di dialogo Processi o interrompere tutti i programmi connessi dal menu Debug.Per ulteriori informazioni, vedere [NIB] 12/13 Procedura: interrompere l'esecuzione.
[!NOTA]
Affinché il debugger possa connettersi a codice gestito scritto in Visual C++, è necessario che venga generato l'elemento DebuggableAttribute.È possibile aggiungere automaticamente questo elemento al codice mediante il collegamento all'opzione del linker /ASSEMBLYDEBUG.
Se si tenta di connettersi a un processo appartenente a un account utente non attendibile, verrà visualizzata una finestra di dialogo contenente un avviso di sicurezza per chiedere conferma dell'operazione.Per ulteriori informazioni, vedere Avviso di sicurezza: può essere pericoloso connettersi a un processo appartenente a un account utente non attendibile. Se le seguenti sottostanti risultano sospette o non sicure, non stabilire la connessione al processo..
In alcuni casi, quando viene eseguito il debug in una sessione di Desktop remoto (Servizi terminal), nell'elenco Processi disponibili non vengono visualizzati tutti i processi disponibili.Se in Windows Server 2003 o versioni più recenti si esegue Visual Studio con un account utente limitato, nell'elenco Processi disponibili non verranno visualizzati i processi in esecuzione nella Sessione 0 utilizzata per i servizi e gli altri processi del server incluso w3wp.exe.È possibile risolvere il problema eseguendo Visual Studio con un account amministratore o Visual Studio dalla console del server invece di una sessione di Servizi Terminal.Se non è possibile adottare una di queste soluzioni alternative, una terza opzione consiste nel connettersi al processo eseguendo vsjitdebugger.exe -pIDProcesso dalla riga di comando di Windows.È possibile determinare l'ID processo utilizzando tlist.exe.Per ottenere tlist.exe, scaricare e installare gli strumenti di debug per Windows, disponibili all'indirizzo https://go.microsoft.com/fwlink/?LinkId=168279 (la pagina potrebbe essere in inglese).
Selezione di un computer remoto
Quando si utilizza la finestra di dialogo Connetti a processo, è possibile selezionare un altro computer configurato per il debug remoto.Per ulteriori informazioni, vedere Procedura: impostare il debug remoto.Dopo avere selezionato un computer remoto, è possibile visualizzare l'elenco dei processi disponibili in esecuzione in tale computer e connettersi a uno o più di questi processi per eseguire il debug.
Per selezionare un computer remoto:
Nella finestra di dialogo Connetti a processo, selezionare il tipo di connessione appropriato dall'elenco Trasporto.Per la maggior parte dei casi è possibile utilizzare l'impostazione Predefinito.Per ulteriori informazioni, vedere Installazione del debug remoto.
Utilizzare la casella di riepilogo Qualificatore per scegliere il nome del computer remoto in uno dei seguenti modi:
Digitare il nome nella casella di riepilogo Qualificatore.
Fare clic sulla freccia a discesa della casella di riepilogo Qualificatore e selezionare il nome del computer dall'elenco a discesa.
Fare clic sul pulsante Trova accanto all'elenco diQualificatore per aprire la finestra di dialogo Seleziona connessione debugger remoto.La finestra di dialogo Seleziona connessione debugger remoto vengono elencati tutti i controlli presenti nella sottorete locale e qualsiasi dispositivo che viene collegato direttamente al computer tramite un cavo Ethernet di.Fare clic sul computer o il dispositivo desiderato e fare clic Seleziona.
L'impostazione Trasporto viene mantenuta tra una sessione di debug e l'altra.L'impostazione Qualificatore viene invece mantenuta tra due sessioni di debug solo il qualificatore consente di stabilire correttamente una connessione di debug.
La gestione degli errori di connessione
I processi in esecuzione a cui il debugger di Visual Studio tenta di connettersi possono contenere uno o più tipi di codice.I tipi di codice che il debugger può connettersi a vengono visualizzati e selezionati nella finestra di dialogo Seleziona tipo di codice.
[!NOTA]
Affinché il debugger possa connettersi a codice gestito scritto in C++, è necessario che venga generato l'elemento DebuggableAttribute.È possibile aggiungere automaticamente questo elemento al codice mediante il collegamento all'opzione del linker /ASSEMBLYDEBUG.
![]() |
---|
Per connettersi alle finestre dell'applicazione scritta in JavaScript, è necessario innanzitutto abilitare il debug per l'applicazione.Vedere Attach the debugger nel centro per sviluppatori di Windows. |
In alcuni casi il debugger riesce a connettersi a un tipo di codice ma non a un altro.Questa situazione può verificarsi quando si tenta di stabilire una connessione a un processo in esecuzione in un computer remoto,nel quale potrebbero essere stati installati i componenti per il debug remoto solo per alcuni tipi di codice.Può inoltre verificarsi quando si tenta di stabilire una connessione a due o più processi per il debug diretto di un database.Durante il debug SQL è supportata esclusivamente la connessione a un singolo processo.
Se il debugger è in grado di connettersi solo ad alcuni tipi di codice, verrà visualizzato un messaggio che identifica i tipi per i quali la connessione ha avuto esito negativo.
Se il debugger riesce a connettersi ad almeno un tipo di codice, è possibile procedere con il debug del processo.Sarà possibile eseguire il debug solo dei tipi di codice con i quali è stata stabilita una connessione.Il messaggio di esempio sopra riportato segnala che non è stato possibile stabilire una connessione al tipo di codice di script.Non sarà quindi possibile eseguire il debug del codice di script nel processo.Il codice di script del processo verrà comunque eseguito, ma non sarà possibile impostare punti di interruzione, visualizzare dati o eseguire altre operazioni di debug nello script.
Se si desidera ottenere informazioni più specifiche sulla causa che ha impedito al debugger di connettersi a un tipo di codice, è possibile provare a ripetere la connessione solo a quel tipo di codice.
Per ottenere informazioni specifiche sulla causa dell'errore di connessione a un tipo di codice
Disconnettersi dal processo.Scegliere Disconnetti tutto dal menu Debug.
Riconnettersi al processo, selezionando un solo tipo di codice.
Nella finestra di dialogo Connetti a processo selezionare il processo nell'elenco Processi disponibili.
Fare clic su Seleziona.
Nella finestra di dialogo Seleziona tipo di codice selezionare il pulsante di opzione Esegui il debug di questi tipi di codice e il tipo di codice per cui si è verificato il problema di connessione.Deselezionare tutti gli altri codici.
Scegliere OK.La finestra di dialogo Seleziona tipo di codice verrà chiusa.
Nella finestra di dialogo Connetti a processo scegliere Connetti.
La connessione non verrà eseguita e verrà visualizzato un messaggio di errore specifico.