تصحيح كود C/C++ باستخدام GDB

تصحيح كود C/C++ باستخدام GDB

نشر بواسطة Mostafa Othman | برمجة , تقنيات برمجية , ادوات برمجة , لغة c/c++ ,

15 كانون الثاني 2025

تصحيح كود C/C++ باستخدام GDB

 

الفهرس

  1. مقدمة
  2. إعداد GDB
  3. أوامر GDB الأساسية
  4. نقاط التوقف ونقاط المراقبة
  5. فحص المتغيرات والتعبيرات
  6. التحكم في تنفيذ البرنامج
  7. تحليل إطارات المكدس (Stack Frames)
  8. تقنيات متقدمة
  9. الخاتمة
  10. المراجع

 

1. مقدمة

يُعد GNU Debugger (GDB) أداة قوية توفر بيئة غنية لتصحيح أخطاء تطبيقات C/C++. يسمح GDB للمطورين بتحليل تدفق البرنامج، فحص المتغيرات، إعداد نقاط التوقف، والتنقل خطوة بخطوة في الشيفرة، مما يجعل اكتشاف الأخطاء وتصحيحها أكثر سهولة. في هذا المقال، سنستعرض الميزات والتقنيات الرئيسية في GDB، بدءًا من الأوامر الأساسية وحتى استراتيجيات التصحيح المتقدمة.

2. إعداد  GDB

قبل البدء في التصحيح، تأكد من تثبيت GDB. يمكن تثبيته في معظم أنظمة Linux باستخدام الأمر التالي:

تجميع الشيفرة مع تضمين رموز التصحيح

لاستخدام ميزات التصحيح في GDB، قم بتجميع شيفرة C/C++ باستخدام الخيار -g. يضيف هذا الخيار رموز التصحيح، مما يسمح لـ GDB بربط الكود المترجم بالكود المصدر:

3. أوامر GDB الأساسية

لبدء التصحيح، استخدم الأمر:

بعد تشغيل GDB، يمكنك استخدام الأوامر التالية:

  • run: يبدأ تشغيل البرنامج.
  • quit: يخرج من GDB.
  • help: يعرض مساعدة لأوامر GDB.

سيؤدي هذا إلى تنفيذ برنامجك حتى يكتمل أو يتوقف عند خطأ.

4. نقاط التوقف ونقاط المراقبة

نقاط التوقف (Breakpoints) ونقاط المراقبة (Watchpoints) ضرورية للتحكم في تنفيذ البرنامج في GDB.

إعداد نقاط التوقف

نقطة التوقف توقف تنفيذ البرنامج عند موضع معين. يمكنك إعداد نقاط التوقف عن طريق تحديد رقم السطر أو اسم الدالة:

إعداد نقاط التوقف المشروطة

نقاط التوقف المشروطة توقف التنفيذ عند تحقيق شرط معين:

نقاط المراقبة

نقاط المراقبة مفيدة لمراقبة المتغيرات. عند تغيير قيمة المتغير، يوقف GDB التنفيذ:

5. فحص المتغيرات والتعبيرات

فحص المتغيرات جزء أساسي من التصحيح، ويقدم GDB عدة أوامر للقيام بذلك.

عرض المتغيرات

استخدم الأمر print للتحقق من قيمة المتغيرات:

عرض التعبيرات

يمكنك أيضًا طباعة التعبيرات أو القيام بالحسابات:

مراقبة التغييرات في المتغيرات

الأمر display يقوم بتحديث قيمة المتغير تلقائيًا بعد كل خطوة:

6. التحكم في تنفيذ البرنامج

يوفر GDB عدة أوامر للتحكم في تدفق تنفيذ البرنامج.

التقدم خطوة بخطوة في الشيفرة

  • next: يتقدم إلى السطر التالي، متجاوزًا استدعاءات الدوال.
  • step: يدخل في الدوال، مما يسمح بفحص تفصيلي.
متابعة التنفيذ

استخدم continue لاستئناف التنفيذ بعد الوصول إلى نقطة توقف:

التشغيل حتى سطر معين

الأمر until يستأنف التنفيذ حتى الوصول إلى سطر محدد:

7. تحليل إطارات المكدس

يقدم GDB أدوات لفحص مكدس الاستدعاءات، وهو أمر حاسم عند تصحيح أخطاء الدوال واستدعاءات التكرار.

عرض مكدس الاستدعاءات

الأمر backtrace يعرض مكدس الاستدعاءات، مما يظهر سلسلة الاستدعاءات التي أدت إلى نقطة التنفيذ الحالية:

يمثل كل إطار في مكدس الاستدعاءات استدعاء دالة، ويمكنك التنقل بين الإطارات باستخدام الأمر frame:

8. تقنيات متقدمة

إلى جانب الأساسيات، يقدم GDB أدوات قوية يمكن أن تعزز تجربة التصحيح.

أوامر مخصصة

يسمح GDB بإنشاء أوامر مخصصة للمهام المتكررة. لتعريف أمر مخصص، استخدم define:

البرمجة الآلية

يدعم GDB البرمجة باستخدام بايثون لمهام التصحيح المعقدة، مما يتيح كتابة نصوص برمجية لأتمتة العمليات وتحليل الشيفرة وإخراج النتائج.

التصحيح عن بُعد

يدعم GDB التصحيح عن بُعد، مما يسمح بتصحيح كود يعمل على جهاز أو نظام مختلف. ابدأ GDB باستخدام الخيار --remote واتصل بالبرنامج البعيد عبر gdbserver.

9. الخاتمة

يعد GDB أداة متعددة الاستخدامات وفعالة للمطورين الذين يعملون على C/C++، مما يتيح فحصًا تفصيليًا لسلوك البرنامج، والتحكم المرن في التنفيذ، ومجموعة غنية من الأدوات لتصحيح الأخطاء المعقدة. سواء كنت مبتدئًا في التصحيح أو مطورًا متمرسًا، فإن إتقان الأوامر والتقنيات الأساسية والمتقدمة لـ GDB يمكن أن يحسن كفاءة التصحيح ويعزز إنتاجيتك البرمجية.

10. المراجع