अपडेट पर वापस जाएँ
New releaseSep 1, 2026

seer snap-latest

Seer - gdb के लिए एक GUI फ्रंटएंड

साझा करें

परिचय

Seer - Linux के लिए gdb का एक GUI फ्रंटएंड। (Ernie Pasveer [email protected])

इस प्रोजेक्ट पर सक्रिय रूप से काम चल रहा है। लक्ष्य gdb के लिए एक सरल, फिर भी आकर्षक GUI बनाना है।

कृपया किसी भी बग या वांछित सुविधा की रिपोर्ट मेरे ईमेल पर करें या मेरे GitHub प्रोजेक्ट पेज पर एक कार्य बनाएं।

स्थापना

Seer को या तो पैकेज मैनेजर से या स्रोत से स्थापित किया जा सकता है।

[!NOTE] स्थापित करने से पहले सुनिश्चित करें कि आवश्यकताएँ पूरी हों।

आवश्यकताएँ

  • Linux

  • C++17

  • "mi" इंटरप्रेटर के साथ gdb (चलाकर जाँचें: gdb --interpreter=mi)

  • CMake (3.5.0 या नया)

  • QT6

    • जब Seer को स्रोत से बनाते हैं, तो आपको अपने वितरण के लिए सिस्टम पर QT6 "devel" पैकेज स्थापित होने चाहिए।
      • Core
      • Gui
      • Widgets
      • PrintSupport
      • Charts
      • Svg
    • Qt6 निर्माण निर्देश यहाँ हैं: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
  • QT5

    • Seer अब Qt5 के साथ संकलित नहीं होता। 2.3 स्रोत ट्री आखिरी है जो ऐसा करता है।
    • Qt5 निर्माण निर्देश यहाँ हैं: https://github.com/epasveer/seer/wiki/Building-Seer---Qt5

पैकेज से स्थापना

निम्नलिखित पैकेज मैनेजरों के माध्यम से उपलब्ध:

Pamac (Manjaro)

$ pamac install seer

zypper (openSUSE Tumbleweed)

$ zypper install seergdb

Flathub

Flathub वेबसाइट। यहाँ

$ flatpak install flathub io.github.epasveer.seer

Flatpak

बीटा Seer संस्करण। GitHub पर Seer का रिलीज़ पेज

महत्वपूर्ण: flatpak-spawn --host, gdb चलाने के लिए GDB Launcher में आवश्यक है। देखें https://github.com/epasveer/seer/issues/377#issuecomment-3620844808।

seer.flatpak डाउनलोड करें। इसे स्थापित करें:

$ flatpak install -y --bundle --user seer.flatpak

Snap

बीटा Seer संस्करण। GitHub पर Seer का रिलीज़ पेज

$ snap install seergdb_<version>.snap --dangerous

स्रोत से स्थापना

(अनुशंसित) Seer को नीचे दिए गए निर्देशों का पालन करके Qt6 के साथ बनाया जा सकता है।

https://github.com/epasveer/seer/wiki/Building-Seer---Qt6

इसे अभी के लिए नीचे दिए गए निर्देशों का पालन करके Qt5 के साथ भी बनाया जा सकता है।

https://github.com/epasveer/seer/wiki/Building-Seer---Qt5

समाचार

GitHub पर Seer का Wiki पेज देखें।

  • संस्करण v1.17 अंतिम Qt5 रिलीज़ होगा।
  • अगली रिलीज़ v2.0 होगी और Qt6 आधारित होगी। हालाँकि, अभी के लिए, इसे अभी भी Qt5 के साथ संकलित किया जा सकता है।
  • यदि आप नवीनतम स्थिर Qt5 स्रोत चाहते हैं, तो v1.17 यहाँ से प्राप्त करें: https://github.com/epasveer/seer/releases/tag/v1.17

Seer प्रारंभ करना

Seer को कमांड लाइन से डीबग करने के लिए प्रोग्राम को आसानी से प्रारंभ करने के लिए बनाया गया है। gdb के पास प्रोग्राम को डीबग करने के कई तरीके हैं। इसलिए Seer भी स्वाभाविक रूप से ऐसा करता है।

Seer चलाने के सभी तरीकों को देखने के लिए Wiki पर जाएं।

https://github.com/epasveer/seer/wiki/Starting-Seer

GUI अवलोकन

विभिन्न Seer दृश्यों और संवादों के उदाहरण।

मुख्य दृश्य

Seer का मुख्य दृश्य इस प्रकार दिखता है:

  • स्रोत/फ़ंक्शन/प्रकार/चर/लाइब्रेरीज़

    • प्रोग्राम में उपयोग किए गए स्रोत/हेडर फ़ाइलों की सूची।
    • फ़ंक्शन, प्रकार और स्थैतिक चर खोजें। डबल क्लिक करने से स्रोत फ़ाइल खुल जाएगी।
    • प्रोग्राम द्वारा संदर्भित साझा लाइब्रेरीज़ की सूची।
    • स्रोत/हेडर फ़ाइलों की सूची खोजी जा सकती है। यह दिखाई गई फ़ाइलों की सूची को "सिकोड़" देगा।
    • किसी फ़ाइल पर डबल क्लिक करने से वह कोड मैनेजर में खुल जाएगी।
  • चर/रजिस्टर जानकारी

    • चर और रजिस्टर मान दिखाएं।
    • "Logger" - किसी चर का मान लॉग करें। इसे मैन्युअल रूप से दर्ज करें या कोड मैनेजर में खोली गई फ़ाइल में चर पर डबल क्लिक करें।
    • "Tracker" - चर की एक सूची बनाएं ताकि जब भी gdb किसी रुकने बिंदु (step, next, finish, आदि) पर पहुंचे तो मान दिखाया जा सके। जब रुकने का बिंदु पहुंच जाता है, तो सूची के सभी चर अपना संभावित नया मान दिखाएंगे।
    • "Registers" - सभी cpu रजिस्टरों के मान दिखाएं।
  • कोड मैनेजर।

    • Seer gui के मध्य भाग का बड़ा क्षेत्र।
    • स्रोत फ़ाइलें इस दृश्य में खोली जाती हैं।
    • फ़ाइल में टेक्स्ट को ^F के साथ खोजा जा सकता है।
    • चर नाम पर डबल क्लिक करके चर को "Logger" में जोड़ा जा सकता है। CTLR कुंजी दबाकर डबल क्लिक करने से चर के आगे "" जुड़ जाएगा। SHIFT कुंजी दबाकर डबल क्लिक करने से चर के आगे "&" जुड़ जाएगा। CTRL+SHIFT कुंजी दबाकर डबल क्लिक करने से चर के आगे "&" जुड़ जाएगा।
    • चर नाम का चयन करके और RMB दबाकर "Add variable to Tracker" चुनकर चर को "Tracker" में जोड़ा जा सकता है।
    • चर नाम का चयन करके और RMB दबाकर "Add variable to Memory Visualizer" चुनकर चर को "Memory Visualizer" में जोड़ा जा सकता है।
    • किसी विशिष्ट पंक्ति पर RMB दबाकर एक breakpoint/printpoint बनाया जा सकता है।
    • किसी विशिष्ट पंक्ति पर RMB दबाकर किसी विशिष्ट पंक्ति तक निष्पादित किया जा सकता है।
    • इस दृश्य में टैब को डबल-क्लिक करके अलग किया जा सकता है।
  • Breakpoints, Watchpoints, Catchpoints, Printpoints, मैन्युअल gdb कमांड और लॉग।

    • कोड मैनेजर के नीचे का क्षेत्र।
    • मैन्युअल कमांड। मैन्युअल रूप से gdb या gdbmi कमांड दर्ज करें। कमांड अगले Seer उपयोग के लिए याद रखे जाते हैं।
    • Breakpoint मैनेजर। Breakpoints बनाएं और प्रबंधित करें।
    • Watchpoint मैनेजर। Watchpoints बनाएं और प्रबंधित करें। एक watchpoint निगरानी करता है कि कोई चर कब एक्सेस किया जाता है (read, write, read/write)।
    • Catchpoint मैनेजर। Catchpoints बनाएं और प्रबंधित करें। एक catchpoint C++ throw/rethrow/catch कॉल पर निष्पादन रोकता है।
    • Printpoint मैनेजर। Printpoints बनाएं और प्रबंधित करें। एक printpoint breakpoint की तरह है लेकिन यह आपको उस printpoint पर चर प्रिंट करने की अनुमति देता है। gdb का 'dprintf' कॉल देखें।
    • GDB आउटपुट। gdb प्रोग्राम से किसी भी आउटपुट का लॉग।
    • Seer आउटपुट। Seer प्रोग्राम से किसी भी आउटपुट का लॉग। निदान के रूप में।
    • इस दृश्य में टैब को डबल-क्लिक करके अलग किया जा सकता है।
  • स्टैक फ्रेम जानकारी।

    • स्टैक फ्रेम सूची। स्कोप (वर्तमान फ़ंक्शन) बदलने के लिए किसी फ्रेम पर डबल क्लिक किया जा सकता है।
    • स्टैक फ्रेम तर्क। प्रत्येक फ्रेम के लिए, प्रत्येक फ़ंक्शन को पारित तर्क प्रिंट करें।
    • स्टैक स्थानीय चर। वर्तमान फ़ंक्शन के लिए, स्थानीय चर के मान प्रिंट करें।
  • थ्रेड जानकारी।

    • थ्रेड आईडी। सभी थ्रेड्स की सूची। स्कोप (वर्तमान थ्रेड) बदलने के लिए थ्रेड आईडी पर डबल क्लिक करें।
    • थ्रेड फ्रेम। प्रत्येक थ्रेड के लिए, उसके स्टैक फ्रेम सूचीबद्ध करें।
  • Gdb के रिवर्स डीबगिंग मोड का समर्थन करता है।

    • निर्देश रिकॉर्डिंग चालू या बंद करें।
    • प्लेबैक दिशा को आगे या पीछे सेट करें।

ओपन डायलॉग

जब ओपन एक्ज़ीक्यूटेबल डायलॉग लागू किया जाता है, तो यह इस प्रकार दिखता है:

Seer कंसोल

एक्ज़ीक्यूटेबल से सभी टेक्स्ट आउटपुट Seer कंसोल पर जाएंगे। एक्ज़ीक्यूटेबल के लिए टेक्स्ट इनपुट भी कंसोल के माध्यम से दर्ज किया जा सकता है।

असेंबली दृश्य

सामान्यतः Seer केवल स्रोत कोड को कोड मैनेजर में टैब के रूप में दिखाएगा। प्रोग्राम की असेंबली को भी एक टैब के रूप में दिखाया जा सकता है।

"View->Assembly View" चुनें और स्रोत कोड टैब के साथ एक अतिरिक्त टैब दिखाया जाएगा जो निष्पादित की जा रही वर्तमान असेंबली दिखाता है। यहाँ एक उदाहरण है।

स्रोत कोड टैब की तरह, असेंबली टैब में breakpoints सेट किए जा सकते हैं। वर्तमान निर्देश हाइलाइट किया गया है।

"Breakpoints" टैब और "Stack frames" टैब में प्रविष्टियों पर डबल-क्लिक करने से उन पतों के लिए असेंबली दिखाई देगी।

"Nexti" और "Stepi" हॉट-की हैं, जैसा कि आपकी कॉन्फ़िग सेटिंग्स द्वारा परिभाषित किया गया है। सामान्यतः "Ctrl+F5" और "CTRL+F6"। असेंबली टैब में "^F" का उपयोग करने से एक शक्तिशाली खोज बार दिखाई देगा।

Seer में असेंबली सुविधा नई है। बेझिझक परिवर्तन/सुविधाएँ सुझाएं।

मेमोरी विज़ुअलाइज़र

मेमोरी विज़ुअलाइज़र में कच्ची मेमोरी की सामग्री को देखते समय, यह इस प्रकार दिखता है:

मेमोरीडिसअसेंबली

ऐरे विज़ुअलाइज़र

ऐरे विज़ुअलाइज़र में ऐरे की सामग्री को देखते समय, यह इस प्रकार दिखता है:

सामान्यस्पलाइनस्कैटर

दो ऐरे को X-Y प्लॉट के रूप में उपयोग किया जा सकता है। उदाहरण के लिए, यह सरल 'points' ऐरे एक आकृति की X-Y रूपरेखा बनाता है।

    int main() {
        int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
        return 0;
    }
X मानY मानXY मान

स्ट्रक्चर विज़ुअलाइज़र

स्ट्रक्चर विज़ुअलाइज़र में C/C++ स्ट्रक्चर या C++ क्लास की सामग्री को देखते समय, यह इस प्रकार दिखता है। यह उदाहरण वर्तमान C++ क्लास के लिए "*this" की सामग्री दिखाता है जिसमें Seer है। सभी स्ट्रक्चर सदस्य जो मूल प्रकार हैं, संपादित किए जा सकते हैं।

एक बेसिक स्ट्रक्चर विज़ुअलाइज़र भी है जो अधिक हल्का है, लेकिन पॉइंटर्स का अनुसरण नहीं कर सकता और संपादित नहीं किया जा सकता।

इमेज विज़ुअलाइज़र

कच्ची मेमोरी की सामग्री को देखते समय जो एक इमेज है, इमेज विज़ुअलाइज़र का उपयोग किया जा सकता है।

सहायता/संपर्क

किसी भी बग या सुविधा के लिए [email protected] पर ईमेल भेजें। या मेरे GitHub प्रोजेक्ट पेज में एक कार्य बनाएं।

स्टारगेज़र्स

यह एक अद्भुत दुनिया है।

श्रेणियाँ