Condividi tramite


Connessione a processi in esecuzione con il debugger di Visual Studio

Connettersi a un processo in esecuzione, connettersi a un processo in un computer remoto, risolvere gli errori di connessione.

Contenuto

Why debug attached processes?

Attach to a running process

Attach to a process on a remote computer

Troubleshoot attach errors

Perché eseguire il debug di processi connessi?

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 usare i comandi di esecuzione del debugger, esaminare lo stato del programma e così via. Per altre informazioni, vedere Eseguire il debug di uno o più processi in Visual Studio, Avviare, interrompere, eseguire istruzioni, esplorare il codice e arrestare il debug in Visual Studio e Visualizzazione di dati nel debugger. La possibilità di analizzare il 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.

Nota di C++Nota di C++

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.

Avviso

Per connettersi a un'app Windows Store scritta in JavaScript, è innanzitutto necessario abilitare il debug per l'app.Vedere Attach the debugger nel Centro sviluppatori Windows.

Torna all'inizioContents

Connettersi a un processo in esecuzione

  1. Scegliere Connetti a processo dal menu Debug.

  2. Nella finestra di dialogo Connetti a processo individuare il programma con il quale si desidera stabilire una connessione nell'elenco Processi disponibili.

    1. Se il programma di cui si desidera eseguire il debug è in esecuzione in un altro computer, utilizzare la casella di riepilogo Qualificatore per selezionare o specificare il computer remoto. Per altre informazioni, vedere Debug e diagnostica remoti.

    2. Se il processo viene eseguito con un account utente diverso, selezionare la casella di controllo Mostra processi di tutti gli utenti.

    3. Se la connessione è stata effettuata mediante Connessione desktop remoto, selezionare la casella di controllo Mostra processi in tutte le sessioni.

  3. 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:

    1. Fare clic su Seleziona.

    2. 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.

    3. Fare clic su OK.

  4. 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 altre informazioni, vedere Procedura: impostare il processo corrente.

    Nota

    Affinché il debugger possa connettersi a codice gestito scritto in C++/CLI, è 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 altre 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 -p ProcessId 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 sul sito https://go.microsoft.com/fwlink/?LinkId=168279.

Torna all'inizioContents

Connettersi a un processo in un computer remoto

Quando si utilizza la finestra di dialogo Connetti a processo, è possibile selezionare un altro computer configurato per il debug remoto. Per altre informazioni, vedere Impostare Remote Tools sul dispositivo. 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:

  1. Nella finestra di dialogo Connetti a processo selezionare il tipo di connessione appropriato nell'elenco Trasporto. Per la maggior parte dei casi è possibile usare l'impostazione Predefinito.

  2. Usare la casella di riepilogo Qualificatore per scegliere il nome del computer remoto in uno dei seguenti modi:

    1. Digitare il nome nella casella di riepilogo Qualificatore.

    2. Fare clic sulla freccia a discesa della casella di riepilogo Qualificatore e selezionare il nome del computer dall'elenco a discesa.

    3. Scegliere il pulsante Trova accanto all'elenco Qualificatore per aprire la finestra di dialogo Seleziona connessione debugger remoto. Nella finestra di dialogo Seleziona connessione debugger remoto sono elencati tutti i dispositivi presenti nella subnet locale e qualsiasi dispositivo connesso direttamente al computer tramite un cavo Ethernet. Fare clic sul computer o sul dispositivo desiderati e scegliere 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.

Back to Contents

Torna all'inizioContents

Risolvere gli 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 a cui il debugger può connettersi 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.

Avviso

Per connettersi a un'app Windows Store scritta in JavaScript, è innanzitutto necessario abilitare il debug per l'app.Vedere Attach the debugger nel Centro sviluppatori 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

  1. Disconnettersi dal processo. Scegliere Disconnetti tutto dal menu Debug.

  2. Riconnettersi al processo, selezionando un solo tipo di codice.

    1. Nella finestra di dialogo Connetti a processo selezionare il processo nell'elenco Processi disponibili.

    2. Fare clic su Seleziona.

    3. 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.

    4. Fare clic su OK. La finestra di dialogo Seleziona tipo di codice verrà chiusa.

    5. Nella finestra di dialogo Connetti a processo scegliere Connetti.

    La connessione non verrà eseguita e verrà visualizzato un messaggio di errore specifico.

Back to Contents

Vedere anche

Concetti

Eseguire il debug di uno o più processi in Visual Studio

Debug JIT in Visual Studio

Altre risorse

Debug e diagnostica remoti