2008-10-09 15 views
21

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

अर्थात

def foo(x): 
    print 'Hey wow, we got to foo!', x 

    ... 

    print 'foo is returning:', bar 
    return bar 

वहाँ डिबगिंग की इस शैली के लिए एक उचित नाम है?

+10

मुझे यह अजीब लगता है कि जब लोग जंगली में एक अवैध स्थिति * पहुंचे * का मूल्यांकन करने के लिए एकमात्र उपयोगी चीज है तो यह पता लगाने के लिए कितने लोग इसे पुराना कहते हैं। –

+1

यह एक प्राचीन तकनीक है, *** दूर *** नीचे उल्लिखित अधिकांश भाषाओं का पूर्व-डेटिंग या इसके लिए उनके पारिवारिक नाम हैं। आईआईआरसी, इसे मूल रूप से 60 के दशक के उत्तरार्ध और 70 के दशक के आरंभ में "ट्रेसिंग" या "ट्रेस डिबगिंग" कहा जाता था। – RBarryYoung

+8

मुझे लगता है कि यह अजीब बात है कि लोग इस तकनीक पर ध्यान देते हैं, जबकि उदाहरण के लिए, वास्तविक समय की बाधाओं के साथ समवर्ती कार्यक्रमों को डीबग करने के लिए यह एकमात्र वैध समाधान है। – madewulf

उत्तर

44

हाँ - यह के रूप में जाना जाता है printf() डिबगिंग, सर्वव्यापक सी समारोह के नाम पर रखा:

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

- printf() [email protected]

अन्य भाषाओं के मूल निवासी उपयोगकर्ताओं कोई संदेह नहीं है/डिफ़ॉल्ट प्रिंट द्वारा यह उल्लेख करने के लिए लॉग इन करें/या पसंद के अपने कोडिंग मंच के लिए आदेश उपलब्ध का पता लगाने, लेकिन मैं "printf सुना है () "नाम सी के अलावा कई भाषाओं में इस तकनीक को रेफर करने के लिए उपयोग किया जाता है। शायद यह इसके इतिहास के कारण है: जबकि बेसिक और फोरट्रान के पास बुनियादी लेकिन सेवा योग्य PRINT कमांड थे, सी को आम तौर पर विभिन्न डेटा प्रकारों को प्रारूपित करने के लिए थोड़ा और काम चाहिए: printf() था (और अक्सर अभी भी है) अब तक इस अंत तक सबसे सुविधाजनक माध्यम है, जिसमें कई अंतर्निहित स्वरूपण विकल्प उपलब्ध हैं। इसके चचेरे भाई, fprintf(), लिखने के लिए स्ट्रीम का एक और पैरामीटर लेता है: इस कार्यक्रम के आउटपुट को छोड़कर, stderr (संभावित रूप से स्वयं लॉग फ़ाइल पर रीडायरेक्ट किया गया) डायग्नोस्टिक जानकारी को प्रत्यक्ष करने के लिए सावधानीपूर्वक "डीबगर" की अनुमति दी गई है।

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

+0

मुझे सी सॉकेट के साथ ऐसा करना याद है। ओह दर्द खासकर जब stdout को लिखने में देरी हो रही थी और मुझे समझने से पहले 'fsync' मैन्युअल रूप से कॉल करने की आवश्यकता थी। – badp

+3

मुझे एक लूप के बीच में होने वाली किसी समस्या को डीबग करते समय प्रिंटफ डिबगिंग विशेष रूप से उपयोगी पाया गया। घड़ी खिड़की पर क्या चल रहा है यह देखने के बजाय लॉग के माध्यम से स्किम करना काफी तेज़ है। – Calmarius

+0

@ कालारा: पूरी तरह से सहमत हैं। प्रिंटफ डिबगिंग अक्सर लूप में चलने वाले सॉफ़्टवेयर को डीबग करने का सबसे अच्छा तरीका होता है - जो मूल रूप से सभी गैर-तुच्छ सॉफ्टवेयर है :)। – nobar

6

मुझे और मेरी टीम के साथी इसे "ओल्डस्कूल डीबगिंग" कहते हैं।

17

मैं इसे ट्रेसिंग कहता हूं।

+0

मुझे याद है जब मैंने फ्लैश एक्शनस्क्रिप्ट प्रोग्रामिंग किया था, इसके लिए ट्रेस() फ़ंक्शन का उपयोग किया गया था। –

+0

AFAIK, यह (या संभवतः "ट्रेस डीबगिंग") इसके लिए मूल और सही शब्द है। इसके लिए यह शब्द * * * कम से कम * 60 के मध्य (एक्शनस्क्रिप्ट से पहले) पर वापस आता है। – RBarryYoung

1

मैन्युअल दावा? डीबगर फोबिया?

+3

मुझे प्यार है कि कैसे 'डीबगरिबोबिया' जीभ से निकलती है। +1 – Jerub

4

मैंने वीबी भीड़ से "संदेशबॉक्स डिबगिंग" शब्द 'डीबगिंग' की 'शैली' को संदर्भित करने के लिए भी सुना है।

5

exploratory programming के समान अर्थ में, मुझे इसे एक्सप्लोरेटरी डीबगिंग पर कॉल करना पसंद है। यह तब होता है जब डीबगर प्रोग्राम में जटिल प्रकारों की जांच करने के लिए पर्याप्त शक्तिशाली नहीं होता है, या अलग-अलग सहायक कार्यों का आह्वान करता है, या आप सीधे कहा गया सुविधाओं का उपयोग करने के लिए बग के बारे में पर्याप्त नहीं जानते हैं।

2

मैं आमतौर पर इसे ट्रेसिंग के रूप में संदर्भित करता हूं।

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

20

मैंने सुना है यह गुफाओं का आदमी डिबगिंग

+0

मैं इस शब्द को ऑब्जेक्टिव-सी पुस्तक में मिला और ऐसा लगता है कि लेखक ने कुछ बनाया है, लेकिन कम से कम एक शानदार पर्याप्त पुस्तक है जो कुछ हद तक उद्देश्य-सी उपयोगकर्ताओं को फैलाने के लिए और कम विस्तारित उपयोगकर्ताओं तक फैलती है अन्य भाषाओं में से। हालांकि, यह एक भयानक शब्द है और कुछ भी हमें इसे कहीं भी कॉल करने से नहीं रोक रहा है ... – Jasper

2

भी कहा जाता है, नेट में आप कंसोल के लिए उत्पादन के लिए बयान डिबगिंग जोड़ सकते हैं (मुझे लगता है कि यह वास्तव में Debug.WriteLine है)। ये आंकड़े केवल डीबग बिल्ड में शामिल हैं - जब आप रिलीज बिल्ड करते हैं तो संकलक स्वचालित रूप से उन्हें बाहर निकाल देगा।

4

मैंने सिस्टम को कोड करने के लिए अक्सर एकमात्र तरीका एम्बेड किया है। दुर्भाग्य से प्रिंटिंग समय के समय और सिस्टम के वास्तविक समय प्रवाह को प्रभावित करती है। इसलिए हम "ट्रेसिंग" के माध्यम से भी उपकरण देते हैं जहां सिस्टम की स्थिति (फ़ंक्शन एंट्री एक्जिट इत्यादि) के बारे में जानकारी एक आंतरिक बफर को बाद में डंप और पार्स करने के लिए लिखा जाता है। रियल एम्बेडेड प्रोग्रामर एक एलईडी पलक द्वारा डीबग कर सकते हैं;)

+1

हाँ, ब्लॉंकिंग मोर्स कोड ताकि आप "कैप्टन पाइक चेयर" लाइट के साथ अधिक जानकारी प्राप्त कर सकें। हो गया। –

2

क्लासिक डिबगिंग

4

मैं इस "हाय, माँ" प्रोग्रामिंग कहते हैं।

1

वर्बोज डीबगिंग! अपने पैंट डिबगिंग के

5

सीट :)

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

1

(अच्छा लॉगिंग चलने में समस्याओं को डीबग करने के लिए अविश्वसनीय रूप से मूल्यवान है उत्पादन प्रणालियों। बेकार वर्बोज़ प्रिंट स्टेटमेंट्स के बहुत सारे नहीं हैं, लेकिन कुछ महत्वपूर्ण या अप्रत्याशित घटना होने पर कुछ दिलचस्प लॉगिंग करना अविश्वसनीय रूप से महत्वपूर्ण है। यदि वें ई समस्याओं को डीबग करने के बारे में आप जानते हैं कि एक डीबगर के साथ, आप अपने आप को कुछ तंग जगह में ढूंढने जा रहे हैं जब आपके द्वारा बनाई गई सेवा आपके कुछ उपयोगकर्ताओं के लिए टूट गई है लेकिन आप स्थानीय रूप से समस्या को पुन: पेश नहीं कर सकते हैं।)

1

मैं इसे हमेशा 'त्वरित और गंदे डिबगिंग' शब्द या शॉर्ट में बस 'गंदा डिबगिंग' शब्द से जानता हूं।

24

मैंने सोचा था कि निम्नलिखित उद्धरण अनुरूप होगा: "। सबसे प्रभावी डीबगिंग टूल अभी भी सावधान सोचा, विवेकपूर्ण तरीके से रखा प्रिंट बयान के साथ मिलकर है"

  • ब्रायन Kernighan, "शुरुआती के लिए यूनिक्स" (1979)
+0

लेकिन बीके किया। उस उत्कृष्ट तकनीक का नाम है? – DarenW

+13

मुझे लगता है कि इसे "मस्तिष्क" कहा जाता है। –

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