الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعمال Debogger

مغلق
بدأه chik في 10 ديسمبر 2003 · 3 رد · 645 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,

سأحاول أن أعطي هنا فكرة كيف يمكن أن نستعمل Debogger لنتصفح برنامجنا للبحث عن الأخطاء.

إن الكثير قد يقوم بالبرمجة ولا يعرف أن بحوزته برنامجا يمكنه من تشغيل برنامجه كما يشاء. مثلا يمكن أن يوقفه عند سطر ما أم أن يقوم بتشغيله سطرا سطرا وفي نفس الوقت يمكنه أن يشاهد كيف تتغير مختلف المتغيرات حتى يحصل على الشيء الدي لم يشتغل كما كنا نتوقعه. وهدا دور ما يسمى ب Debogger ومن أهم مميزاته مثلا :

- وضع نقطة توقف في مكان ما في البرنامج أو ما يسمى ب Break Point وهدا يعني أنه حين نقوم بتشغيل البرنامج فإن هدا الأخير سيتوقف عند النقطة التي أردناها ويعطينا اليد ويمكن أن نشاهد مادا وقع في البرنامج.

- تشغيل البرنامج خطوة حطوة وهو ما يسمى ب Trace وهده مفيدة جدا وتمكننا من معرفة المراحل التي يمر بها البرنامج نقول مثلا أنه عندنا معلومة if فيمكن أن نشاهد هل البرنامج فعلا سيدخل هده المعلومة أو لا .

بالإضافة إلى تشغيلات أخرى يمكن أن نتطرق إليها من بعد لكن أضن أن الأساس هو ما سبق ويمكن لأي مبرمج أن يكتشف البقية بعد التجربة. ومن المعلوم أن معضم الكومبايلارت تأتي مع Debogger وهنا سأتكلم على فيجوال س++.

سأعطي الطريقة كيف نعمل نقطة توقف وكيف نشغل البرنامج خطوة خطوة.

نفترض أننا كتبنا برنامجنا وبنيناه بدون مشاكل هدا يعني أنه ليس فيه أخطاء برمجية حيث أن الكمبايلر هو الدي يتكلف بهدا وهدا لا يعني أن برنامجنا ليست فيه أخطاء يمكن أن أسميها منهجية. ففي فيجوال س++ حين نريد أن نتوقف عند سطر معين ننقر على هدا السطر ونضغط على الزر F9 أو ننقر على اليد التي تكون غالبا في ToolBar وبعد هدا سنشاهد كويرة حمراء في يسار السطر.نشغل البرنامج بالضغط على الزر F5 أو على Go في ToolBar وهنا نلاحض أن البرنامج سيبدأ في التشغيل وسيتوقف عند السطر المدكور وستكون عندنا نافدتان في الأسفل ففي نافدة Variables ستعطينا المتغيرات وقيمها وفي نافدة watch يمكن أن نضيف أي متغير نريده. وللدكر فإدا لم تضهر هده النوافد يمكن أن نبرزهما كالتالي :

View – Debug Windows وهنا نختار النوافد التي نريد اضهارها وغالبا ما نكتفي ب watch و variables وهناك نوافد أخرى يمكن أن نستعملها عند التعميق. فمثلا من يريد أن يرى كيف تعمل المؤشرات التي طالما تحرق رؤوسنا يمكن أن نشاهد الداكرة باستعمال نافدة MEMORY .وهده أمور يمكن أن نرجع لها عند ااضرورة. وللعلم أيضا أنه يمكن أن نغير قيمة المتغيرات فلنفترض أنه عندي تعليمة FOR من صفر لإلى 1000 وحين أوقف البرنامج أريد أن أشغله خطوة خطوة وأنا مهتم مثلا كيف سيعمل البرنامج حين ينتهي من الحلقة.فإدا كان عندي الوقت يمكن أن استخدم الألف مرة وإلا فسأغير قيمة المتغير للحلقة كمن أعطيه مثلا 999 وهكدا سأشغله مرة واحدة وسيخرج البرنامج من الحلقة وأتتبعه.

لتشغيل البرنامج خطوة خطوة نضغط على الزر F10 كل مرة نريد فيها سطرا. والمعلوم أيضا أنه يمكن أن نضع عدة نقط توقف. وإدا انتهينا من الخطوة يمكن أن نضغط من جديد على F5 ليستمر البرنامج كعادته.

هده هي بعض الأمور الأساسية لهدا الإستعمال ويمكن من خلال التجربة أن نكتشف البقية.

حين نريد إزالة نقطة توقف ما نعمل كالبداية ننقر على السطر الدي توجد فيه النقطة ونضغط على F9 ونلاحظ أن الكويرة الحمراء قد اختفت.

ملحوضات:

قبل أن نتمكن من هدا العمل نتأكد أننا نبني برنامجنا على شكل Debug وهدا يكون دائما عند البدء في برنامج جديد. وهنا أزيد شيئا وهو أنه عندما نبتدء مشروعا جديدا يكون البناء على شكل Debug وهدا يعني أن البرنامج exe الدي سيكون عندنا سيكون أطول لأنه سيحتوي على كل المعلومات التي نحتاجها إدا أردنا أن نعمل ديبوغ لبرنامجنا.وحين ننتهي من مشروعنا ونريد النسخة النهائية فهنا يجب إعادة بناء المشروع على نوع Release ليعطينا ملفا صغيرا وخال من كل المعطيات التي لا يحتاجها البرنامج.

يجب أن نضع نقط التوقف على تعليمات وإدا وضعناها مثلا على int n فإن الديبوغر سيعطينا إندار وسيدفع بهده النقطة إلى التعليمة الموالية.

هدا بخلاصة عن استعمال debug وأن مختلف البرامج الأخرى تعمل على هدا الشكل لمن لديه كمبايلر آخر.

في انتضار أي اقتراح أو سؤال أقول لكم إلى اللقاء.

#2

مشكور أخى ووفقق الله الى طلب العلم

#3

مشكووووور أخي chik فعلاً استخدام الـ break point مهم وضروري وعلى المبرمج الجيد إنه ما يغفل وجود هذي الميزة في الكومبايلر.

ومثل مافي هيكلة للبرنامج عن طريق تقسيمه إلى functions يجب هيكلة التنفيذ إلى أكثر من نقطة حتى إذا كان هناك bug لا يعتبر الكومبايلر سقوطها سهواً خطأ نعرف أين الخطأ وييسهل علينا تصحيحه.

طبعاً أهمية هذا الشيئ في تقليل الـcost تكلفة البرنامج والتي منها تكلفة الوقت وهي في غاية الأهمية.

نشوفك أن شاء الله في مقال ثاني بنفس القيمة وأحسن.

#4

رااااااااااااااائع والله أخي الكريم ،،

و جوزيت خيراً ،، :)

ومن سنة وأنا أبحث عن ذا الشئ ،،

حتى إني فقدت الأمل فيه ،، و نسيته مرةة واحدة ،،

و ألف شكر لك ،، :)

بالفعل ممنونة لك كثيييير و الله يعطيك العافية ،،

لإنه كثييير سألوني عنها ،، و راح أعلمهم عليها بإذن الله ،،

أختك ،، :)

هذا الموضوع مغلق.

مواضيع مشابهة