2010-04-28 15 views
6

मैं थोड़ी देर के लिए यह सोच रहा हूं - क्या कोड/प्रोग्राम ब्रेकपॉइंट्स का कोई तरीका है ...? सशर्त? उदाहरण के लिए, क्या मैं कुछ निर्दिष्ट कर सकता हूं - "जब यह वैरिएबल बन जाता है मूल्य, ब्रेक और डीबगर खोलें"? (विशेष रूप से लंबे लूप में, जब आप देर से लूप मान के लूप निष्पादन को डीबग करना चाहते हैं।)क्या ब्रेकपॉइंट्स को सशर्त रूप से सेट या कोड करने का कोई तरीका है?

मुझे लगता है कि यह आईडीई-विशिष्ट हो सकता है क्योंकि अलग-अलग आईडीई में डीबगिंग को अलग-अलग लागू किया गया है ... मैं चाहता हूं किसी भी आईडीई में यह कैसे करना है, लेकिन विशेष रूप से एक्लिप्स और विजुअल स्टूडियो में यह जानने में रुचि हो।

उत्तर

5

यह विजुअल स्टूडियो में निश्चित रूप से संभव है। ब्रेकपॉइंट डालने के लिए आप सामान्य रूप से बाएं हाशिए में क्लिक कर सकते हैं, और उसके बाद उस ब्रेकपॉइंट पर राइट क्लिक करें। राइट क्लिक मेनू में से एक विकल्प "कंडीशन ..." है, और आप एक भविष्यवाणी निर्दिष्ट कर सकते हैं जो डीबगर को केवल उस ब्रेकपॉइंट पर ब्रेक बताएगा यदि भविष्यवाणी पूरी हो जाती है।

+0

धन्यवाद! किसी भी सुराग ग्रहण में इसे कैसे पूरा करें? हालांकि अब मैं शब्दावली जानता हूं और यह संभव है कि मैं शायद इसे आसानी से Google – froadie

+0

दुर्भाग्य से, नहीं कर सकता। मैंने पिछले तीन से चार साल पहले ग्रहण का उपयोग किया था और मुश्किल से इसे याद किया =/ – Tejs

+0

ठीक है, मुझे पता चला कि एक ही तकनीक की कोशिश करके कैसे :) शायद मैं इसे एक नए उत्तर के रूप में पोस्ट करूंगा। मदद – froadie

1

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

3

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

इसके अतिरिक्त, .NET भाषाएं प्रोग्रामिंग को निष्पादन को तोड़ने के लिए Debugger.Break() विधि को कॉल कर सकती हैं। यह भी एक if बयान के भीतर किया जा सकता है:

if (count > 8 && Debugger.IsAttached) 
    Debugger.Break(); 
+0

मदद के लिए धन्यवाद! और क्या कोई ऐसी विधि है जो विकास और उत्पादन वातावरण के बीच स्विच करते समय डिबगिंग कोड को आसानी से अक्षम/सक्षम कर सकती है? – froadie

+0

हां। #ifdef निर्देश का प्रयोग करें: '#ifdef DEBUG' 'MessageBox.Show (" यह एक डीबग संस्करण है! ");' '# endif'। आप '# परिभाषित BETA_BUILD' के साथ नए निर्देश परिभाषित कर सकते हैं। –

+0

इसके अलावा, रिलीज कॉन्फ़िगरेशन के निर्माण के दौरान 'डीबग' कक्षा में सभी कॉल मौजूद नहीं होंगे, क्योंकि इसमें 'सशर्त एट्रिब्यूट' लागू है, जिसका उपयोग '# ifdef' पर समान प्रभाव है, केवल एक विधि या कक्षा स्तर पर। आप अपनी विधियों और कक्षाओं में विशेषता लागू कर सकते हैं। –

2

ग्रहण में एक सशर्त ब्रेकप्वाइंट स्थापना (सभी दृश्य स्टूडियो जवाब के लिए धन्यवाद!):

एक ब्रेकपाइंट सेट करें। राइट-क्लिक करें और "ब्रेकपॉइंट गुण ..." चुनें। "शर्त सक्षम करें" की जांच करें और टेक्स्ट क्षेत्र में अपना हालत कोड दर्ज करें।

3

यदि सशर्त ब्रेकपॉइंट्स आपके आईडीई द्वारा समर्थित नहीं हैं, तो एक कथन में जोड़ें और इसके अंदर तोड़ दें।

if (variable == 3) { 
    // Stub code to attach breakpoint. 
    1 = 1; 
} 
संबंधित मुद्दे

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