איתור בעיות- דיבג



שתפו את הפוסט

כשאנחנו כותבים קוד נעשה טעויות אם נרצה ואם לא. כדי להקל עלינו את העבודה php כוללת בתוכה אפשרויות שונות להצביע על שגיאות כך שנוכל לזהותם מיד ולתקנם.

בשלב הראשון צריך להודיע שאנחנו רוצים לצפות בשגיאות השונות, וכדי לעשות זאת נכתוב כך בתחילת הקוד:

ini_set('display_errors','on');
error_reporting(E_ALL);


 

כמובן שחשוב שדיווח השגיאות יהא "דלוק" רק כשמפתחים ולא באתר שגולשים מבקרים בו כרגע.

בנוסף יש לשים לב לכך שהגדרתי כרגע שאני רוצה לרות שגיאות מרמות שונות או סוגים שונים. עתה אנו יכולים לבדוק שגיאות שונות ולראות מה קורה בהם:

שגיאות תחביר:

שגיאות כאלה נוצרות לרוב מזה שפספסנו משהו בכתיבה כגון ; בסוף משפט:

$text = 'i am without a close to the statment'
print $text;

 

בסוף הסטרינג (המשפט) "שכחתי" לשים את הנקודה-פסיק.

והשגיאה שנקבל היא:

Parse error: syntax error, unexpected T_PRINT in C:xampphtdocssitedebug.php on line 12

הודעת השגיאה אומרת לי איזה סוג של שגיאה התרחשה ובאיזו שורה. טיפ: הבעיה היא כנראה בשורה שלפני השורה המצויינת משום ששם התרחשה ההתקעות.

שגיאות אזהרה:

שגיאות מסוג זה לא מפסיקות את פעולת הרינדור אבל היא עדיין שגיאה חשובה.

המקרים הרווחים שבהם נתקל בה הם: כש"headers alreadt sent". ואז חשוב לבדוק רווחים לבנים העוטפים את הקוד שלנו. או במקרה שלא העברנו מספיק ארגומנטים לפונקציה.

ניישם על אפשרות זו:

function we($name,$age)
{
	print $name . ':' . $age;	
}

we('ron');

 

לפונקציה זו שלחנו רק ארגומנט אחד ולא שניים כפי שהיא דורשת. והודעת השגיאה היא:

Warning: Missing argument 2 for we(), called in C:xampphtdocssitedebug.php on line 22 and defined in C:xampphtdocssitedebug.php on line 17

גם אומרים לנו מה קרה, מתי קוראים לפונקציה והיכן הפונקציה מוגדרת. אנחנו יודעים שבשורה 22 התרחשה השגיאה, ושחסר לנו ארגומנט אחד (במקרה זה הגיל).

שגיאות notices:

שגיאות לא חמורות שלא יעצרו את פעולת הסקריפט. מתרחשות למשל כשמשתנה לא הוגדר:

print $myvar;;

 

מאחר ומשתנה זה לא הוגדר נקבל את הודעת השגיאה הבאה:

Notice: Undefined variable: myvar in C:xampphtdocssitedebug.php on line 30

אני חושב שמאד ברור מה קרה ומה צריך לעשות, אז לא נתעמק בזה.

שגיאות חמורות:

שגיאות אלה הן קריטיות ויפסיקו את פעולת הקוד. דוגמא לכך היא קריאה לפונקציה שאינה קיימת:

myfunc('does not exists');

 

ההודעה תהא בהתאם:

Fatal error: Call to undefined function myfunc() in C:xampphtdocssitedebug.php on line 34

שוב ההודעה ברורה מאד ופשוטה לתיקון.

בתחילת המדריך ביקשתי לראות את כל סוגי השגיאות או כל רמות השגיאה ולכן ציינתי E_ALL. אבל php מאפשרת לנו לבחור אילו סוגים נראה ואילו לא נראה וגם לשלב כמה רמות.

יכולתי להשתמש למשל ב:

error_reporting(E_ALL | E_STRICT);

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

 

כפי שניתן לראות ניתן לבחור ולשלב בין דרגות שונות של אזהרות.

כמובן שהודעות השגיאה נחוצות לנו בשלבי בניית האפליקציה אבל גם לאחר שהאפליקציה הושלמה מתרחשות בעיות ולכן לכבות פונקציה שלפי דרגות השגיאה תעשה דברים שונים.

למשל ניתן לעשות היגד switch שבקייס FATAL הודעת השגיאה תישלח למנהל האתר. או מה שתרצו, זה כבר נתון להעדפות השונות שלנו.



שתפו את הפוסט

אולי יעניין אתכם לקרוא גם:


כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

אתר זה עושה שימוש באקיזמט למניעת הודעות זבל. לחצו כאן כדי ללמוד איך נתוני התגובה שלכם מעובדים.