2008-11-07 9 views
17

हम में से कुछ डीबगर्स की उत्कृष्टता से इंकार करेंगे, लेकिन इसे और अधिक उपयोगी बनाने के लिए, कुछ चाल का उपयोग किया जा सकता है।ब्रेक पॉइंट डालने के लिए आपकी पसंदीदा डमी लाइन क्या है?

अजगर में उदाहरण के लिए, यदि आप पूरी तरह कुछ भी नहीं करना पास का उपयोग को छोड़कर एक को तोड़ने बिंदु डाल दिया और आप घड़ी विंडो में मूल्यों का पालन करने के लिए अनुमति देने के लिए आप कमरे छोड़ने के लिए कर सकते हैं।

सी # में, मैं GC.Collect() करते थे, लेकिन अब मैं का उपयोग अगर (गलत) {}

अपने सबसे चंचल डमी सीमा क्या है?

+0

तुम क्यों पर एक ब्रेकपाइंट डाल करने के लिए एक डमी लाइन की आवश्यकता होगी? आप वास्तविक लाइन का उपयोग कब नहीं कर सकते? –

+0

चार्ल्स, कुछ लाइनें आईएल में संकलित हो जाती हैं, इसलिए ब्रेकपॉइंट करने के लिए कोई जगह नहीं है। हालांकि, डीबग मोड में .NET उनके स्थान पर एक एनओपी कथन डालेगा, ताकि आप अभी भी उन्हें तोड़ सकें। – FlySwat

+0

सामुदायिक विकी? –

उत्तर

27

सी # में, आप इस का उपयोग कर सकते हैं:

System.Diagnostics.Debugger.Break(); 

यह एक ब्रेकपाइंट बाध्य करेगा।

+1

यही कारण है कि मैं एसओ प्यार करता हूँ। :) – Haoest

+0

एफडब्ल्यूआईडब्ल्यू, यह जावास्क्रिप्ट में 'डीबगर;' कथन के समान है। – orad

+1

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

8

Debug.Assert(true);, जो स्वचालित रूप से रिलीज बिल्ड से संकलित हो जाता है।

1
जीसीसी में

/जी ++:

assert("breakpoint"); 

एक ज़ोर करने के लिए किसी भी गैर 0/शून्य मान के रूप में सच लिया जाता है के बाद से।

या यहाँ तक कि

__asm__("nop"); 

कम से कम मैं जानता हूँ कि एक अनुदेश ब्रेकप्वाइंट पर होने के लिए उत्सर्जित बाइट नहीं होगा। ;)

5
volatile int e = 9; 

अस्थिरता का मतलब है कि संकलक इसे हटा नहीं देगा क्योंकि मैं चर को नहीं पढ़ता। '9' बस इतना है कि यह शून्य नहीं है। मेरे स्वाद के लिए शून्य बहुत आम है।

+5

कई प्रोग्रामर 42 – thepaulpage

+1

@tehp का उपयोग करेंगे - लेकिन यह एक और महत्वपूर्ण प्रेस है और मैं आलसी इंजीनियर हूं! कराहना! – Robert

0

बहुत परिष्कृत, लेकिन कार्यात्मक नहीं है।

bool bp; 

bp = true; //whereever I need to break. 
0

वीबी 6 में, मैं अपने आप से एक कोलन का उपयोग करता हूं। :

1

मैं

int x = 0; 

का उपयोग मैं हमेशा मैं इस लाइन जब मैं किया डिबगिंग रहा हूँ अवश्य निकाल दें।

+0

मेरा उत्तर देखें, लेकिन यह सुनिश्चित करने के लिए कि संकलक इसे हटा नहीं देता है, आपको 'अस्थिर' जोड़ना चाहिए। – Robert

+0

यदि आपके पास 'उपचार चेतावनी के रूप में त्रुटियों' सेटिंग सक्षम है तो यह काम नहीं करेगा। – orad

0

सी ++ में मैं

Sleep(0) 

का उपयोग कभी कभी, या सिर्फ एक चर रहा है कि इस्तेमाल किया खोजने के लिए और खुद के लिए असाइन करें:

i = i; 
2

मैं विशेष रूप से पर तोड़ने के लिए कुछ कभी नहीं लिखा है, लेकिन अगर मैंने किया, मैं

int moot; 

मैं इसका उपयोग तब करता हूं जब कुछ आवश्यक 'आउट' पैरामीटर होता है जो मैं नहीं करता परवाह है लेकिन प्रदान करना चाहिए।

0

सच है, यह अजीब बात है कि वीएस -2010 डीबगर एक अर्धविराम जैसे खाली बयान पर हैं तो चारों ओर ब्रेकपॉइंट्स को बदल देता है। यह एक डिबग बिल्ड में जैसा दिखता है उसके बावजूद आप अभी भी एक खाली सी # नियंत्रण ब्लॉक या अर्धविराम पर ब्रेकपॉइंट डाल सकते हैं, और यह सही ढंग से हिट हो जाएगा।

public static class Nop { public static void X() { } }; 

संपादित करें: थोड़ी देर के लिए इस से नाराज होने के बाद, मैं तो बस इस के बजाय का उपयोग करने के लिए बनाया के लिए इसका इस्तेमाल करने के लिए, अपने कोड में Nop.X() डाल ...

+0

@NoonSilk, आवश्यक 'आउट' पैरामीटर के संबंध में, जब मैं कोई मान वापस नहीं करना चाहता हूं तो मैं एक सहायक फ़ंक्शन का भी उपयोग करता हूं: "वापसी विफल (बाहर fn_out_param);" जहां fn_out_param युक्त फ़ंक्शन का 'आउट' पैरामीटर है, और 'विफल' फ़ंक्शन केवल कुछ भी पैरामीटर सेट नहीं करता है। यह उस कार्य में वापसी की स्थिति रखता है जिसे मैं एक पंक्ति के बारे में सोचता हूं। –

1

C/C++ के लिए मैं

__asm int 3; 

कि कोड है जो डिबगर पकड़ेगा की उस पंक्ति पर एक ब्रेकपाइंट अपवाद उत्पन्न होगा का उपयोग करें। एक चेतावनी हालांकि आपका प्रोग्राम उस अपवाद के साथ दुर्घटनाग्रस्त हो जाएगा यदि यह डीबगर के अंदर नहीं चल रहा है।

9

सी # में, दृश्य स्टूडियो में

{} 

या

; 
+0

सुरुचिपूर्ण समाधान – blagus

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