विषय पर बढ़ें

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

GDB Python एक्सटेंशन डीबगिंग

0. प्रस्तावना

डीबगिंग software development प्रक्रिया का एक अनिवार्य हिस्सा है, और GDB (GNU debugger) एक शक्तिशाली debugging tool के रूप में developers में व्यापक रूप से उपयोग होता है। पारंपरिक command line debugging सुविधाओं के अलावा, GDB Python की GDB लाइब्रेरी भी देता है, जो developers को Python भाषा से debugging क्षमताओं को extend और enhance करने की अनुमति देता है। इस लेख में बताया जाएगा कि GDB में Python की GDB लाइब्रेरी का उपयोग कैसे करें, और उसकी शक्तिशाली debugging क्षमताओं और use cases दिखाए जाएँगे।

शुरू करने से पहले सुनिश्चित करें कि Python और GDB सही ढंग से इंस्टॉल हैं, और Python का version GDB के साथ compatible है। फिर, निम्न चरणों से Python की GDB लाइब्रेरी इंस्टॉल करें:

a. Command line में gdb चलाकर GDB खोलें।

b. python command दर्ज करें, GDB के Python interpreter में जाने के लिए।

c. import gdb चलाएँ, अगर कोई error नहीं आता, तो Python की GDB लाइब्रेरी सही ढंग से इंस्टॉल हो चुकी है।

(gdb) python
>import gdb
>end

gdb debugging के दौरान हम अक्सर कुछ जटिल structure variables देखना चाहते हैं, जैसे PostgreSQL का List structure, जिसमें कुछ भी डाला जा सकता है, उसके अंदर ठीक क्या है उसे सीधे print करना सचमुच मुश्किल है। ऐसे समय हमारे रोज़मर्रा के development में python scripts काम आते हैं, नीचे उदाहरण:

(gdb) tl
TargetEntry [resno=1 resname="sum"]
    Aggref [aggfnoid=2107 aggtype=1700 aggtranstype=2281 aggstar=false aggvariadic=false aggkind=110 'n' agglevelsup=0 aggsplit=AGGSPLIT_FINAL_DESERIAL aggno=0 aggtransno=0 agg_expr_id=0]

1. Hello python gdb

हम gdb में कुछ python operations चला सकते हैं, उदाहरण के लिए: print, जैसा नीचे दिखाया गया है:

scssCopy code
(gdb) python
> print(1+2)
> end
3
(gdb) end
This command cannot be used at the top level.

इस उदाहरण में हम GDB के Python interpreter में गए, और एक सरल Python statement print(1+2) चलाया, जिसका परिणाम 3 था।

दूसरा उदाहरण यह है कि हम सीधे python xxxx लिखकर चला सकते हैं।

scssCopy code
(gdb) python f = 2
(gdb) python print(f)
2

इस उदाहरण में हमने GDB में Python statement से एक variable f परिभाषित किया, और उसका value print किया, परिणाम 2 था।

2. व्यवहार: कैसे लिखें?

मुख्य बिंदु यह है कि हम ये scripts कैसे लिखें? इस script से अपने code को आसानी से print करना सुविधाजनक बनाया जा सकता है, नीचे practical हिस्सा है, इस section से संबंधित code और सामग्री 星球 में अपडेट की जाएगी, follow करने के लिए स्वागत है:

struct Point {
    int x;
    int y;
};

अब एक Point structure है, मैं इसे script से print करना चाहता हूँ, इसे कैसे implement करें?

तर्क बहुत सरल है, structure पढ़ें, फिर print कर दें।

import gdb

def print_point(point):
    print(f"Point: x={point['x']}, y={point['y']}")

def print_person(person):
    age = person['age']
    print(f"Person: age={age}")

class PrintCppStruct(gdb.Command):
    def __init__(self):
        super(PrintCppStruct, self).__init__("print_cpp_struct", gdb.COMMAND_USER)

    def invoke(self, arg, from_tty):
        try:
            cl = gdb.parse_and_eval(arg)
            if cl.type.code == gdb.TYPE_CODE_STRUCT and str(cl.type) == 'Point':
                print_point(cl)
            elif cl.type.code == gdb.TYPE_CODE_STRUCT and str(cl.type) == 'Person':
                print_person(cl)
            else:
                print("Unknown C++ structure type.")
        except gdb.error as e:
            print(f"Error: {e}")

PrintCppStruct()

उपयोग कैसे करें?

बस source करना है:

(gdb) source print.py

इस उदाहरण में हमने source command से GDB में print.py नाम का Python script load किया।

(gdb) print_cpp_struct myPoint
Point: x=10, y=20

इस उदाहरण में हमने GDB में एक custom command print_cpp_struct का उपयोग किया, जिसने Python की GDB लाइब्रेरी से myPoint नाम के C++ structure का value print किया।

GDB में Python की GDB लाइब्रेरी का उपयोग करके, developers Python की शक्तिशाली क्षमताओं से debugging को extend और enhance कर सकते हैं। यह समृद्ध API और flexible script लिखने की क्षमता देता है, जिससे debugging प्रक्रिया अधिक efficient और सुविधाजनक हो जाती है। चाहे debugging tasks automate करना हो, data analysis और visualization, या program के व्यवहार को dynamically बदलना — Python की GDB लाइब्रेरी developers को समृद्ध विकल्प और लचीलापन देती है। आशा है कि यह लेख आपको Python की GDB लाइब्रेरी को बेहतर ढंग से समझने और अपनाने में मदद करेगा, और आपके debugging कौशल तथा development efficiency बढ़ाएगा।

संबंधित विषय

टिप्पणियाँ