मुझे निम्न प्रश्न से परेशान था: "स्थैतिक" लेबल का लाभ कैसे बनाए रखें लेकिन फिर भी साइट पर उत्पादन कोड डीबग करने में सक्षम हो?स्टेटिक बनाम गैर स्टेटिक फ़ंक्शन - एम्बेडेड सिस्टम संदर्भ डीबगिंग
ऐसा नहीं होता है कि ग्राहक साइट पर अनपेक्षित व्यवहार हो रहा है, और केवल वहां। कई मामलों में, डीबग करने का विकल्प होने से बहुत सारे प्रयास बचा सकते हैं और बहुत तेज़ प्रतिक्रिया मिल सकती है। इस तरह के एक डीबग में आमतौर पर कार्य व्यवहार की जांच शामिल होती है, जो हमें "स्थैतिक" परिभाषा में लाती है।
स्टेटिक फ़ंक्शंस को डिबग शैल से डीबग नहीं किया जा सकता है, जैसे ब्रेकपॉइंट डालने या इसे निष्पादित करना। दूसरी तरफ, सार्वजनिक कार्यों के रूप में सभी कार्यों को परिभाषित करना कोड संरचना और अनुकूलन दु: ख का कारण बनता है।
मुझे कम से कम दो अलग-अलग बिल्डों को संकलित करने जैसे विकल्पों के बारे में पता है, एक स्थिर और बिना किसी के, लेकिन यह स्वचालन परीक्षणों के साथ अच्छी तरह फिट बैठता है, न कि अंततः अंतिम उत्पादन निर्माण के साथ।
आपकी तरफ से कुछ अंतर्दृष्टि की सराहना की जाएगी, मुख्य रूप से आपने इस दुविधा को कैसे हल किया है (यदि कोई है)। या करने के लिए सवाल अलग ढंग से व्यक्त: "क्या अधिक महत्वपूर्ण है?"
एक अच्छा सी here में "स्थिर" पर चर्चा।
क्या आपका मतलब है कि आप 'स्थिर 'के रूप में घोषित कार्यों में ब्रेकपॉइंट्स सेट करने में सक्षम नहीं हैं? सी में, 'स्थिर' कार्य केवल सामान्य कार्य होते हैं, लेकिन उन्हें अन्य "अनुवाद इकाइयों" से नहीं कहा जा सकता है। उनमें से डीबगिंग, रिमोट या स्थानीय को कुछ भी नहीं रोकना चाहिए, जब तक उन्हें अनुकूलित नहीं किया जाता है। –
आप अपने स्थिर फ़ंक्शन पर वैश्विक सूचक परिभाषित कर सकते हैं और स्थैतिक फ़ंक्शन पर ब्रेकपॉइंट सेट करने के लिए इसके मान का उपयोग कर सकते हैं। संकलक को अप्रयुक्त के रूप में समाप्त करने से रोकने के लिए आप इस सूचक 'अस्थिर' भी बना सकते हैं। –
@ जोचिमपिलबोर्ग जो मुझे पता है, स्थिर कार्य प्रतीक तालिका में प्रवेश नहीं करेंगे (भले ही कंपाइलर का उपयोग करके ध्वजांकित किया गया हो), इसलिए, डिबगिंग संभव नहीं है (ब्रेकपॉइंट की तरह)। – EdwardH