Printf () के साथ डिबगिंग नहीं करने का बड़ा कारण यह है कि यह आमतौर पर अक्षम, अपर्याप्त और अनावश्यक है।
अक्षम: प्रिंटफ () और परिजन एक छोटे से माइक्रोकंट्रोलर पर उपलब्ध होने के सापेक्ष बहुत सारे फ्लैश और रैम का उपयोग करते हैं, लेकिन वास्तविक डिबगिंग में बड़ी अक्षमता है। जो बदला जा रहा है उसे बदलने के लिए लक्ष्य को पुनः प्राप्त करने और पुन: सक्रिय करने की आवश्यकता होती है, जो प्रक्रिया को धीमा कर देती है। यह एक UART का उपयोग करता है जिसे आप अन्यथा उपयोगी कार्य करने के लिए उपयोग कर सकते हैं।
अपर्याप्त: केवल इतना ही विवरण है कि आप किसी सीरियल लिंक पर आउटपुट कर सकते हैं। यदि प्रोग्राम हैंग हो जाता है, तो आपको ठीक-ठीक पता नहीं है कि, बस अंतिम आउटपुट जो पूरा हुआ।
अनावश्यक: कई माइक्रोकंट्रोलर दूरस्थ रूप से डिबग किए जा सकते हैं। JTAG या मालिकाना प्रोटोकॉल का उपयोग प्रोसेसर को रोकने के लिए, रजिस्टरों और रैम पर झांकने के लिए किया जा सकता है, और यहां तक कि बिना recompile किए चल रहे प्रोसेसर की स्थिति को बदल सकता है। यही कारण है कि डिबगर्स आमतौर पर प्रिंट स्टेटमेंट की तुलना में डिबगिंग का एक बेहतर तरीका है, यहां तक कि पीसी पर भी अंतरिक्ष और शक्ति के टन के साथ।
यह दुर्भाग्यपूर्ण है कि न्यूड्यूड्स के लिए सबसे आम माइक्रोकंट्रोलर प्लेटफॉर्म Arduino में डिबगर नहीं है। AVR दूरस्थ डिबगिंग का समर्थन करता है, लेकिन Atmel का डीबगवाइयर प्रोटोकॉल मालिकाना और अनिर्दिष्ट है। आप GDB के साथ डिबग करने के लिए एक आधिकारिक देव बोर्ड का उपयोग कर सकते हैं, लेकिन यदि आपके पास ऐसा है कि आप शायद Arduino के बारे में बहुत चिंतित नहीं हैं।