2011-11-01 13 views
6

Esiste un modo per disabilitare l'avvolgimento delle eccezioni molto fastidioso di WPF durante il debug?Disabilita il wrapping delle eccezioni WPF per il debug

Un esempio potrebbe essere una finestra che possiede una casella di testo, la casella di testo è associata a una proprietà, il getter su quella proprietà genera un'eccezione che non può essere gestita dal framework di presentazione (lanciare il nuovo StackOverflowException() per esempio).

Quello che sto al previsto è

 get 
     { 
      throw new StackOverflowException(); // < Exception happened here 
     } 

Invece quello che sto vedendo è ...

No Source Available 
    Call Stack Location: 
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k) + 0x64 bytes 

A causa di avvolgimento eccezione di WPF questa eccezione è anche talvolta catturati e spediti poi è ripubblicato o nascosto in profondità all'interno di MS.Internals e impossibile tornare al sito di eccezione effettivo. Questo ci porta a vedere un gigantesco callstack di PresentationFramework.dll, PresentationCore.dll e WindowsBase.dll ma nessun codice utente ad eccezione di App.Main().

Ciò si verifica durante l'associazione, gli eventi richiamati durante la creazione e altre situazioni completamente casuali senza motivo o motivo (eccezione durante il clic del pulsante a volte mi fa questo). Ora sì, posso guardare la traccia dello stack all'interno dell'eccezione, ma quella traccia dello stack è anche praticamente priva di significato perché non posso tornare a quel frame per vedere quali sono le variabili al momento del lancio.

+0

+1. Lo vedo sempre - se il costruttore della mia finestra genera un'eccezione, devo scavare in due livelli di InnerExceptions per scoprire quale fosse l'errore reale. –

risposta

3

Generalmente durante il debug, utilizzerei il debug -> eccezioni e seleziono generato per Common Language Runtime Exceptions. Questo si fermerà al punto in cui viene lanciata l'eccezione.

Visual Studio 2010 Exceptions dialog with common language runtime exceptions ticked

+1

Mentre questa soluzione funziona, non risolve esattamente il problema specifico di WPF. Ora sono costretto a vedere tutte le eccezioni anche se vengono catturate che può essere un vero incubo se sto usando un'altra terza libreria che getta e cattura internamente per chissà quale motivo. Quello che sto cercando è un modo per vedere solo le eccezioni non catturate che WPF sta recuperando/rilanciando, inviando al debug di ascoltatori o altrimenti oscurando. – NtscCobalt

Problemi correlati