ब्रेकप्वाइंट यह देखने का एक शानदार तरीका है कि कंपाइलर आपके कोड पर कैसे चलता है। अब मेरा प्रश्न यह है कि क्या आपके कोड को डीबग करने पर ब्रेकप्वाइंट का उपयोग करने की संभावना है?
ब्रेकप्वाइंट यह देखने का एक शानदार तरीका है कि कंपाइलर आपके कोड पर कैसे चलता है। अब मेरा प्रश्न यह है कि क्या आपके कोड को डीबग करने पर ब्रेकप्वाइंट का उपयोग करने की संभावना है?
जवाबों:
जैसा कि माजेंको के जवाब में बताया गया है, Arduino IDE ब्रेकपॉइंट तंत्र प्रदान नहीं करता है, लेकिन Atmel स्टूडियो ब्रेकप्वाइंट का समर्थन करता है ।
हालांकि, अगर आपके पास एक स्विच और एक एलईडी है, तो आप अपने प्रोग्राम की प्रगति को इस तरह से ट्रैक कर सकते हैं जो ब्रेकप्वाइंट के कुछ लाभ प्रदान करता है। आप एक सबरूटीन जोड़ेंगे, कह सकते हैं BPReport()
कि सीरियल आउटपुट या एलसीडी के माध्यम से क्रिटिकल वैरिएबल के मानों को बदल देता है, फिर एलईडी को रोशनी देता है और तब तक इंतजार करता है जब तक कि स्विच को दबाया और जारी नहीं किया जाता है, बहस के साथ। अपनी BPReport()
दिनचर्या को कॉल करें जहां भी आप बिना शर्त ब्रेकपॉइंट चाहते हैं। सशर्त ब्रेकपॉइंट के लिए, आपके पास एक रूटीन हो सकता है BPReportIf(cond)
जो कॉल करता है BPReport()
यदि cond
यह सच है। यदि आप धारावाहिक के माध्यम से आउटपुट नहीं करना चाहते हैं, तो आप कई एल ई डी या एक एलसीडी का उपयोग कर सकते हैं, और यदि आप बाहरी ब्रेक नियंत्रण चाहते हैं तो आप कई स्विच का उपयोग कर सकते हैं (उदाहरण के लिए, cond
अतिरिक्त स्विच में से एक का परीक्षण हो सकता है)।
[*] कुछ हार्डवेयर डीबगर्स डाउनलोड किए गए कोड को संशोधित करते हैं हर बार ब्रेकप्वाइंट को जोड़ा, बदला या हटाया जाता है। यह उपयोग फ्लैश मेमोरी को कभी-कभी डाउनलोड करने की तुलना में अधिक तेज़ी से बाहर करेगा। यदि इस तरह के डिबगिंग के लिए एक चिप का भारी उपयोग किया गया है, तो उस चिप का उत्पादन प्रणाली में उपयोग न करें।
हालांकि माजेंको उनका जवाब सही है लेकिन कुछ अन्य विकल्प हैं।
जैसा कि मैं कहता हूँ कि वास्तविक हार्डवेयर डिबगिंग में मैज़ेंको द्वारा कहा गया है:
पूरी तरह से अलग श्रेणी का एक अन्य डिबगिंग विकल्प आपके कोड को व्यवस्थित करना है ताकि निर्णय तर्क (हार्डवेयर स्वतंत्र) और कार्रवाई (हार्डवेयर निर्भर) पूरी तरह से अलग हो जाए।
फिर एक स्थानीय कार्यक्रम के रूप में अपने स्केच को संकलित करें और अपने स्थानीय मशीन पर "निर्णय तर्क" को डिबग करें। यह विधि "हार्डवेयर डिबगिंग" की अनुमति नहीं देती है। यह विधि इकाई परीक्षण को भी सक्षम बनाती है।
ध्यान दें कि आपकी स्थानीय मशीन संभवतः एक 32 या 64 कड़वी है और सबसे Arduino के 8 बिटर्स हैं, जिसके परिणामस्वरूप डेटा प्रकारों में अंतर होगा जो इस पद्धति का उपयोग करते समय एक अतिरिक्त ध्यान देने वाला बिंदु है।
Arduino-डीबग पुस्तकालय Arduino नमूने के लिए एक सरल पर लक्ष्य डिबगर प्रदान करता है। डिबग कमांड को सीधे स्केच में जोड़ा जाता है। एक डिबगर कमांड शेल को ब्रेक-पॉइंट और दावे पर शुरू किया जाता है।
ऊपर दिए गए स्क्रीन-शॉट एक Arduino Mega पर उदाहरण स्केच रन को दिखाता है, जो अनुप्रयोग द्वारा उपयोग किए जाने वाले सीरियल आउटपुट मॉनिटर और डीबगर शेल के लिए उपयोग किया जाने वाला Serial1 है।
स्केच डिबग कमांड
डिबग शेल कमांड्स
सभी डीबग शेल कमांड्स को सिंगल कैरेक्टर कमांड्स के लिए संक्षिप्त किया जा सकता है। कृपया अधिक जानकारी के लिए README देखें; स्थापना विवरण, उदाहरण स्केच और बेंचमार्किंग।