هل تعلم والإنفوغرافيك > كاريكاتير

الكشف عن الأخطاء Debugging

صديقتنا المبرمجة لا تعاني خروجَ الحشرات من الشاشة هنا! بل تحاول أن تكشف عن الأخطاء البرمجية التي تسعى عن طريقها إلى تصحيح هذه الأخطاء (التي يُطلَق عليها: Bugs).

يعني الكشفُ عن الأخطاء (Debugging) إيجاد الأخطاء (bugs) في البرامج وتصحيحها، وتتضمن عادةً ثلاث خطوات رئيسة: مراقبة الخطأ وتحديد موقعه ثم تصحيحه (1).

يلجأ المبرمجون إليها بعدِّها جزءًا من عملية التطوير وذلك لاختبار برامجهم في مرحلة التطوير؛ لتجري في نهايتها عمليةُ الاختبار (Testing)؛ التي تعني اختبار البرنامج عن طريق مجموعة مختارة بعناية من اختبارات الدخل ومراقبة الخرج المتوقع؛ هل يبدو هذا مشابهًا لطريقة  الكشف؟! (2)

حسنًا ليس تمامًا؛ فالاختبار يكشف فقط عن وجود الأخطاء (الوظيفية)، لكنه لا يخبرنا عن ماهيتها؛ أي إنه يكشف عن آثار (أو أعراض) الأخطاء وليس سببها. يجب على المبرمج بعد ذلك أن يعود للتطوير ويمر بمرحلة الكشف عن الأخطاء لتحديد الأسباب وتصحيحها (2).

ولتأدية عملية التصحيح قد يُستعان بمصحح الأخطاء (debugger) وهو برنامج يمكنه تشغيل برنامجك خطوة بخطوة في كل مرة. ومن ثم يمكن أن يوضح لك بالضبط كيف يرى الحاسوب برنامجك (3).

ولكن لماذا يُدعى الخطأ البرمجي (bug - حشرة)؟ هناك عديد من القصص الملفقة عن أصل هذا المصطلح وكيف وُظِّف في البرمجة. في القصة الأكثر شيوعًا، اكتشفت *غريس موراي هوبر ( Grace Murray Hopper) أن حاسوب Harvard Mark II كان ينتج إجابات غير صحيحة. عندما فحصت الآلة عن كثب، في محاولة لتحديد مكان المشكلة، وجدت عثة عالقة بين وصلات تماس المُرحِّل الكهروميكانيكي (Electromechanical Relay) مانعةً إياه من الانغلاق التام، ثم استخرجت العثة بملاقط ووضعتها في السجل مع كتابة تعليق "عُثِر على أول خطأ فعلي" (4).

نهايةً؛ ينبغي لكل مبرمج أن يكون على دراية بكيفية الكشف عن الأخطاء في برنامجه لتصحيحها؛ فالمبرمج غير القادر على فعل ذلك حاله كحال الصياد الذي لا يعرف التعامل مع طعم صنارته.

لمعرفة المزيد عن غريس هوبر Grace Hopper اقرأ مقالنا: هنا

المصادر:

1. The Debugging Process [Internet]. Cs.colostate.edu. [cited 30 November 2020]. Available from: هنا

2. Lecture 26: Debugging Techniques [Internet]. Cs.cornell.edu. 2006 [cited 30 November 2020]. Available from: هنا

3. Programming - Debugging Programs [Internet]. Cs.utah.edu. [cited 30 November 2020]. Available from: هنا

4. Bugs [Internet]. Cs.cmu.edu. [cited 30 November 2020]. Available from: هنا