2011-11-01 19 views
6

के लिए WPF अपवाद रैपिंग अक्षम करें क्या डीबगिंग के दौरान WPF के बहुत परेशान अपवाद रैपिंग को अक्षम करने का कोई तरीका है?डीबगिंग

एक उदाहरण एक विंडो होगी जो एक टेक्स्ट बॉक्स का मालिक है, टेक्स्ट बॉक्स किसी संपत्ति के लिए बाध्य है, उस संपत्ति पर गेटटर एक अपवाद फेंकता है जिसे प्रेजेंटेशन फ्रेमवर्क द्वारा नियंत्रित नहीं किया जा सकता है (नए स्टैक ओवरफ्लो एक्सेप्शन() को फेंक दें उदाहरण)।

क्या मैं कर रहा हूँ देखकर किया जाना चाहिए

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

इसके बजाय मैं क्या दिखाई दे रही है है ...

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

WPF के अपवाद रैपिंग की वजह से यह अपवाद भी कभी कभी पकड़ा और उसके बाद भेजा जाता है है एमएस के भीतर या तो पुनर्स्थापित या छुपा गहरा है। आंतरिक और अपवाद की वास्तविक साइट पर वापस असंभव है। इसके परिणामस्वरूप प्रेजेंटेशनफ्रेमवर्क.dll, PresentationCore.dll, और WindowsBase.dll का एक विशाल कॉलस्टैक देख रहा है लेकिन App.Main() को छोड़कर कोई उपयोगकर्ता कोड नहीं है।

यह बाध्यकारी, सृजन के दौरान बुलाए जाने वाले कार्यक्रमों और अन्य पूरी तरह से यादृच्छिक स्थितियों के बिना कविता या कारण के बिना होता है (बटन क्लिक के दौरान अपवाद कभी-कभी मुझे यह करता है)। अब हाँ, मैं अपवाद के अंदर स्टैक ट्रेस देख सकता हूं लेकिन स्टैक ट्रेस भी बहुत अधिक अर्थहीन है क्योंकि मैं उस फ्रेम पर वापस नहीं लौट सकता हूं यह देखने के लिए कि फेंकने के समय चर क्या हैं।

+0

+1। मैं इसे हर समय देखता हूं - अगर मेरी खिड़की का कन्स्ट्रक्टर अपवाद फेंकता है, तो मुझे यह पता लगाने के लिए इंजेक्शन अपवादों के दो स्तरों में खोदना होगा कि वास्तविक त्रुटि क्या थी। –

उत्तर

3

आम तौर पर जब डीबगिंग करते हैं तो मैं डीबग -> अपवादों का उपयोग करता हूं और सामान्य भाषा रनटाइम अपवादों के लिए फेंक दिया जाता हूं। यह तब बिंदु पर रुक जाएगा कि अपवाद फेंक दिया गया है।

Visual Studio 2010 Exceptions dialog with common language runtime exceptions ticked

+1

हालांकि यह समाधान काम करता है यह वास्तव में विशिष्ट WPF समस्या को हल नहीं करता है। अब मुझे सभी अपवादों को देखने के लिए मजबूर होना पड़ता है, भले ही वे पकड़े गए हों, जो एक असली दुःस्वप्न हो सकता है यदि मैं एक और तीसरी लाइब्रेरी का उपयोग कर रहा हूं जो आंतरिक रूप से फेंकता है और कौन जानता है कि कौन जानता है। जो मैं खोज रहा हूं वह केवल अनजान अपवादों को देखने का एक तरीका है कि डब्ल्यूपीएफ पकड़ रहा है/पुनर्विचार कर रहा है, श्रोताओं को डीबग करने के लिए भेज रहा है, या अन्यथा अस्पष्ट है। – NtscCobalt

संबंधित मुद्दे