से "सभी अपवादों को तोड़ें" को कैसे सेट करें, मैं डीबगर में सीएलआर अपवादों को जल्दी से टॉगल करने के लिए एक एक्सटेंशन बनाना चाहता हूं।
मैंने कई दृष्टिकोणों की कोशिश की है, जिनमें से कोई भी संतोषजनक नहीं है।पैकेज
यहाँ मैं पहले से ही करने की कोशिश की है:
ExceptionSettings.SetBreakWhenThrown
(MSDN)
यह बहुत धीमी है (this Connect issue देखें)। मैंने प्रश्न "Toggle “Break when an exception is thrown.” using macro or keyboard shortcut" से दृष्टिकोण की कोशिश की है और न ही विश्वसनीय रूप से काम करने लगते हैं: ज्यादातर मामलों में केवल शीर्ष स्तर का चेकबॉक्स सेट हो जाता है, और यह वास्तव में डिबगिंग के दौरान अपवादों को तोड़ता नहीं है।कॉल
DTE.ExecuteCommand("Debug.Exceptions")
खिड़की दिखाने के लिए, और कॉलSetWindowsHookEx
(MSDN) सिर्फ इतना है कि इससे पहले कि इसे रोकने के लिए इससे पहले कि यह प्रतीत होता है (ताकि उपयोगकर्ता के लिए कोई फ़्लैश है) करने के लिए। ऐसा लगता है क्योंकि मैं संदेश को रोक सकता था औरHWND
प्राप्त कर सकता था। लेकिन ऐसा लगता है कि हैकी और खिड़की ठीक से हेरफेर करना आसान नहीं है (इसमें कस्टम चेकबॉक्स औरSysTreeView32
के साथSysListView32
का कुछ अजीब संयोजन है)। तो मैं इसे आखिरी मौका समाधान के रूप में छोड़ रहा हूं।किसी तरह प्रबंधित कोड के लिए
IDebugEngine2
(MSDN) हो औरIDebugEngine2.SetException
(MSDN) डिबगिंग सत्र के प्रारंभ में कहते हैं। ऐसा लगता है, लेकिन मुझे डीबग इंजन प्राप्त करने में समस्याएं आ रही हैं। मैंनेIVsLoader
के साथ on MSDN forums वर्णित दृष्टिकोण की कोशिश की है, लेकिन मुझे पूरा यकीन है कि यह मुझे डिबगिंग सत्र से संबंधित एक नया उदाहरण देता है।मैंने यहां सवाल भी पूछा है: "Visual Studio: How to get IDebugEngine2 from VS Package (except IVsLoader)", लेकिन समाधान नहीं मिला।
मैं
IVsDebugger.AdviseDebugEventCallback
(MSDN) का उपयोग कर की कोशिश की है औरIDebugEventCallback2
(MSDN) के कार्यान्वयन में गुजर, लेकिन मैं हमेशाpEngine
के लिएnull
(और कोईIDebugEngineCreateEvent2
या तो) हो रही है।मैं
IDebugSessionCreateEvent2
(undocumented?) और इसे सेIDebugSession2
प्राप्त कर सकते हैं, लेकिन इसकीSetException
कॉल हमेशा मुझे गलत तर्क के लिए एकHRESULT
देता है, तो मैं यहाँ (IVsLoader
से इंजन परSetException
बुला कुछ कमी हो सकती है ठीक देता मिलता है, बस काम नहीं करता)।
क्या कोई अन्य दृष्टिकोण है जो उन लोगों से बेहतर है या क्या मैंने मौजूदा लोगों में कुछ याद किया है?
अद्यतन/नोट: Exception Breaker:
आप इस प्रश्न पाया क्योंकि आप एक तेजी से "सभी अपवाद पर तोड़" चाहते हैं, मैं एक नि: शुल्क विस्तार आप दृश्य स्टूडियो गैलरी से प्राप्त कर सकते हैं बना दिया है।
तुम बस +1 प्रयास आप इस प्रश्न में डाल के लिए की तुलना में अधिक के लायक है, तो मैं पिछले 3 एक संभावित समाधान पर काम के घंटे में डाल दिया। :) मेरा मानना है कि यह केवल वीएस2012 पर ही लागू हो सकता है लेकिन उम्मीद है कि हम इसे 2010 में भी प्राप्त कर सकते हैं। –
मैं वास्तव में आपकी मदद की सराहना करता हूं! मेरे कौशल ने वर्तमान में निम्न स्तर की डीबगिंग पर अपनी सीमा को मारा, इसलिए मैं वहां फंस गया था। मुझे आशा है कि यह विस्तार लोगों को शोध करने में खर्च करने से ज्यादा समय बचाएगा। –