التتبع (تصحيح الأخطاء)
يشير مصطلح "تحريك البرنامج" أو "التنفيذ خطوة بخطوة" إلى أسلوب تصحيح الأخطاء الذي يعتمد على تنفيذ التعليمات البرمجية سطرًا سطرًا. يستطيع المبرمج فحص حالة البرنامج والجهاز والبيانات ذات الصلة قبل وبعد تنفيذ سطر معين من التعليمات البرمجية. يتيح هذا للمبرمج تقييم تأثير كل عبارة أو تعليمة على حدة، وبالتالي فهم سلوك البرنامج قيد التنفيذ (أو أي خلل فيه). تدعم جميع بيئات التطوير المتكاملة (IDEs ) وأدوات تصحيح الأخطاء الحديثة تقريبًا هذا النمط من التنفيذ.
تاريخ

كان مصطلح "تنفيذ التعليمات خطوة بخطوة" أو "دورة واحدة" يشير في الأصل إلى تقنية إيقاف ساعة المعالج ثم تشغيلها يدويًا دورة واحدة في كل مرة. ولكي يكون ذلك ممكنًا، يلزم توفر ثلاثة أمور:
- عنصر تحكم يسمح بإيقاف الساعة (مثل زر "إيقاف").
- عنصر تحكم ثان يسمح بتقديم الساعة المتوقفة يدويًا بمقدار دورة واحدة (على سبيل المثال مفتاح "خطوة التعليمات" وزر "البدء").
- بعض الوسائل لتسجيل حالة المعالج بعد كل دورة (مثل شاشات عرض السجلات والذاكرة).
في سلسلة معالجات IBM System 360 التي أُعلن عنها عام 1964، كانت هذه الإمكانيات متوفرة عبر مفاتيح وأزرار ومجموعات من مصابيح النيون في اللوحة الأمامية. كما وفرت أنظمة أخرى، مثل PDP-11 ، إمكانيات مماثلة.
في المعالجات الأحدث، التي قد لا تدعم إيقاف الساعة فعليًا ولديها الكثير من الحالة الداخلية بحيث لا يمكن عرضها بشكل معقول على لوحة، يمكن توفير وظائف مماثلة عبر علامة اعتراض ، والتي عند تمكينها توجه المعالج للتوقف بعد كل تعليمة بطريقة مشابهة لنقطة التوقف .
مع ازدياد شيوع المعالجة المتعددة ، أصبحت هذه التقنيات محدودة الجدوى، إذ تتوقف العديد من العمليات المستقلة في آنٍ واحد. وقد أدى ذلك إلى تطوير برامج احتكارية من عدة موردين مستقلين، توفر ميزات متشابهة، لكنها تقصر نقاط التوقف وتنفيذ التعليمات على برامج تطبيقية محددة في مساحات عناوين وخيوط معينة . يتم حفظ حالة البرنامج (بحسب التطبيق/الخيط المُختار) لفحصها في كل خطوة، واستعادتها قبل استئناف التنفيذ، مما يوحي بوجود بيئة مستخدم واحدة. وهذا عادةً ما يكون كافيًا لتشخيص المشكلات على مستوى التطبيق.
بدلاً من استخدام زر إيقاف فعلي لإيقاف التنفيذ مؤقتًا - لبدء تنفيذ البرنامج خطوة بخطوة - يجب عادةً تعيين نقطة توقف أو طلب "إيقاف مؤقت" مسبقًا، وعادةً ما يكون ذلك عند عبارة/تعليمات معينة في البرنامج (يتم اختيارها مسبقًا أو بشكل افتراضي عند التعليمات الأولى).
لتوفير عرض "رسوم متحركة" بملء الشاشة لبرنامج ما، يلزم عادةً جهاز إدخال/إخراج مناسب، مثل شاشة عرض فيديو، لعرض جزء معقول من الكود (مثلاً، بصيغة كود الآلة المفكك أو الكود المصدري ) وتوفير مؤشر (مثل <==) للتعليمات أو سطر الكود المصدري الحالي. لهذا السبب، لم ينتشر استخدام هذه الرسوم المتحركة بملء الشاشة في أنظمة الحواسيب المركزية إلا بعد ظهور أنظمة معالجة المعاملات ، مثل CICS في أوائل سبعينيات القرن الماضي، واقتصر استخدامها في البداية على تصحيح أخطاء برامج التطبيقات العاملة ضمن تلك البيئة. لاحقًا، وفرت الإصدارات نفسها إمكانية مراقبة/تصحيح أخطاء برامج الدفعات وأنظمة التشغيل والمنصات الأخرى عبر المناطق.
مع ظهور أجهزة الكمبيوتر الشخصية في وقت لاحق بكثير بدءًا من عام 1980 تقريبًا، أصبح من الممكن دمج أدوات تصحيح الأخطاء المتكاملة على نطاق أوسع في مجال المستخدم الفردي هذا، وقدمت رسومًا متحركة مماثلة عن طريق تقسيم شاشة المستخدم وإضافة "وحدة تحكم" لتصحيح الأخطاء لتوفير تفاعل المبرمج.
كان برنامج Borland Turbo Debugger منتجًا مستقلاً تم طرحه عام 1989، وكان يوفر رسومًا متحركة للبرامج بملء الشاشة لأجهزة الكمبيوتر الشخصية. أضافت الإصدارات اللاحقة دعمًا لدمج الرسوم المتحركة مع أسطر المصدر الفعلية المستخرجة أثناء عملية التجميع.
تقنيات تحريك البرامج
توجد ثلاث تقنيات برمجية متميزة على الأقل لإنشاء "الرسوم المتحركة" أثناء تنفيذ البرنامج.
- تتضمن عملية التتبع إضافة شفرة مصدرية إضافية إلى البرنامج أثناء الترجمة لاستدعاء المُحرِّك قبل أو بعد كل عبارة لإيقاف التنفيذ العادي. قد تكون هذه الوظيفة جزءًا من مكتبة وقت التشغيل ، كما هو الحال في
pdbوحدة بايثون، أو قد تتخذ شكل إدراج تعليمة نقطة توقف تُشغِّل مُصحِّح أخطاء خارجيًا إذا كان مُتصلًا. - المقاطعة المُستحثة: تتضمن هذه التقنية فرض نقطة توقف عند نقاط محددة في البرنامج أثناء التنفيذ، عادةً عن طريق تغيير تعليمة لغة الآلة عند تلك النقطة (قد يكون ذلك استدعاء نظام مُدرجًا أو عملية غير صالحة عمدًا) وانتظار حدوث مقاطعة. عند حدوث المقاطعة، تتولى أداة الاختبار معالجتها لإبلاغ المبرمج بالحالة. تسمح هذه الطريقة بتنفيذ البرنامج بأقصى سرعة (حتى حدوث المقاطعة)، ولكنها تعاني من عيب يتمثل في أن معظم التعليمات التي تسبق المقاطعة لا تتم مراقبتها بواسطة الأداة.
- محاكي مجموعة التعليمات: تتعامل هذه التقنية مع رمز الآلة للبرنامج المترجمعلى أنه "بيانات" الإدخال الخاصة به، وتقوم بمحاكاة تعليمات الآلة المضيفة بشكل كامل، وتراقب التعليمات البرمجية بحثًا عن نقاط توقف مشروطة أو غير مشروطة أو طلبات الرسوم المتحركة "ذات الدورة الواحدة" التي يطلبها المبرمج بين كل خطوة.
مقارنة الأساليب
تتمثل ميزة الطريقة الأخيرة في عدم إجراء أي تغييرات على البرنامج المُجمَّع لتوفير التشخيص، كما أنها توفر مجالًا واسعًا للتشخيص الشامل، إذ يمكن للأداة تعزيز تشخيصات نظام التشغيل بميزات تتبع برمجية إضافية. ويمكن أيضًا تشخيص (ومنع) العديد من أخطاء البرنامج تلقائيًا باستخدام هذه التقنية، بما في ذلك انتهاكات التخزين وتجاوزات المخزن المؤقت . كما يُمكن اكتشاف الحلقات باستخدام التتبع التلقائي للتعليمات مع عتبات عدد التعليمات (مثل الإيقاف المؤقت بعد 10000 تعليمة؛ عرض آخر n تعليمة). أما الطريقة الثانية، فتُعدِّل فقط التعليمة التي ستتوقف قبل تنفيذها، وقد تُعيدها إلى وضعها الأصلي قبل استئنافها اختياريًا من قِبل المبرمج. وتتيح بعض برامج الرسوم المتحركة استخدام أكثر من طريقة حسب المتطلبات. على سبيل المثال، استخدام الطريقة الثانية للتنفيذ حتى نقطة معينة بأقصى سرعة، ثم استخدام محاكاة مجموعة التعليمات بعد ذلك.
ميزات إضافية
قد يقوم برنامج الرسوم المتحركة، أو قد لا يقوم، بدمج ميزات اختبار/تصحيح أخرى بداخله مثل تتبع البرنامج ، وتفريغ الذاكرة، ونقطة التوقف الشرطية، وتغيير الذاكرة ، وتغيير تدفق البرنامج ، وتحليل تغطية التعليمات البرمجية ، واكتشاف "النقاط الساخنة"، واكتشاف الحلقات أو ما شابه ذلك.
مراجع
روابط خارجية
- نظرة عامة على دعم التتبع (فيجوال ستوديو) في بيئة التطوير المتكاملة (IDE) من مايكروسوفت ، فيجوال ستوديو
- Tarraingim - بيئة الرسوم المتحركة للبرنامج
- الرسوم المتحركة للبرامج كوسيلة لتعليم وتعلم تصميم البرامج وتحليلها
- معلومات منظمة حول اختبار البرمجيات (مثل تاريخ اختبار البرمجيات) منشورة من قبل مراجع الاختبار
- تصحيح الأخطاء
- اختبار البرمجيات
