
seer snap-latest
Seer - واجهة رسومية أمامية لـ gdb
مقدمة
Seer - واجهة رسومية أمامية لـ gdb لنظام Linux. (Ernie Pasveer [email protected])
يتم العمل على هذا المشروع بنشاط. الهدف هو واجهة رسومية بسيطة وجميلة لـ gdb.
يرجى الإبلاغ عن أي أخطاء أو ميزات مرغوبة عبر بريدي الإلكتروني أو إنشاء مهمة في صفحة مشروعي على GitHub.
التثبيت
يمكن تثبيت Seer إما من مدير الحزم أو من المصدر.
[!NOTE] تأكد من تلبية المتطلبات قبل التثبيت.
المتطلبات
-
Linux
-
C++17
-
gdb مع مترجم "mi" (تحقق عن طريق تشغيل:
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
- عند بناء Seer من المصدر، ستحتاج إلى تثبيت حزم QT6 "devel" على نظامك لتوزيعتك.
-
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 التجريبية. صفحة إصدارات Seer على github.
مهم: flatpak-spawn --host، مطلوب في GDB Launcher لتشغيل gdb. انظر https://github.com/epasveer/seer/issues/377#issuecomment-3620844808.
قم بتنزيل seer.flatpak. قم بتثبيته:
$ flatpak install -y --bundle --user seer.flatpak
Snap
إصدارات Seer التجريبية. صفحة إصدارات Seer على github.
$ 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
الأخبار
اطلع على صفحة Wiki الخاصة بـ Seer على github.
- سيكون الإصدار v1.17 هو آخر إصدار لـ Qt5.
- سيكون الإصدار التالي v2.0 وسيعتمد على Qt6. ومع ذلك، في الوقت الحالي، لا يزال من الممكن تجميعه مع Qt5.
- إذا كنت تريد أحدث مصدر مستقر لـ Qt5، فاحصل على v1.17 من هنا: https://github.com/epasveer/seer/releases/tag/v1.17
بدء تشغيل Seer
تم تصميم Seer لبدء تشغيل البرنامج لتصحيح الأخطاء بسهولة من سطر الأوامر. لدى gdb طرق متعددة لتصحيح أخطاء البرنامج. لذا فإن Seer يفعل ذلك بشكل طبيعي أيضًا.
انتقل إلى Wiki لرؤية جميع طرق تشغيل Seer.
https://github.com/epasveer/seer/wiki/Starting-Seer
نظرة عامة على الواجهة الرسومية
أمثلة على طرق عرض وحوارات Seer المختلفة.
العرض الرئيسي
يبدو العرض الرئيسي لـ Seer كما يلي:

-
المصدر/الدوال/الأنواع/المتغيرات/المكتبات
- قائمة ملفات المصدر/الرؤوس التي تم استخدامها في البرنامج.
- البحث عن الدوال والأنواع والمتغيرات الثابتة. النقر المزدوج سيفتح ملف المصدر.
- قائمة المكتبات المشتركة المشار إليها بواسطة البرنامج.
- يمكن البحث في قائمة ملفات المصدر/الرؤوس. سيؤدي هذا إلى "تقليص" قائمة الملفات المعروضة.
- النقر المزدوج على ملف سيفتحه في مدير الكود.
-
معلومات المتغير/السجلات
- عرض قيم المتغيرات والسجلات.
- "Logger" - تسجيل قيمة متغير. أدخله يدويًا أو انقر نقرًا مزدوجًا على المتغير في الملف المفتوح في مدير الكود.
- "Tracker" - إنشاء قائمة من المتغيرات لعرض القيمة كلما وصل gdb إلى نقطة توقف (step, next, finish, إلخ). عند الوصول إلى نقطة التوقف، ستظهر جميع المتغيرات في القائمة قيمتها الجديدة المحتملة.
- "Registers" - عرض قيم جميع سجلات المعالج.
-
مدير الكود.
- المنطقة الكبيرة في الجزء الأوسط من واجهة Seer الرسومية.
- يتم فتح ملفات المصدر في هذا العرض.
- يمكن البحث عن نص في ملف باستخدام ^F.
- يمكن إضافة متغيرات إلى "Logger" بالنقر المزدوج على اسم المتغير. النقر المزدوج مع الضغط على مفتاح CTRL سيضيف "" قبل المتغير. النقر المزدوج مع الضغط على مفتاح SHIFT سيضيف "&" قبل المتغير. النقر المزدوج مع الضغط على مفتاحي CTRL+SHIFT سيضيف "&" قبل المتغير.
- يمكن إضافة متغيرات إلى "Tracker" عن طريق تحديد اسم المتغير والنقر بزر الماوس الأيمن واختيار "Add variable to Tracker".
- يمكن إضافة متغيرات إلى "Memory Visualizer" عن طريق تحديد اسم المتغير والنقر بزر الماوس الأيمن واختيار "Add variable to Memory Visualizer".
- يمكن إنشاء نقطة توقف/نقطة طباعة بالنقر بزر الماوس الأيمن على سطر معين.
- يمكن التنفيذ إلى سطر معين بالنقر بزر الماوس الأيمن على سطر معين.
- يمكن فصل علامات التبويب في هذا العرض بالنقر المزدوج على علامة تبويب.
-
نقاط التوقف، نقاط المراقبة، نقاط الالتقاط، نقاط الطباعة، أوامر gdb اليدوية، والسجلات.
- المنطقة أسفل مدير الكود.
- الأوامر اليدوية. أدخل أمر gdb أو gdbmi يدويًا. يتم تذكر الأوامر لاستخدام Seer التالي.
- مدير نقاط التوقف. إنشاء وإدارة نقاط التوقف.
- مدير نقاط المراقبة. إنشاء وإدارة نقاط المراقبة. تراقب نقطة المراقبة عند الوصول إلى متغير (قراءة، كتابة، قراءة/كتابة).
- مدير نقاط الالتقاط. إنشاء وإدارة نقاط الالتقاط. توقف نقطة الالتقاط التنفيذ عند استدعاء C++ throw/rethrow/catch.
- مدير نقاط الطباعة. إنشاء وإدارة نقاط الطباعة. نقطة الطباعة تشبه نقطة التوقف ولكنها تسمح لك بطباعة المتغيرات عند نقطة الطباعة تلك. انظر استدعاء 'dprintf' في gdb.
- مخرجات GDB. سجل لأي مخرجات من برنامج gdb نفسه.
- مخرجات Seer. سجل لأي مخرجات من برنامج Seer نفسه. كتشخيص.
- يمكن فصل علامات التبويب في هذا العرض بالنقر المزدوج على علامة تبويب.
-
معلومات إطار المكدس.
- قائمة إطارات المكدس. يمكن النقر المزدوج على إطار لتغيير النطاق (الدالة الحالية).
- وسائط إطار المكدس. لكل إطار، اطبع الوسائط التي تم تمريرها إلى كل دالة.
- المتغيرات المحلية للمكدس. للدالة الحالية، اطبع قيم المتغيرات المحلية.
-
معلومات الخيوط.
- معرفات الخيوط. قائمة بجميع الخيوط. انقر نقرًا مزدوجًا على معرف خيط لتغيير النطاق (الخيط الحالي).
- إطارات الخيوط. لكل خيط، قم بإدراج إطارات المكدس الخاصة به.
-
دعم وضع تصحيح الأخطاء العكسي في Gdb.
- تشغيل أو إيقاف تشغيل تسجيل التعليمات.
- ضبط اتجاه التشغيل إلى الأمام أو العكس.
حوار الفتح
عند استدعاء حوار فتح الملف التنفيذي، يبدو كما يلي:

وحدة تحكم Seer
ستذهب جميع مخرجات النص من الملف التنفيذي إلى وحدة تحكم Seer. يمكن أيضًا إدخال نص للملف التنفيذي عبر وحدة التحكم.

عرض التجميع
عادةً ما يعرض Seer الكود المصدري فقط كعلامات تبويب في مدير الكود. يمكن أيضًا عرض تجميع البرنامج كعلامة تبويب.
حدد "View->Assembly View" وستظهر علامة تبويب إضافية بجانب علامات تبويب الكود المصدري تعرض التجميع الحالي الذي يتم تنفيذه. إليك مثال.

مثل علامات تبويب الكود المصدري، يمكن تعيين نقاط التوقف في علامة تبويب التجميع. يتم تمييز التعليمات الحالية.
النقر المزدوج على الإدخالات في علامة تبويب "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++ في عارض البنى، يبدو كما يلي. يعرض هذا المثال محتويات "*this" لفئة C++ الحالية التي يوجد بها Seer. يمكن تحرير جميع أعضاء البنية التي تكون من الأنواع الأساسية.

يوجد أيضًا عارض البنى الأساسي وهو أخف وزنًا، لكنه لا يمكنه متابعة المؤشرات ولا يمكن تحريره.
عارض الصور
عند النظر إلى محتويات الذاكرة الخام التي تمثل صورة، يمكن استخدام عارض الصور.

الدعم/الاتصال
أرسل بريدًا إلكترونيًا إلى [email protected] لأي أخطاء أو ميزات. أو أنشئ مهمة في صفحة مشروعي على GitHub.
مراقبو النجوم
إنه عالم رائع.







