2008-09-25 10 views
33

जितना अधिक मुझे आम तौर पर एसओ पर चर्चा/व्यक्तिपरक पोस्ट पसंद नहीं है, मैं वास्तव में उन लोगों के "छुपे हुए रहस्य" सेट की सराहना करता हूं जो लोगों ने एक साथ रखा है। वे कुछ सामान्य रूप से मिस्ड टूल्स का एक शानदार अवलोकन प्रदान करते हैं जिन्हें आप अब अन्यथा खोज सकते हैं।विजुअल स्टूडियो .NET डीबगर का "छिपे हुए रहस्य"?

इस प्रश्न के लिए मैं विजुअल स्टूडियो .NET डीबगर का पता लगाना चाहता हूं। वीएस.NET डीबगर में "छिपा रहस्य" में से कुछ क्या हैं जिन्हें आप अक्सर या हाल ही में खोजते हैं और चाहते हैं कि आप बहुत पहले जानते हों?

उत्तर

9

घड़ी खिड़की अपवाद है कि वर्तमान में भले ही आप एक पकड़ने है कि एक नामित चर को Exception उदाहरण आवंटित की जरूरत नहीं है कार्रवाई की जा रही दिखाएगा में $exception

+8

यह देखता है में डाल करने की आवश्यकता नहीं है, यह स्वचालित रूप से स्थानीय लोगों को खिड़कियों में पहला आइटम के रूप में दिखाई देगा। –

4

कुछ उपयोगी शॉर्टकट कुंजी।

  • F11 एक विधि में कदम उठाने के लिए।
  • Shift-F11 किसी विधि से बाहर निकलने के लिए।
  • F10 एक विधि पर कदम उठाने के लिए।
11

वेब डेवलपर के रूप में जो वेब सेवाओं के साथ काम करता है जो मेरे सामने वाले अंत कोड के समान समाधान के भीतर होते हैं, मुझे "attach" to a process को एक बड़ी समय बचतकर्ता होने की क्षमता मिली।

इससे पहले कि मुझे यह छुपे हुए मणि मिले, मुझे हमेशा कुछ फ्रंट-एंड कोड पर एक ब्रेकपॉइंट सेट करना होगा जिसे वेब सेवा विधि कहा जाता है और इसमें कदम रखा जाता है। अब जब मैं इस चाल/फीचर के बारे में जानता हूं, तो मैं आसानी से अपने कोड के किसी भी भाग पर ब्रेकपॉइंट्स सेट कर सकता हूं, जो मैं चाहता हूं कि मुझे समय और प्रयास लोड करें।

+1

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

+3

@ j0rd4n: यदि आप एक संदेश बॉक्स जोड़ सकते हैं, तो इसका मतलब है कि आप कोड जोड़ सकते हैं, इसका मतलब है कि आप प्रोग्रामिंग रूप से ब्रेकपॉइंट सेट करने के लिए 'डीबगर। ब्रेक() 'का उपयोग भी कर सकते हैं। – Abel

5

यह एक पुराना है। यदि आप एक घड़ी अभिव्यक्ति err,hr जोड़ते हैं, तो यह GetLastError() का परिणाम होगा, जिसे HRESULT (केवल VC++ डीबगर) के रूप में स्वरूपित किया जाएगा।

22

मेरी पसंदीदा विशेषताओं में से एक "When Hit..." विकल्प के लिए एक ब्रेकप्वाइंट पर उपलब्ध है। आप इस तरह के रूप में अन्य जानकारी के बहुत सारे, के साथ एक चर के मूल्य के साथ एक संदेश मुद्रित कर सकते हैं: - वर्तमान निर्देश

  • $CALLER - पिछला फ़ंक्शन नाम
  • $CALLSTACK -

    • $ADDRESS कॉल स्टैक
    • $FUNCTION - वर्तमान समारोह का नाम
    • $PID - प्रक्रिया आईडी
    • $PNAME - प्रक्रिया का नाम
    • $TID - थ्रेड ID
    • $TNAME - थ्रेड नाम

    आप भी इसे एक मैक्रो चलाने सकता है, लेकिन मुझे लगता है कि सुविधा उपयोग नहीं किया है।

  • 7

    आप विजुअल स्टूडियो डीबगर में विस्तारीकरण windbg लोड और उन्हें तत्काल खिड़की से उपयोग कर सकते हैं।

    18

    .net अनुप्रयोगों System.Diagnostics के लिए उपयोगी डिबगिंग चीजों के बहुत सारे है। उदाहरण के लिए Debugger वर्ग:

    Debugger.Break(); // Programmatically set a break point 
    Debugger.Launch(); // Launch the debugger if not already attached 
    Debugger.IsAttached // Check if the debugger is attached 
    

    System.Diagnostics भी अच्छा गुण के बहुत सारे है। दो मैं का उपयोग किया है विवरण को बदलने के लिए डीबगर प्रदर्शन विशेषता हैं स्थानीय लोगों खिड़की और कोड लंघन के लिए विशेषता के माध्यम से कदम में डाल आप डिबगिंग के बारे में परवाह नहीं है:

    // Displays the value of Property1 for any "MyClass" instance in the debugger 
    [DebuggerDisplay("{Property1}")] 
    public class MyClass { 
        public string Property1 { get; set; } 
    
        [DebuggerStepThrough] 
        public void DontStepInto() { 
         // An action we don't want to debug 
        } 
    } 
    
    9
    • धागे खिड़की, डिबग से:

      उसके ब्लॉग वी.एस. सुझावों का सबसे अच्छा स्रोत है। आप थ्रेज को फ्रीज और थॉव कर सकते हैं, और सक्रिय थ्रेड को स्विच कर सकते हैं। मल्टीथ्रेडिंग एप्लिकेशन के साथ किसी समस्या को डीबग करने या दोहराने पर यह बहुत ही बढ़िया है।

    • आप & एक अन्य जगह पर छोड़ पीला "अगले वक्तव्य" तीर खींच सकते हैं। जब प्रोग्राम फिर से शुरू होता है, तो वह उस कथन पर निष्पादन फिर से शुरू कर देगा। आप इसे टूलबार में जोड़ सकते हैं, सेट नेक्स्ट स्टेटमेंट नामक एक नीला तीर, लेकिन यह डिफ़ॉल्ट रूप से नहीं है।
    • आप "पूर्ववत करें" कर सकते हैं नेविगेशन तुमने किया था,, स्क्रॉल एक और फाइल करने के लिए जा रहा है, या एक संदर्भ के लिए कूद की तरह। शॉर्टकट ctrl-- (नियंत्रण शून्य है।) इस तरह आप एक फ़ंक्शन में कूद सकते हैं, वहां कोड की जांच कर सकते हैं, और जहां आप बिना देखे थे वहां वापस जाएं।
    +1

    # 2 बात करने के लिए, आप भी कोड की एक पंक्ति पर राइट क्लिक करें और "सेट अगले बयान" चुनते हैं और यह है कि लाइन के लिए निष्पादन बिंदु को स्थानांतरित कर सकते हैं। – CodingWithSpike

    +1

    'Ctrl -' और 'Ctrl-Shift-'(Ctrl-minus, Ctrl + Shift-minus) का उपयोग करके * नेविगेट बैकवर्ड/फॉरवर्ड * के लिए कीबोर्ड शॉर्टकट हैं, जिन्हें टूलबार में भी जोड़ा जा सकता है। हालांकि, उन्होंने डीबगिंग के साथ कुछ भी नहीं किया है और हमेशा विजुअल स्टूडियो में उपयोग किया जा सकता है। – Abel

    18

    आप घड़ी खिड़की में एक वस्तु राइट क्लिक करें और ऑब्जेक्ट आईडी बनाने क्लिक कर सकते हैं।

    ऐसा नहीं है कि उदाहरण के लिए एक आईडी नंबर असाइन करते हैं, आप एक जटिल वस्तु ग्राफ, जो एक ही उदाहरण का उल्लेख वस्तुओं में, देखने के लिए अनुमति देता है जाएगा।

    +6

    सबसे महत्वपूर्ण बात यह है कि यह आपको ऑब्जेक्ट की सामग्री दिखाएगा * भले ही यह वर्तमान कॉल स्टैक * में न हो। आप घड़ी खिड़की के नीचे खाली लाइन में आईडी (उदाहरण के लिए "1 #") टाइप करने के लिए की है। –

    4

    चीजें मैं अक्सर उपयोग करें:

    • क्लिक करें मेनू आइटम "डीबग | अपवाद" (या Ctrl-D, लघु के लिए ई) और आप समय है कि किसी भी अपवाद फेंक दिया जाता है पर तोड़ने सक्षम, या कर सकते हैं कुछ अपवादों को तोड़ने का चयन करें।

    • आप एमएस सर्वर से कुछ फ्रेमवर्क स्रोत कोड और प्रतीकों को डाउनलोड करने और फ्रेमवर्क कोड में कदम डाउनलोड करने के लिए डीबगर सेट अप कर सकते हैं। (कुछ पुस्तकालय, जैसे System.ServiceModel, अभी तक उपलब्ध नहीं हैं)। यह डिबगिंग के तहत विकल्प विंडोज़ में है। MSDN How-To देखें।

    • आप IE में चल जावास्क्रिप्ट डिबग करने के लिए VS.NET डिबगर उपयोग कर सकते हैं। आपको केवल आईई जावास्क्रिप्ट डीबगर स्थापित करने की आवश्यकता है, और आईई की सेटिंग्स में जावास्क्रिप्ट डिबगिंग सक्षम करें। फिर जेएस त्रुटि पर यह एक "क्या आप डीबग करना चाहते हैं" संवाद बॉक्स पॉप अप करेंगे, और आप VS.NET में डीबग करना चुन सकते हैं।

    5

    आप वर्तमान पंक्ति कर्सर (पीले तीर) को खींच सकते हैं अप और अपने कोड नीचे जब निष्पादन रुका हुआ है।

    इसके अतिरिक्त, अपवाद पर रोक के दौरान इसे सक्षम करने के लिए आपको पहले अपवाद विवरण पर "संपादन सक्षम करें" पर क्लिक करना होगा। Debug-> अपवाद:

    तुम भी के तहत ब्याज में से एक की जाँच के द्वारा नियंत्रित अपवाद पर वी.एस. तोड़ कर सकते हैं फेंक स्तंभ

    1

    आप खोल सकते हैं और एक स्रोत फ़ाइल में एक ब्रेकपाइंट रखना पड़ता है जब फ़ाइल एक और समाधान के अंतर्गत आता है सकते हैं (बाहरी फाइल)। डीबगर अभी भी ब्रेकपॉइंट हिट कर सकता है। बाहरी फ़ाइल को डीबग करने के लिए किसी अन्य विजुअल स्टूडियो इंस्टेंस को खोलने की आवश्यकता नहीं है। वेब सेवाओं को डीबग करने में सहायक जो आप स्रोत करते हैं। यह तब तक काम करता है जब तक सभी स्रोत वर्तमान और संकलित नहीं होते हैं।

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