विषय पर बढ़ें

अंतिम अद्यतन:2026-10-12

GDB से C++ प्रोग्राम डीबग करना

जब आप GNU Debugger (GDB) से C code debug करते हैं, तो आप पाते हैं कि यह UNIX systems पर सबसे लोकप्रिय debugger है, जिसका उपयोग C और C++ programs debug करने के लिए किया जाता है। नीचे GDB से C code debug करने की एक सरल और समझने योग्य व्याख्या दी गई है:

सबसे पहले, command line में code वाली current folder में switch करें, और निम्न command चलाएँ:

gcc -g -Wall code.c -o output

यहाँ -g विकल्प GDB tool के उपयोग के लिए ज़रूरी है। -Wall विकल्प warnings दिखाने के लिए है। इससे "output" नाम की एक executable फ़ाइल बनेगी।

फिर, GDB dialog खोलने और output फ़ाइल से symbol information लेने के लिए निम्न command चलाएँ (या सीधे कहें, code.c debug करने के लिए पूरा environment सेट करने के लिए):

gdb output

डीबगिंग में आपकी मदद के लिए निम्न commands उपयोग किए जा सकते हैं:

  • list: सोर्स code की सूची दिखाता है।
  • b x: x पर breakpoint सेट करता है। x module का नाम या line number हो सकता है। उदाहरण के लिए, x, main जैसा function नाम हो सकता है।
  • r: प्रोग्राम को निष्पादित करता है (breakpoint तक), और परिणाम देता है। यानी breakpoint पर code चलाकर परिणाम बनाता है। [अगर arguments हों, तो r argument1 argument2 argument3 ...]
  • info breakpoints x: breakpoint x की विस्तृत जानकारी देता है।
  • info breakpoints: सभी breakpoints की विस्तृत जानकारी देता है।
  • delete x: breakpoint x को delete करता है।
  • disable x और enable x: breakpoint x को disable और enable करते हैं।
  • print p: variable p का value print करता है।
  • display p: हर run के बाद variable p का value दिखाता है (पूरी प्रक्रिया automate करता है)।
  • c: प्रोग्राम का निष्पादन जारी रखता है (for loop जैसे iterations skip करता है)। पहला iteration skip करने के लिए c-iter1 का उपयोग करें, दूसरा iteration skip करने के लिए दोबारा c दर्ज करें, और इसी तरह आगे।
  • आप अतिरिक्त conditions भी उपयोग कर सकते हैं, जैसे b x if (y > m), इसका मतलब है कि अगर y का value m से बड़ा है, तो line x पर breakpoint सेट हो।
  • GDB कई फ़ाइलों में भी breakpoints सेट कर सकता है। उदाहरण के लिए, अगर program.c में function.c का कोई function call होता है, तो आप b function.c:x से function.c की line x पर breakpoint सेट कर सकते हैं।
  • bt: code निष्पादन के path को backtrack करने के लिए है। bt एक index सूची देता है, जो दिखाती है कि code किन processes से गुज़रा। उदाहरण के लिए: #0 process 0 का विवरण, #1 process 1 का विवरण, और इसी तरह। यहाँ 0 सबसे हाल का process है।
  • f x दर्ज करने पर process x पर jump होता है (f 0 process 0 पर jump करेगा), और संबंधित function के निष्पादन समय के variables के values मिलते हैं।
  • s: function के अंदर जाकर अधिक विस्तृत जानकारी पाने के लिए है।
  • next: code को line-by-line निष्पादित करने के लिए है।

संबंधित विषय

टिप्पणियाँ