Compilation and Debugging Process In Hindi
C++ प्रोग्रामिंग लैंग्वेज में प्रोग्राम क्रिएशन से लेकर प्रोग्राम कम्पाइलेशन और रन करने में कई स्टेप और प्रोसेस इन्वॉल्व होते हैं. स्पेशली, जब आप C++ प्रोग्राम को कम्पाइलेशन और डीबगिंग मोड में यूज़ कर रहे हो। ये सभी स्टेज हाई-लेवल C++ प्रोग्राम कोड को एक्विवैलेन्ट मशीन कोड में कन्वर्ट करने के लिए एसेंशियल हैं. जिससे की आपके कंप्यूटर में इन्सटाल्ड ऑपरेटिंग सिस्टम इन प्रोग्राम को आसानी से रन और एक्सेक्यूट कर सके. इसके साथ ही C++ प्रोग्राम में किसी भी एरर और मिस्टेक्स या बग को ठीक करने के लिए भी कम्पाइलेशन और डीबगिंग प्रोसेस जरूरी है।

Here is a detailed breakdown of the compilation and debugging process in C++ programming.
Compilation Process in C++.
C++ प्रोग्राम कोड कम्पाइलेशन प्रोसेस कई स्टेप और विज़ार्ड को फॉलो करता है, और सामान्य C++ प्रोग्राम कोड कम्पाइल टास्क में ये मुख्य स्टेज होते हैं.
Step 1: Preprocessing phase.
प्रीप्रोसेसर एक हैडर फाइल या प्री-प्रोसेसर डायरेक्टिव C++ सोर्स कोड को कम्पाइल करने से पहले इसे कम्पलीट प्रोसेस करता है। यहाँ इस प्रीप्रोसेसिंग फेज़ के दौरान।
#define हैडर फाइल या डायरेक्टिव से डिफाइन किए गए प्रोग्राम में डिफाइन मैक्रो वैल्यू को एक्सपैंड करता है।
C++ प्रोग्राम सोर्स कोड में हेडर फाइलें जैसे, #include <iostream> कोड में सभी जरूरी प्रोग्राम रन इंस्ट्रक्शन पहले से इन्क्लुड होते हैं।
C++ प्रोग्राम सोर्स कोड कंडीशनल कम्पाइलेशन में मुख्य डायरेक्टिव जैसे #ifdef, #ifndef, आदि को इवैल्यूएट या एसेंशियल टास्क के लिए इन्क्लुड किया जाता है।
इसके बाद C++ प्रोग्राम सोर्स कम्पाइलेशन प्रोसेस में यूजर कमेंट्स डिलीट कर दिए जाते हैं।
इस प्रोसेस के बाद आपके पास एक मॉडिफाइड C++ प्रोग्राम सोर्स कोड फाइल होती है, जो मौजूदा C++ प्रोग्राम में कम्पाइलेशन के लिए रेडी टू यूज़ होती है।
Example.
#include <iostream> // यह एक प्रीप्रोसेसर डायरेक्टिव हैडर फाइल को इंडीकेट करता है, यह इसे iostream हेडर के कंटेंट से बदल देता है
#define MAX 33 // यह एक यूजर डिफाइन कस्टम प्रीप्रोसेसर डायरेक्टिव हैडर फाइल डिफाइन है, यहाँ प्रीप्रोसेसर MAX को 33 के रूप में डिफाइन करता है
Step 2: Compilation Phase.
प्रीप्रोसेसिंग हैडर या डायरेक्टिव के बाद, कंपाइलर C++ प्रोग्राम सोर्स कोड को असेंबली कोड या इंटरमीडिएट कोड में वन टाइम में ट्रांसलेट करता है।
In the program compilation phase.
इस फेज में आपके द्वारा लिखा गया C++ प्रोग्राम सोर्स कोड के सिंटैक्स को डिटेल में चेक किया जाता है कि आपका लिखा गया प्रोग्राम सोर्स कोड वैलिड है या नहीं और C++ लैंग्वेज के स्पेसिफिक रूल्स एंड स्टैण्डर्ड को फॉलो करता है, या नहीं।
C++ कंपाइलर मौजूदा प्रोग्राम में डिक्लेअर डिफाइन वेरिएबल, फंक्शन और अन्य आइडेंटिफायर को ट्रैक करने के लिए एक सिंबल टेबल को क्रिएट करता है।
यह आपके प्रोग्राम में जरूरत के अनुसार इनलाइनिंग, कॉन्स्टेंट फोल्डिंग और डेड कोड एलिमिनेशन जैसे ऑप्टिमाइजेशन को अप्लाई करता है।
प्रोग्राम के रिजल्ट आउटपुट के रूप में यह एक ऑब्जेक्ट फ़ाइल की तरह होती है. यहाँ ऑब्जेक्ट प्लेटफ़ॉर्म के आधार पर .o या .obj एक्सटेंशन के साथ इसे ऐड किया जाता है।
Compilation Phase Example.
g++ -c first.cpp # first.o के रूप में एक ऑब्जेक्ट फाइल को क्रिएट करता है.
यहाँ सिस्टम क्रिएटेड ऑब्जेक्ट फ़ाइल में मशीन-स्पेसिफिक इंस्ट्रक्शन डिफाइन होते हैं, लेकिन अभी तक इसे किसी एग्जीक्यूटेबल फाइल में लिंक नहीं किया गया है।
Step 3: Assembly Phase.
असेंबली फेज में असेंबलर (C++ में बिल्ट-इन प्रोग्राम जो असेंबली लैंग्वेज कोड को कन्वर्ट करता) C++ कंपाइलर से जेनरेट हुए प्रोग्राम सोर्स कोड को असेंबली प्रोग्राम कोड को एक्सेप्ट करता है, और उसे मशीन कोड में कन्वर्ट करता है. जिससे एक ऑब्जेक्ट फ़ाइल क्रिएट होती है।
इस सिस्टम क्रिएटेड ऑब्जेक्ट फ़ाइल में वे सभी मशीन के द्वारा रीड किए जा सकने वाले सभी इंस्ट्रक्शन होते हैं. लेकिन यह अभी तक एक पूरा एग्जीक्यूटेबल कोड नहीं बनता है. क्योंकि यह अभी भी प्रोग्राम में अनडिफाइंड फंक्शन, वेरिएबल, या लाइब्रेरी को इंडीकेट कर सकता है।
Step 4: Linking Phase.
यहाँ प्रोग्राम लिंकर कंपाइलर से जेनरेट हुई एक या ज़्यादा C++ प्रोग्राम ऑब्जेक्ट फ़ाइलें को इनपुट के रूप में एक्सेप्ट करता है, और उन सभी को एक सिंगल एग्जीक्यूटेबल में कंबाइन कर ग्रुप करता है। C++ प्रोग्राम में लिंकर कई एसेंशियल टास्क को परफॉर्म करता है. जैसे,
एक्सटर्नल फाइल रेफरेंस जैसे, यह अन्य प्रोग्राम फ़ाइलों या लाइब्रेरी में डिफाइन किए गए फंक्शन के लिए कॉल को रिज़ॉल्व करता है।
प्रोग्राम जनरेटेड ऑब्जेक्ट फ़ाइलों, लाइब्रेरी और रिसोर्स को एक यूनिफाइड एग्जीक्यूटेबल C++ प्रोग्राम फ़ाइल जैसे, a.out, first.exe में बंडल या ग्रुप करता है।
C++ में डिफाइन फंक्शन कॉल और वेरिएबल रेफरेंस को उनकी असली डेफिनिशन से मैच करके सिंबल रिज़ॉल्यूशन को इजी से हैंडल और मैनेज करता है।
यदि C++ प्रोग्राम में ज़रूरी हो, तो लाइब्रेरी जैसे, स्टैंडर्ड लाइब्रेरी या एक्सटर्नल लाइब्रेरी में उन्हें आपस में लिंक करता है।
यदि C++ प्रोग्राम में कोई अनरिज़ॉल्व्ड रेफरेंस टाइप मौजूद हैं. जैसे, किसी यूजर डिफाइन ऐसे डाटा टाइप फंक्शन को कॉल करना जो प्रोग्राम लाइब्रेरी में डिफाइन किया गया है. लेकिन उसमे इन्क्लुड नहीं है, तो यह एक लिंकर एरर को डिस्प्ले करेगा।
Linking Phase Example.
g++ first.o -o first # यह ऑब्जेक्ट फ़ाइल को लिंक करता है, और एक एग्जीक्यूटेबल फाइल को क्रिएट करता है
इस स्टेप में, यदि आपका सिस्टम कोई एरर डिस्प्ले नहीं करता है. तो फ़ाइनल एग्जीक्यूटेबल फाइल first या first.exe एग्जीक्यूशन के लिए रेडी टू यूज़ है।
Debugging Process in C++.
C++ प्रोग्रामिंग में डीबगिंग प्रोसेस आपके प्रोग्राम में एरर या किसी भी प्रकार के बग इश्यूज को फाइंड और रिसॉल्व करने का प्रोसेस है। C++ प्रोग्राम एरर बग अलग-अलग स्टेज पर डेवलप हो सकते हैं. जिसमें किसी प्रोग्राम में कंपाइलेशन सिंटेक्स एरर, रनटाइम एरर जैसे लॉजिकल या रनटाइम एरर, और लिंकिंग एरर करेक्शन स्टेप शामिल होते हैं। C++ प्रोग्रामिंग में डिबगिंग प्रोसेस को कई फेज़ में डिवाइड किया जा सकता है.
Step 1: Syntax Errors and Compilation Errors.
C++ प्रोग्राम कंपाइलेशन फेज के दौरान सिंटैक्स एरर डिस्प्ले होते है। ये इनकरेक्ट लैंग्वेज कंस्ट्रक्ट के कारण डेवलप होते हैं. जैसे कि मिसिंग सेमीकोलन ऑपरेटर का होना, मिसमैच कर्ली ब्रेसेस यूज़, इनकरेक्ट डायरेक्टिव यूज़ गलत डेटा टाइप का यूज़ और कॉल करना, या अनडिक्लेयर्ड वेरिएबल डिफाइन या कॉल करना आदि।
इसके बाद आपके कंप्यूटर में इन्सटाल्ड कंपाइलर एक एरर मैसेज को आउटपुट करता है. जो मौजूदा प्रोग्राम में उस सोर्स कोड लाइन को इंडीकेट करता है. जहाँ उस प्रोग्राम लाइन में एरर जनरेट हुआ था, जिससे की आसानी से C++ प्रोग्राम डेवलपर्स को प्रोग्रामिंग प्रॉब्लम को करेक्ट करने में हेल्प मिलती है।
Example of a syntax error in a C++ program.
#include <iostream>
int main() {
std::cout << “Hi Vcanhelpsu, Let’s try c++” // here we forget to write semicolon operator
return 0;
}
IT displays compiler time error.
error: expected ‘;’ before ‘return’
