Domanda

Ho un'eccezione non gestita che fa apparire la finestra di dialogo Assistente eccezionale.

Quando faccio clic su Visualizza in dettaglio ..., l'eccezione stessa ha alcuni valori nel suo modello a oggetti personalizzati che non valuterà nella griglia della proprietà, ma so di poterlo valutare nella finestra immediata. (In questo caso la griglia della proprietà non mi permette di fare un drill in una raccolta, ma ci possono essere altri casi)

Senza alterare il codice per aggiungere un blocco di prova, Come posso andare alla finestra immediata e valutare le espressioni sull'eccezione non mandata?

La risposta sarà probabilmente un po 'di magia che non lo so ancora, come? Questa.CurrentException o

qualcosa che coinvolge System.Diagnostics.StackFrame o chissà. Qualcosa di intelligente.

C'è un modo per navigare verso di esso usando il thread del debugger, ma è abbastanza complicato. Se riesci a prenderlo e renderlo semplice con un wrapper che potrebbe essere una soluzione.

È stato utile?

Soluzione

Hai provato a impostare il debugger per rompere quando l'eccezione viene lanciata invece che proprio quando è manuale dell'utente?

Per fare questo, vai al menu principale VS2010 e seleziona il menu "Debug" Avanti Seleziona "Eccezioni ..."

Ciò farà apparire una finestra di dialogo come:Debug - loading= Exceptions.. menu">

Seleziona la colonna lanciata

Ora, quando viene lanciata la tua eccezione e dovresti essere in grado di valutare le tue variabili locali nella finestra immediata.

Nella scheda Locale posso vedere la variabile $ eccezione:Local variables contains $exception

Sono in grado di utilizzare la variabile "$ eccezione" nella finestra immediata:Immediate Window accessing $exception

Aggiornare: Anche per una facile attivazione delle eccezioni, consigliamo di utilizzare il Exception Breaker Visual Studio Extension, che ti consente di attivare la gestione e la gestione delle eccezioni dalla barra degli strumenti invece di dover perforare il menu di debug.

Altri suggerimenti

Non conosco Visual Studio 2010 ma in Visual Studio 2012 quando si verifica un'eccezione non gestita è mostrata nel Locals finestra con il nome $exception.

C'è una proprietà che non valuterà nella griglia della proprietà

Se la proprietà non può essere valutata, il debugger non ti aiuterà Come hai visto; Quindi la finestra immediata farebbe lo stesso.

Avevo una proprietà invalida in modo tale da lanciare un'eccezione in VS2010 e causare il crash del debugger quando ho tentato di valutarlo. I null che venivano restituiti dalle proprietà non erano belli per il debugger.

Ti consiglio di andare old school sulla questione e metti Trace.Write All'interno della proprietà e altrove e monitorare invece i rapporti di scrittura nella finestra di output.

Come tracciare e eseguire il debug in Visual C#

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top