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.
La funzionalità di debug Just-In-Time può avviare automaticamente Visual Studio quando un'app in esecuzione al di fuori di Visual Studio si verifica un errore o si arresta. Con just-In-Time debug, è possibile testare le app all'esterno di Visual Studio e aprire Visual Studio per avviare il debug quando si verifica un problema.
Just-In-Time debug funziona per le app desktop di Windows. Non funziona per le app di Windows universali o per il codice gestito ospitato in un'applicazione nativa, ad esempio i visualizzatori.
Suggerimento
Per interrompere la visualizzazione della finestra di dialogo Just-In-Time Debugger, ma non è installato Visual Studio, vedere Disabilitare just-In-Time Debugger. Se Visual Studio è stato installato, potrebbe essere necessario disabilitare Just-In-Time debug dal Registro di sistema di Windows.
Abilitare o disabilitare il debug Just-In-Time in Visual Studio
Quando si usa il debugger Just-In-Time in Visual Studio, le opzioni di configurazione per il debugger sono accessibili dai menu Opzioni strumenti> oOpzionidi debug>. Il debugger Just-In-Time è disponibile nella sezioneDebug e test dei > del programma di installazione.
Annotazioni
Per abilitare o disabilitare il debug just-In-Time, è necessario eseguire Visual Studio come amministratore. L'abilitazione o la disabilitazione di Just-In-Time il debug imposta una chiave del Registro di sistema e potrebbero essere necessari privilegi di amministratore per modificare la chiave. Per aprire Visual Studio come amministratore, fare clic con il pulsante destro del mouse sull'app di Visual Studio e scegliere Esegui come amministratore.
Per abilitare o disabilitare il debug just-In-Time:
Nel riquadro Opzioni strumenti> espandere la sezione Tutte le impostazioni>>.
Nel riquadro destro selezionare il collegamento Configura il debugging Just-In-Time.
Nella finestra di dialogo Opzioni del debugger di Visual Studio configurare l'opzione Abilita il debug Just-In-Time per questi tipi di codice. Selezionare i tipi di codice di cui eseguire il debug Just-In-Time: gestito (.NET Framework) o nativo.
Seleziona OK.
Nella finestra di dialogo Strumenti>Opzioni, espandere la sezione Debugging>Just-In-Time.
Nella casella Enable Just-In-Time debugging for these types of code (Abilita il debug Just-In-Time per questi tipi di codice), selezionare i tipi di codice desiderati per il debug Just-In-Time: Gestito, Nativo e/o Script.
Seleziona OK.
Se si abilita il debugger Just-In-Time, ma non si apre quando un'app si arresta in modo anomalo o si verificano errori, vedere Risolvere i problemi relativi al debug just-In-Time.
Disabilita just-In-Time debug dal Registro di sistema di Windows
Just-In-Time debug potrebbe essere ancora abilitato anche se Visual Studio non è più installato nel computer. Se Visual Studio non è più installato, puoi disabilitare Just-In-Time debug modificando il Registro di sistema di Windows.
Per disabilitare il debug just-In-Time modificando il Registro di sistema:
Dal menu Start di Windows eseguire l'editor del Registro di sistema (regedit.exe).
Nella finestra Editor del Registro di sistema individuare ed eliminare le voci del Registro di sistema seguenti, se presenti:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
Eliminare anche le seguenti voci del Registro di sistema, se presenti:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
Assicurarsi di non eliminare o modificare altre chiavi del Registro di sistema.
Chiudere la finestra Dell'editor del Registro di sistema .
Abilitare il debug Just-In-Time di un modulo Windows
Per impostazione predefinita, le app di Windows Form hanno un gestore eccezioni di primo livello che consente all'app di continuare l'esecuzione se può essere ripristinata. Se un'app Windows Form genera un'eccezione non gestita, viene visualizzata la finestra di dialogo seguente:
Per abilitare just-In-Time debug anziché la gestione degli errori standard di Windows Form, aggiungere queste impostazioni:
Nella sezione
system.windows.formsdel file machine.config o del file <nome dell'app>.exe.config, impostare iljitDebuggingvalore sutrue:<configuration> <system.windows.forms jitDebugging="true" /> </configuration>In un'applicazione C++ Windows Form, imposta
DebuggableAttributesutrueanche in un file .config o nel tuo codice. Se si esegue la compilazione con /Zi e senza /Og, il compilatore imposta automaticamente questo attributo. Se vuoi eseguire il debug di una build di versione non ottimizzata, devi tuttavia impostareDebuggableAttributeaggiungendo la riga seguente nel file AssemblyInfo.cpp dell'app:[assembly:System::Diagnostics::DebuggableAttribute(true, true)];Per altre informazioni, vedere DebuggableAttribute.
Usare il debugging Just-In-Time
Questo esempio illustra il debug Just-In-Time quando un'applicazione genera un errore.
Per seguire questa procedura, è necessario che Visual Studio sia installato. Se non hai Visual Studio, puoi scaricare gratuitamente Visual Studio Community Edition.
Assicurarsi che il debug just-In-Time sia abilitato configurando l'opzione Abilita just-In-Time debug per questi tipi di codice in Opzioni strumenti>.
Per questo esempio si crea un'app console C# in Visual Studio che genera un NullReferenceException.
In Visual Studio creare un'app console C# (File>New>Project>Visual C#>Console Application) denominata ThrowsNullException. Per altre informazioni sulla creazione di progetti in Visual Studio, vedere Procedura dettagliata: Creare una semplice applicazione.
Quando il progetto viene aperto in Visual Studio, aprire il file Program.cs . Sostituire il metodo Main() con il codice seguente, che stampa una riga nella console e quindi genera un'eccezione NullReferenceException:
static void Main(string[] args) { Console.WriteLine("we will now throw a NullReferenceException"); throw new NullReferenceException("this is the exception thrown by the console app"); }Per compilare la soluzione, scegliere la configurazione Debug (impostazione predefinita) o Release e quindi selezionare Compila> soluzione.
Per l'esperienza di debug completa, selezionare la configurazione debug .
Se si seleziona la configurazione Rilascio, è necessario disattivare "Just My Code" per il funzionamento di questa procedura.
Nel riquadro Opzioni strumenti> espandere la sezione Tutte le impostazioni>> e deselezionare la casella di controllo Abilita Just My Code.
Nella finestra di dialogo Opzioni strumenti> espandere la sezione Debug> e deselezionare la casella di controllo Abilita Just My Code.
Quando si deseleziona questa opzione, l'opzione Avvisa se non è presente codice utente all'avvio del debug (solo gestito) viene disabilitata automaticamente.
Per altre informazioni sulle configurazioni di compilazione, vedere Informazioni sulle configurazioni di compilazione.
Aprire l'app compilata ThrowsNullException.exe nella cartella del progetto C# (...\ThrowsNullException\ThrowsNullException\bin\Debug o ...\ThrowsNullException\ThrowsNullException\bin\Release).
Verrà visualizzata la finestra di comando seguente:
Verrà visualizzata la finestra di dialogo Scegli Just-In-Time Debugger.
In Debugger disponibili selezionare Nuova istanza della <versione/edizione> di Visual Studio preferita, se non è già selezionata.
Seleziona OK.
Il progetto ThrowsNullException si apre in una nuova istanza di Visual Studio, con l'esecuzione interrotta alla riga che ha causato l'eccezione:
A questo punto è possibile avviare il debug. Se si esegue il debug di un'app reale, è necessario scoprire perché il codice genera l'eccezione.
Attenzione
Se l'app contiene codice non attendibile, viene visualizzata una finestra di dialogo di avviso di sicurezza che consente di decidere se procedere con il debug. Prima di continuare il debug, decidere se considerare attendibile il codice. Il codice è stato scritto manualmente? Se l'applicazione è in esecuzione in un computer remoto, si riconosce il nome del processo? Se l'app è in esecuzione in locale, prendere in considerazione la possibilità di eseguire codice dannoso nel computer. Se si decide che il codice è attendibile, selezionare OK. In caso contrario, selezionare Annulla.
Risolvere i problemi di Just-In-Time debugging
Se il debug Just-In-Time non viene avviato quando un'app va in crash, anche se è abilitato in Visual Studio:
Un problema noto di Windows potrebbe causare l'esito negativo del debugger just-In-Time.
La correzione consiste nell'aggiungere un valore DWORDAuto, con dati valorepari a 1, alle seguenti chiavi del Registro di sistema:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
(Per le app a 32 bit in computer a 64 bit) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
Windows Error Reporting potrebbe prendere il controllo della gestione degli errori sul computer.
Per risolvere questo problema, usare l'editor del Registro di sistema per aggiungere un valore DWORD di Disabled, con Valore dati pari a 1, alle chiavi del Registro di sistema seguenti:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting
(Per le app a 32 bit su macchine a 64 bit) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting
Per altre informazioni, vedere Impostazioni WER.
Durante il debug just-In-Time potrebbero essere visualizzati i messaggi di errore seguenti:
Impossibile connettersi al processo di arresto anomalo del sistema. Il programma specificato non è un programma Windows o MS-DOS.
Il debugger ha tentato di connettersi a un processo in esecuzione con un altro utente.
Per risolvere questo problema, in Visual Studio aprire Debug>Collega a processo (o premere CTRL + ALT + P) e trovare il processo di cui si vuole eseguire il debug nell'elenco Processi disponibili . Se non si conosce il nome del processo, trovare l'ID processo nella finestra di dialogo Just-In-Time Debugger di Visual Studio . Selezionare il processo nell'elenco Processi disponibili e selezionare Connetti. Selezionare No per chiudere la finestra di dialogo Just-In-Time debugger.
Impossibile avviare il debugger perché nessun utente ha effettuato l'accesso.
Non è presente alcun utente connesso alla console, quindi non è disponibile alcuna sessione utente per visualizzare la finestra di dialogo Just-In-Time debug.
Per risolvere il problema, accedere al computer.
Classe non registrata.
Il debugger ha tentato di creare una classe COM non registrata, probabilmente a causa di un problema di installazione.
Per risolvere il problema, usare il programma di installazione di Visual Studio per reinstallare o ripristinare l'installazione di Visual Studio.
Contenuti correlati
- Sicurezza del debugger
- Esaminare prima il debugger
- Finestra di dialogo Opzioni, Debug, Just-In-Time
- Avviso di sicurezza: l'associazione a un processo di proprietà di un utente non attendibile può essere pericolosa. Se le seguenti informazioni sembrano sospette o non siete sicuri, non allegate a questo processo