מאז שהתחלתי לתכנת אני רגיל לעבוד עם debugger - אתה כותב קוד, מריץ, לא עובד.. נו, מה חדש.. עכשיו אני מריץ עם debugger, עוצר פה, מסתכל שם, משנה משהו, ומגלה די מהר את הבעיה. העברתי שעות רבות מול חלון כזה, ואני מתקשה לעבוד בלעדיו.
ב PHP, כך התחוור לי, רוב הדיבוג מתבצע בעזרת הדפסות אל חלון הדפדפן (!!). טוב, מוזר.. אבל אם כולם עושים ככה, כנראה שזה בסדר, לא? אז זהו, שלא.
הרצאתו של בועז בסמינר של לינוויט על דיבוג בעזרת הרחבות מסחריות של Zend, וההדגמה שהוא עשה במקום, הזכירו לי נשכחות.. נכון.. באמת ככה עבדנו פעם...
הלכתי לחפש מה יש לעולם החופשי להציע, מסתבר שלא המון (אבל יש סוף טוב).
כדי לדבג סביבת PHP, דרושים לנו שני דברים - תמיכה בשרת, שמריץ את קוד ה-PHP, ואיזשהו client, שדרכו נוכל לתת פקודות debugging לשרת. מצאתי שתי הרחבות debug חופשיות לשרתי PHP - האחת dbg, והשניה xdebug.
השאיפה שלי היתה לעבוד עם הרחבה שמאפשרת להתחבר עם gdb כלקוח, לכן בדקתי את xdebug, שנראה שתומכת בזה בדיוק. בדיקה מעמיקה יותר מצאה שהיא לא תומכת ב gdb, ואין גם תוכניות כאלה בעתיד. בדיקת רשימת ה clients לא הראתה שום תוצאה חופשית ללינוקס (נדמה לי שלחלונות דווקא יש), מלבד הכלי המעפן שבא עם ההרחבה ואף אחד לא אמור לעבוד איתו באופן ידני (הוא מוציא פלט XML - נו באמת).
הלכתי לבדוק את dbg, אבל שם מצב ה clients עוד יותר גרוע. מה שטוב הוא מסחרי, והצד החופשי נראה לצאת לידי חובה. התיעוד שלהם לא נראה מספק, זה לא מסומן כיציב על ג'נטו... ובשלב זה כבר די התייאשתי.
ואז פתאום מצאתי את הפוסט הזה - איך לדבג PHP בעזרת vim ו-xdebug על לינוקס.
וואלה - לדבג ישירות ב vim - איזה כיף (אמנם עדיף שיהיה emacs, אבל גם vim זה מספיק טוב).
אחרי התקנה פשוטה יחסית (הרחבת xdebug, וסקריפט vim), כל מה שצריך לעשות כדי לדבג זה ללחוץ על F5 בתוך vi (לא משנה איזה קובץ עורכים כרגע, אפילו ריק), ואז יש לנו 5 שניות להפעיל את השרת (לרענן את העמוד, להגיש את הטופס - מה שאתם רוצים לדבג). השרת מנסה להתחבר אל הלקוח, מוצא אותו, ובום! אתם בתוך סשן דיבאג לתפארת, בתוך vi. אפשר להתקדם שורה שורה, לקפוץ פונקציות, לקבל מידע על משתנים, להגדיר נקודות עצירה - אמריקה..
אז לכל מי שזה חסר לו (ומי שלא מכיר, עוד יותר) - מומלץ. אני לא יודע איך מפעילים את זה על חלונות, אבל בטוח יימצא מישהו שיצליח. זה ייקח לכם חצי שעה עד שעה להפעיל את כל העסק על השרת המקומי שלכם, אבל משם, זה כבר מוגדר וחוסך זמן נהדר.
ה - xdebug יכול להיות מותקן על השרת בלי להפריע למהלך התקין של העניינים, כל עוד לא "הפעילו" אותו. צורת ההפעלה היא ע"י העברת פרמטר בשורת הכתובת של הדפדפן. קצת מסורבל, אבל יש סוכריה - הרחבת פיירפוקס שמפעילה ומנתקת את אפשרות הדיבאג בלחיצת כפתור.
לסיכום, כדי להכנס לדיבאג:
התקנה: הרחבת xdebug, סקריפט vi, תוסף פיירפוקס.
בכל פעם שרוצים לדבג: לוחצים על האייקון בפיירפוקס, לוחצים F5 ב vi, מרעננים את העמוד, ומתחילים.
בהצלחה!
בעניין: דיבוג PHP
שלום יובל, והרבה תודה.
שתי שאלות:
א. האם לדעתך אפשר להשתמש בזה מ-session של SSH ישירות על השרת (דבר שיכול להקל על העניינים לאותם ביננו שעדיין משתמשים בחלונות)
ב. האם בדקת את PDT, הרחבת הדיבג החופשית של אקליפס?
אמנון-מאיר לבב - ייעוץ משולב - סוף מעשה באפיון תחילה!
אפיון מיזמי אינטרנט, ליווי פרוייקטים בדרופל וייעוץ רב-תחומי
חוויות מהתקנת דיבגר
שלום יובל,
התקנתי את xdebug (הלך די בקלות, על ה-VPS החדש שיש לי בארץ). בדקתי עם phpinfo שעובד.
אח"כ התקנתי על השרת את ההרחבה של VIM. ניגשתי לשרת עם putty, הפעלתי את vim, ולחצתי F5. קיבלתי מיידית (בלי לחכות אפילו שנייה) את השגיאה הבאה:
waiting for a new connection on port 9000 for 5 seconds...Connection closed, stop debugging (<class socket.error at 0xb7bc683c>, <socket.error instance at 0xb7cfb6ec>, <traceback object at 0xb7cdd02c>)
האם יש לך השערות למה זה קורה?
האם צריך להתקין גם את ה-xdebug client שמוזכר באתר xdebug? (ניסיתי להתחבר איתו ודווקא הצלחתי לקבל איזשהו פלט - אבל זה נראה משהו ממש לא ידידותי).
ואולי זה עניין של לפתוח את הפורט המתאים ב-firewall?
אמנון-מאיר לבב - ייעוץ משולב - סוף מעשה באפיון תחילה!
אפיון מיזמי אינטרנט, ליווי פרוייקטים בדרופל וייעוץ רב-תחומי
התקנת x-debug
ביקשתי מחברת האיחסון לפתוח פורט מתאים בפירוול (רק כלפי פנים), ועכשיו זה עובד פנטסטי על שרת הניסוי.
אמנון-מאיר לבב - ייעוץ משולב - סוף מעשה באפיון תחילה!
אפיון מיזמי אינטרנט, ליווי פרוייקטים בדרופל וייעוץ רב-תחומי
הפעלה ישירה של XDEBUG מתוך ה-VI
היום נזקקתי שוב ל-XDEBUG. הכפתור F5 לא עבד - כך שהגדרתי קיצור מקלדת שיפעיל בתוך ה-VI את הפקודה ישירות.
:python debugger_run()אמנון-מאיר לבב - ייעוץ משולב - סוף מעשה באפיון תחילה!
אפיון מיזמי אינטרנט, ליווי פרוייקטים בדרופל וייעוץ רב-תחומי
debugging PHP
היי יובל,
Boaz, Boaz is the name, indeed :-)
לגבי דיבוג של PHP אני מרגיש הרבה פעמים "עיוור" ללא יכולות דיבוג ראויות כמו שהכלי שהצגתי אכן נותן לי. אני עובד עם זנד סטודיו (http://www.zend.com/products/zend_studio) ולא עם PDT בלינק שנתת.
מכיוון שאין לי צורך, אין לי נסיון בדיבוג עם PDT או XDebug מול כל קליינט אחר.
ברמת ההמלצה, אני יכול להגיד לך שיש יכולות דיבוג לא רעות ל XDebug + PDT
אני עובר לאנגלית...:
Also, I heard that using
xDebug + kCacheGrind gives you excellent profiling capabilities.
אני לגמרי לא מנוסה עם kCacheGrind וזה רק אינפורמציה שאני מכיר מיד שנייה (ממישהו שאני סומך עליו). חיפוש פשוט בגוגל מביא כל מיני לינקים למדריכים שנראים שימושיים למדי (לפחות). לא בדקתי לעומק.
דיבוג מוצלח ויעיל!
בועז
PHP Therapist
לינווייט - תשתיות תוכן קהילתיות
בועז
תיקנתי את הקישור
Profiling זה נושא חשוב אחר - הוא נמצא קצת מעל דיבוג בפירמידת הצרכים של המתכנת.. :). בהזדמנות ולפי הצורך אטפל גם בו..
PHPEclipse
When started to play with PHP, i used ZEND till my evaluation ran out. Then looked around and moved to PHPEclipse
I don't remember what exactly were the differences but Eclipse is brillant to work with as a base.
What can you do there?
well: debug(over,in and out), breakpoints, go to defintion which is very useful just as an editor, variables, expressions evaluations Pretty much everything. Installation is somewhat tricky you need to have a specific Eclipse + PHP versions
I use it with Wamp 1.6.1
https://sourceforge.net/project/showfiles.php?group_id=116092&package_id=126042
installed by the manual: (here) http://www.plog4u.org/index.php/Using_PHPEclipse
hed
PHP Eclipse vs. PDT
לידיעתכם, PHP Eclipse ו- PDT זה לא אותו הדבר. מדובר בשני פרוייקטים מקבילים כאשר ההערכה (שלי לפחות) היא ש PDT הוא היחידי שישאר. מה לעשות, אותו מגבה חברה מסחרית (ZEND) שמשקיעה בו משאבים.
PHP eclipse הוא הוותיק יותר ו- PDT (לשעבר PHP IDE, ככה לבלבל אותכם עוד יותר...) הוא החדש, אבל מתקדם יותר מהר מהוותיק. לדעתי אין טעם להתחיל עם הוותיק אלא ישר עם הצעיר והחזק יותר, שד"א, לכל מי "שמודאג", הוא פרוייקט קוד פתוח לכל דבר ועניין, חלק מפרוייקט Eclipse הכללי. פשוט זנד החליטו להריץ אותו, כפרוייקט קוד פתוח, מהסיבות שלהם.
יש כאן איזה פוסט על השוואה בין השניים:
http://divby0.blogspot.com/2007/07/phpeclipse-vs-pdt.html
http://divby0.blogspot.com/2007/08/phpeclipse-vs-pdt-part-2.html
בועז
PHP Therapist
לינווייט - תשתיות תוכן קהילתיות
בועז
PDT status
I understand this whole thread has spone off a presentation you gave. So i'll probably will ask questions already been answered.
But does the PDT project enables PHP debugging?
and is it free, or is it in paid extensions?
+ is it stable and working now?
because i havn't tried PDT (when i started it wasn't yet available)
But i read this in the PHPEclipse forume:
http://pooteeweet.org/blog/348
which made me somewhat suspicious.
hed
עברית!
עברית חבר'ה, אלא אם כן ממש אי אפשר אחרת.
תודה.
בועז
משהו פה השתבש לגמרי - "מי הזיז את התגובה שלי"?
מישהו ערך את התגובה האחרונה שלי - אני עניתי ל hed ולא כמו שנראה כאן כאילו אני הערתי בנושא העברית.
דוגמא מצויינת ל- "למה לא כדאי לעבוד כ- root במערכות יוניקס" וגם ל- "למה כדאי מאוד להזהר כאשר עורכים פוסטים כאדמיניסטרטור בדרופל"...
בועז (האמיתי) :)
בועז
PHP Therapist
לינווייט - תשתיות תוכן קהילתיות
בועז
ומה הייתה
ומה הייתה התשובה שניתנה?
ראיתי שההתקנה של PDT לא כוללת דיבאגר?!
"PDT doesn't come with any bundled debugger but you can download Zend Debugger from Zend.com or XDebug from bugzilla."
אתה חושב שאני זוכר? :-)
אענה מה שאני יכול עכשיו:
PDT אכן מאפשר דיבוג של PHP. כדי לדבג על הסרבר, תמיד, צריך איזה רכיב שמתלבש עליו שם. זה עד כמה שאני יודע תמיד זה PHP extension. האפליקציה PDT זה בכלל בצד של סביבת הפיתוח, לא בסרבר. לא יצא לי לדבג עם PDT אז לא יודע את הפרטים של התקנת הרכיב הזה ועבודה מולו, אבל אני בטוח שיש לא מעט חומר בנושא ברשת ובאתרים הרלוונטיים.
PDT והרכיב שעובד מולו בצד של השרת הינם פרוייקטי קוד פתוח. זה אומר שהם חינמיים וניתנים לשינוי - כל מה שאתה מכיר על "קוד פתוח".
אני יודע שהדיבוג עם PDT אפשרי ועובד וגם לא חזק כמו כלים מסחריים של זנד - Zend Studio וה- extension לדיבוג שלו.
בקשר לתגובה להודעה המקורית, צריך גם להבין שזנד היא חברה מסחרית שמונעת משיקולים בהתאם. אמור להיות הגיון מסחרי בהתנהלות של זנד בדחיפה שלה את סביבת PDT ורכיב הדיבוג.
שוב, ככל הידוע לי מבחינת סביבות פיתוח "חופשיות" PDT הוא בין המובילים שבהם, אם לא המוביל מבחינת הכוח והיכולות שלו (עם הדיבוג).
בועז
PHP Therapist
לינווייט - תשתיות תוכן קהילתיות
בועז
מיני מדריך לדיבוג דרופל על PDT + xDebug
שלום לכולם,
לאחרונה פירסמתי פוסט מדריך לדיבוג של פרוייקט PHP בעזרת PDT ו- xDebug.
למתעניינים:
http://www.rymland.org/en/blogs/boaz/5_mar_08/using-pdt-xdebug-for-debug...
בועז.
בועז
בעניין: מיני מדריך לדיבוג דרופל על PDT + xDebug
http://drupal.org/node/147267#comment-636140
אמתי -- חברת גיזרה
חפש את המטמון
שלום בועז, ניסיתי לגשת למדריך שלך וקיבלתי access denied. למזלי מצאתי אותו במטמון של גוגל.
אמנון-מאיר לבב - ייעוץ משולב - סוף מעשה באפיון תחילה!
אפיון מיזמי אינטרנט, ליווי פרוייקטים בדרופל וייעוץ רב-תחומי
כן, היתה שם איזו בעיה
תודה אמנון, אכן היתה בעיה (שעדיין לא ברורה לי עד הסוף). בכל מקרה עכשיו יש גישה לפוסט.
בועז
שלי יותר גדול!!!
כן, לא חסרים מדריכים היום באינטרנט לנושא. יחד עם זה, שלי יחסית מפורט ועם screenshot בעצת המומחים. כמובן, כל פידבק מתקבל בברכה כדי לשפר אותו
בועז
לכל מי שמדבג עם ECLIPSE
מישהו יכול להמליץ על מדריך לדיבוג עם ECLIPSE ו WAMP
כמתכנת ותיק שרגיל לדיבאגר המרהיב של ויזואל סטודיו אני פשוט נדהם לראות את רמת המורכבות והסיבוכיות בבואי לדבג קוד ב PHP.
מה עלי לעשות כדי שסוף סוף לא אצטרך לבסס את הדיבאגינג על print_r
!!!!
HELP
ציטוט: מה עלי
מה עלי לעשות כדי שסוף סוף לא אצטרך לבסס את הדיבאגינג על print_r
לכתוב בלי שגיאות זו אפשרות :)
אתה יכול לדבג בדיוק כפי שהומלץ כאן למעלה
בעזרת המדריך שאני כתבתי, או מדריכים אחרים שקיימים שם בחוץ.
המורכבות שאתה מרגיש לדעתי לא קשורה ל- PHP ספציפית אלא לדיבוג בסביבת ווב שהיא סביבת שרת-לקוח מטבעה, והעובדה הנוספת שה"אפליקציה שלך לא רצה בתוך הדפדפן. בקיצור, יש פה לא מעט חלקים נעים בדיבוג וובי שכזה (שאני לא בטוח שנתקלת בכזה מצב בדיבוג של אפליקציה שכתובה ב-C למשל) וזה אכן יותר מורכב.
קח את הזמן, תקרא מדריך נורמלי לנושא, ותשאל שאלות ספציפיות אם וכשיגיעו - זו עצתי.
בועז
כיצד לבצע debugging באמצעות eclipse
לאחרונה כתבתי ספר ללימוד PHP בעברית. ניתן להוריד את הספר בחינם וכמו כן לצפות במגוון וידאו קליפים (בעברית) שמסבירים נושאים שונים בשפה באתר www.phpbook.co.il
אחד הוידאו קליפים שהעלתי לאתר www.phpbook.co.il מסביר כיצד להשתמש בeclipse כדי לבצע debugging לתכניות שאתה כותב ב-php.
ניתן לתרגל וכמו כן ללמוד נושאים מתקדמים ב-PHP באמצעות הקורסים שאני מפתח לשימוש אישי ואקדמי בחינם באתר www.abelski.co.il
הקורסים באתר זה באנגלית.
בהצלחה לכולם!
חיים.