الدرس 59: تقنيات وأدوات تصحيح الأخطاء
تصحيح الأخطاء (Debugging) هو عملية العثور على الأخطاء (bugs) وإصلاحها في البرمجيات. يمكن لبرامج C أن تعاني من ثلاثة أنواع رئيسية من الأخطاء:
- أخطاء بناء الجملة (Syntax Errors): يكتشفها المترجم (مثل نسيان فاصلة منقوطة).
- أخطاء الربط (Linker Errors): تحدث عند دمج ملفات الكائنات (مثلاً استدعاء دالة تم التصريح عنها ولكن لم يتم تعريفها أبداً).
- أخطاء منطقية/أثناء التشغيل: يعمل البرنامج ولكنه يتصرف بشكل غير صحيح (مثل انتهاك حدود المصفوفة، الحلقات اللانهائية، تسرب الذاكرة). تتطلب هذه الأخطاء مصححاً (debugger).
تقنيات أساسية
- جمل الطباعة: أبسط طريقة لتصحيح الأخطاء. أدخل جمل
printf()لتتبع قيم المتغيرات وتدفق التنفيذ. - العزل: قم بتحويل أجزاء من الكود لتعليقات لتحديد مكان نشوء الخطأ.
- التطوير التدريجي: اكتب واختبر قطعاً صغيرة من الكود بدلاً من كتابة البرنامج بالكامل دفعة واحدة.
استخدام المصحح (GDB: GNU Debugger)
يسمح لك المصحح بتنفيذ برنامجك خطوة بخطوة، وفحص حالات المتغيرات، والتحكم في التدفق.
1. الترجمة مع معلومات التصحيح
لاستخدام GDB، قم بترجمة الكود باستخدام الخيار -g :
bash gcc program.c -o program -g
2. أوامر GDB الأساسية (مفاهيم)
| الأمر | الوصف |
|---|---|
gdb ./program | بدء المصحح مع الملف التنفيذي |
break main | وضع نقطة توقف عند بداية main |
run | بدء التنفيذ (يتوقف عند نقطة التوقف) |
next | تنفيذ السطر التالي، وتخطي استدعاءات الدوال |
step | تنفيذ السطر التالي، والدخول في استدعاءات الدوال |
print variable | عرض القيمة الحالية لمتغير |
continue | الاستمرار في التنفيذ حتى نقطة التوقف التالية |
quit | الخروج من GDB |
إتقان استخدام المصحح أمر ضروري للعثور على الأخطاء الصعبة والمتقطعة، خاصة تلك المتعلقة بالمؤشرات والذاكرة.