تنقيح الكود باستخدام PDT + Xdebug
السلام عليكم،
لعل تنقيح كود PHP من أهم الأمور التي تشغل مبرمجي هذه اللغة، فيضطر دائماً إلى استخدام تعليمات (echo, print_r, var_dump) لرؤية المتحولات وتغيراتهم. أما باستخدام منقح Xdebug فالحال يختلف كثيراً حيث يمكنك وضع نقاط التوقف (break points) ومشاهدة حالة المتحولات في هذه النقاط والمحتولات الموجودة أيضاً.

سنستخدم لهذا الغرض نسخة Eclipse المعدة للغة PHP وهي Eclipse PDT والمنقح Xdebug، سنقوم بإعداد بيئة التنقيح على المخدم المحلي (localhost) وسنحتاج للتعديل على ملف php.ini.
1- قم بتحميل xDebug من موقعه، اختر النسخة 5.2 VC6 المتوافقة مع PHP 5.2 و PHP 5.1.
2- أضف الملف الذي حملته (filename.dll) إلى مجلد الإضافات في المخدم المحلي، عادة يكون داخل مجلد PHP/ext.
3- أضف هذه الأسطر إلى ملف php.ini في نهاية الملف:
[xdebug] zend_extension_ts="D:/www/php5/ext/php_xdebug.dll" xdebug.profiler_output_dir = "D:/www/tmp/xdebug" xdebug.profiler_output_name = "cachegrind.out.%p" xdebug.profiler_enable = 0 xdebug.profiler_append=0 xdebug.extended_info=1 xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.idekey=xdebug xdebug.remote_log="D:/www/tmp/xdebug/xdebug_remot.log" xdebug.show_exception_trace=0 xdebug.show_local_vars=9 xdebug.show_mem_delta=0 xdebug.trace_format=0
انتبه في السطر الأول إلى مسار مخدمك المحلي فالمسار عندي ربما يختلف عن المسار عندك، أيضاً أنشأ مجلد xdebug داخل مجلد tmp
4- الآن أعد تشغيل المخدم المحلي واستدعي صفحة تحتوي على ()phpinfo لترى مثل هذه النتيجة:

5- الآن انتهينا من إعداد المخدم المحلي وسنتجه إلى PDT، من قائمة Window اختر Preferences ثم PHP واختر Debug، ادخل هذه النافذة اختر نوع المنقح PHP Debugger منقح Xdebug.
انتهينا من إعداد PDT والآن ماعلينا سوى تجربة المنقح وكيفية العمل عليه:
1- أنشأ مشروع جديد وأضف ملف وبعض الكود ولاتنسى أن المشروع يجب أن يكون داخل المخدم المحلي (localhost).

إنشاء مشروع جديد
2- اختر السطر الذي تريد وضع نقطة توقف عنده واضغط على جانب رقم هذا السطر لتظهر دائرة زرقاء تشير إلى نقطة توقف عند هذا السطر.

3- إذا لم تكن تستخدم منظور PHP فاختر من قائمة window خيار Open Perspective واختر PHP.
4- اختر من قائمة Run خيار Debug Configurations …

واضغط على زر debug الآن سيعطيك رسالة بأنه سيستعمل منظور PHP Debug اضغط موافق واستمتع بالمنقح ونقاط التوقف، تابع حالة المتحولات، استعمل F5 للاستمرار في التنقيح.
















ممتاز جداً يعطيك ألف عافية أخوي خالد, نستخدم هالطريقة بالفيجوال ستديو بشكل دائم وطريقة عملية جداً لحل المشكلات ومعرفة قيم المتغيرات.
شكراً لك
شكراً كتير, كنت مثل الغبي,اسمع كلمة Debug قوم اهرب,بس هلأ عرفت شو ميزتها,والأداة الحلوة هي,بس بدي شوف إذا في شي اسهل و اريح منها,لأنو الEclipse ما بستخدمه للتطوير مواقع الويب.
سلام.
السلام عليكم
للاسف اخي, منظور PHP Debug لم ينجح معي لكن عملية التنصيب نجحت تماماً.
لا اعلم ما المشكلة
@عبد الملك: الله يعافيك وصحيح طريقة لابد منها لكل مطور أن يستعملها.
@عدنان: مامشكلة هي صرت بتعرف
بشكل عام مافي لل php غير منقحين هما Xdebug and Zend debugger
@اسماعيل: اختر من قائمة Window خيار Open Perspective واختر other ثم من النافذة التي تظهر اختر PHP Debug
شكراً أخ خالد،
، في آخر تحديث لAptana.
ولمستخدمي Aptana Studio، فهذه الميزة موجودة أيضاً،
وطريقة إستخدامها كالتالي:
من قائمة Run إختر Debug as وأختر PHP Script هذه الطريقة نجحت معي
وللعلم فقط أن Aptana تحوي على نسخة معدلة من xDebug وPDT ^.^.
أهلاً أخي عمر خبير Aptana وشكراً على الإفادة.
تسلم ايدك استاذ خالد
وشرح سلس
معلومات جديدة كالعادة
فى انتظار المزيد والمزيد من هذه المواضيع الرائعة (طمع:))
االله يسلمك وشرفتنا بتعليقك
السلام عليكم شكرا للأخ خالد على هذا الموضوع أنا مبرمج(مبتدىء) حصلت على دورة في برمجة php وأٌقوم بتطوير نفسي في البرمجة لأني لم أحصل على عمل في البرمجة لكن بعد مررو سنة في البرمجة أكتشفت نفسي أنني لاأستطيع إلا تركيب السكربتات والتعديل في أمور بسيطة فقط , وأكتشفت أيضاً أن أغلب المبرمجين(وخاصة العرب) لايقومون بعمل مشاريع برمجية ولكن يقومون بأستعمال السكربتات الجاهزة والمحترف منهم الذي يستطيع التعديل في السكربت وتغير ملامحه والمتوسط منهم الذي يستطيع التعريب والمبتدىء منهم الذي يقوم بتركيب السكربت , ومابين المبتدىء والمتوسط الذي يستطيع أستخدام السكربت بكفائه بعد تركيبه (على قول المثل الشائع في تقنية المعلومات “أبدأ من حيث ماأنتهى الأخرون”)
* طبعاً يوجد أناس يقومون بعمل مشاريع خاصة ولكن هم أقلية او مع الشركات والمؤسسات البرمجية.
* ويوجد أناس أخرين حق كلام فقط لكن عنده معلومات وليس خبرة.
* وأغلب المنتجات البرمجية من الشركات(وخاصة العربية) مبنية من سكربتات مفتوحة المصدر.
ملاحظة / أتحدى أي واحد منكم يقول لي كلام غير كذا.
بأختصار شديد جداً ماأحد يستفيد من البرنامج هذا إلا المبرمج الخبير.
وشكراً.
(المعذرة على طول الرد لأني والله أتكلم من القهر من حركات أغلب المبرمجين العرب الذين يدّعون الأحترافيه ولايدعونك تتطلع على أعمالهم ولا طريقة عمله يقول لك هذا أسراري وتعبي وعندما تكتشف طريقة عمله تجد أنه يقوم بتركيب السكربت والتعديل عليه في امور بسيطة.)
* أغلب المبرمجين الذين يدّعون الأحترافيه إلا من رحم ربي يقومون بهذه الطريقة وأتحدى أي شخص يقول غير هذا الكلام.
أنا ركبت برنامج Aptana وماأفدني بشء , الدريم ويفر أفضل بسيط وقوي.
كلامك صحيح أخي الكريم ومالك إلا تتجاهل هذه الفئة وتخفف من غضبك قليلاً
شكرا على الشرح
لقد واجهتني مشكلة في المرحلة الأخيرة حيث عندما أضغط على Debug يظهر Progress وهو متوقف عند 19%
Launching : waiting for XDebug session
مع فتح للمتصفح وهو يتعرض نتيجة تطبيق الصفحة المراد تنقيحها.
أرجوا ان اجد عندك حل للمشكلة ؟
علما أني أستخدم ال XAMPP
وعند التعديل في ملف PHP.ini غير مايجب تغييره مع إضافة ; لكل سطر نظرا لعدم اشتغال السرفر بدونها.
أسف ولكن لا أعلم ما المشكلة حاول البحث في غوغل
تعلمت أن إضافة ; قبل كل سطر في php.ini يعتبر كتعليق
لذلك قمت بوضع ; عند بداية كل سطر من سطور الخاصة بـ [Zend]
مع إضافة الأسطر الموضوعة هنا في نهاية الملف
وتغير قيمتين في الملف وهما
implicit_flush = On
output_buffering = 0
فحلت المشكلة والحمد لله
شكرا على الإشارة إلى التنقيح بإستعمال pdt . فأنان كنت أستخدم Notepad++ وأخطأت في كتابة __construct فوضعت __constract عند تطبيق الصفحة لاتظهر الأخطاء لكن يتم إضافة قيم فارغة إلى قاعدة البيانات. يومين وأنا افحص الملف ولم أجد الخطأ لكن بعدما نجحت بإستعمال pdt وجدت الخطاء
شكراً لمشاركتنا الفائدة وماشاء الله عليك حليتها