C Academy · पाठ

Reports पढ़ना

Output का अर्थ समझें

पाठ 4, कुल 4 में से13 चरण

Reports पढ़ना, CoddyKit पर C Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

रिपोर्ट की संरचना

Valgrind रिपोर्ट के तीन भाग होते हैं:

  • हर पंक्ति पर मौजूद प्रोसेस ID उपसर्ग
  • त्रुटि होने पर दिखने वाले एक या अधिक त्रुटि ब्लॉक
  • प्रोग्राम समाप्त होने पर अंतिम HEAP और LEAK SUMMARY

हर भाग को पढ़ना सीखने से पाठ की बड़ी दीवार एक सटीक कार्य-सूची में बदल जाती है।

PID उपसर्ग

Valgrind की हर पंक्ति ==PID== से शुरू होती है, जैसे ==12345==।

यह प्रोसेस ID है, आपके प्रोग्राम के आउटपुट का हिस्सा नहीं। जब दोनों एक ही टर्मिनल साझा करते हैं, तब इससे आप Valgrind के संदेशों को अपने प्रोग्राम के printf से अलग कर सकते हैं।

==12345== Memcheck, a memory error detector
==12345== Command: ./prog
==12345==

एक नमूना त्रुटि ब्लॉक

यह वास्तविक अमान्य लेखन वाला ब्लॉक है:

==12345== Invalid write of size 4
==12345== at 0x4005A1: main (prog.c:6)
==12345== Address 0x520304c is 0 bytes after a block of size 20 alloc'd
==12345== at 0x4838B40: malloc
==12345== by 0x40058E: main (prog.c:5)

पहली पंक्ति पढ़ें

पहली पंक्ति त्रुटि के प्रकार और आकार का नाम बताती है: 'Invalid write of size 4'।

आकार 4 का अर्थ है 4-बाइट की पहुँच, जो आमतौर पर int होती है। आगे पढ़ने से पहले ही यह एक पंक्ति बता देती है कि किस श्रेणी की बग की अपेक्षा करनी है।

स्टैक ट्रेस पढ़ें

at वाली पंक्ति सबसे अंदर वाला फ़्रेम है, जहाँ त्रुटि हुई। हर by वाली पंक्ति एक स्तर ऊपर के कॉलर को दिखाती है।

ऊपर से नीचे पढ़ें—सबसे गहरे फ़्रेम से सबसे ऊपरी फ़्रेम तक। आपके अपने फ़ाइल नाम वाला पहला फ़्रेम लगभग हमेशा बग का स्थान होता है।

==12345==    at 0x4005A1: do_work (work.c:12)
==12345==    by 0x4006F0: main (main.c:8)

पता संबंधी टिप्पणी पढ़ें

Address ... वाली पंक्ति किसी ज्ञात ब्लॉक के सापेक्ष पहुँच का स्थान बताती है:

  • 0 bytes after a block of size 20 alloc'd — अंत के ठीक बाद हुआ ओवरफ़्लो
  • 4 bytes inside a block of size 4 free'd — फ़्री किए जाने के बाद उपयोग
  • on thread 1's stack — स्टैक पर हुई पहुँच

यह यह भी दिखाती है कि वह ब्लॉक कहाँ आवंटित या फ़्री किया गया था।

HEAP SUMMARY

समाप्ति पर आपको आवंटन का लेखा-जोखा मिलता है:

==12345== HEAP SUMMARY:
==12345== in use at exit: 20 bytes in 1 blocks
==12345== total heap usage: 3 allocs, 2 frees, 1,044 bytes allocated

'in use at exit' का शून्य से अधिक होना बताता है कि कुछ फ़्री नहीं किया गया।

LEAK SUMMARY

हीप सारांश के नीचे, लीक को अलग-अलग वर्गों में बाँटा जाता है:

definitely lost: 20 bytes in 1 blocks
indirectly lost: 0 bytes in 0 blocks
possibly lost: 0 bytes in 0 blocks
still reachable: 0 bytes in 0 blocks

हर खोए हुए ब्लॉक के साथ ट्रेस जोड़ने के लिए --leak-check=full जोड़ें।

ERROR SUMMARY

सबसे अंतिम पंक्ति हर चीज़ की गिनती करती है:

ERROR SUMMARY: 2 errors from 2 contexts

'context' त्रुटि के एक विशिष्ट स्थान को कहते हैं। यदि बग वाली पंक्ति दस लाख बार लूप में चलती है, तब भी वह एक ही संदर्भ रहती है। आपका लक्ष्य 0 errors from 0 contexts है।

जाँच का क्रम

रिपोर्ट पर व्यवस्थित ढंग से काम करें:

  • पहले अमान्य पहुँच वाली त्रुटियाँ ठीक करें; वे डेटा को बिगाड़ती हैं
  • फिर अप्रारंभित मान वाली त्रुटियाँ ठीक करें
  • इसके बाद निश्चित रूप से खोई और अप्रत्यक्ष रूप से खोई हुई लीक ठीक करें
  • हर सुधार के बाद फिर से चलाएँ; एक मूल कारण अक्सर कई रिपोर्ट साफ़ कर देता है

ज्ञात शोर को दबाना

कुछ त्रुटियाँ ऐसी लाइब्रेरी से आती हैं जिन्हें आप ठीक नहीं कर सकते, जैसे C रनटाइम या ग्राफ़िक्स ड्राइवर। अपनी बग छिपाए बिना इन त्रुटियों को शांत करने के लिए दमन फ़ाइल बनाएँ।

--gen-suppressions=all उपयोग के लिए तैयार दमन प्रविष्टियाँ दिखाता है, जिन्हें सहेजकर --suppressions=file के साथ फिर दिया जा सकता है।

valgrind --gen-suppressions=all ./prog
valgrind --suppressions=mine.supp ./prog

त्वरित जाँच

रिपोर्ट की एक पंक्ति का अर्थ समझें।

पुनरावलोकन

अब आप Valgrind रिपोर्ट को शुरू से अंत तक पढ़ सकते हैं:

  • ==PID== Valgrind की पंक्तियों का उपसर्ग है और उन्हें प्रोग्राम के आउटपुट से अलग करता है
  • हर त्रुटि ब्लॉक प्रकार, आकार, स्टैक ट्रेस और पते संबंधी टिप्पणी देता है
  • HEAP/LEAK सारांश आवंटनों और खोई हुई मेमोरी का लेखा-जोखा देते हैं
  • ERROR SUMMARY विशिष्ट संदर्भों की गिनती करता है; लक्ष्य शून्य रखें

पहले पहुँच संबंधी त्रुटियों की जाँच करें, फिर लीक की; काम करते हुए दोबारा चलाते रहें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
39
पाठ
144

अक्सर पूछे जाने वाले प्रश्न

क्या “Reports पढ़ना” पाठ निःशुल्क है?

हाँ—“Reports पढ़ना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Reports पढ़ना” में मैं क्या सीखूँगा?

Output का अर्थ समझें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Reports पढ़ना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Valgrind क्यों
  2. Leaks का पता लगाना
  3. Invalid Access
  4. Reports पढ़ना
← C Academy पर वापस जाएँ