הודעות אבחון#
כאשר תוכנית משתבשת, Perl מודיע לך על כך. חלק מהודעות האבחון עוצרות את התוכנית (שגיאות קטלניות מסוג die); אחרות מדפיסות שורה אל STDERR ומאפשרות לה להמשיך לרוץ (אזהרות). מקור זה מפרט את הודעות האבחון ש־PetaPerl פולט, מקובצות לפי מקורן, עם הסיבה והתיקון לכל אחת.
כל ערך מציג את ההודעה כלשונה בתוך code span - הטקסט המדויק שהמפרש מדפיס, עם ה־placeholders (%s, %d, משתנה בעל שם) מוצגים באופן שבו הם מופיעים בפלט. חפשו בעמוד זה את המילים המילוליות שראיתם ב־STDERR ותגיעו אל הערך המתאים.
קריאת ערך#
כל ערך נפתח בטקסט ההודעה, לאחר מכן תג סיווג קצר בסוגריים, ולאחר מכן הסיבה והתיקון:
`Illegal division by zero`(F) חילקת באפס. הגן על המחלק.
התג עוקב אחר אותו קוד אות ש־Perl השתמש בו מאז ומתמיד:
קוד | משמעות |
|---|---|
W | אזהרה - מודפסת רק כאשר אזהרות מופעלות. אופציונלית מוגבלת לקטגוריה (מוצגת כ־ |
D | הוצאה משימוש - אזהרה שתכונה בדרכה החוצה. |
S | אזהרה חמורה - מופעלת כברירת מחדל, אך עדיין רק אזהרה. |
F | שגיאה קטלנית - התוכנית מתה אלא אם השגיאה נלכדת ( |
P | שגיאה פנימית (panic) - לעולם לא אמורה להגיע אל משתמש. אם אתה רואה אחת כזו, זהו באג ב־pperl. |
X | שגיאה קטלנית מאוד - התוכנית יוצאת מיד. |
A | שגיאה זרה - מופקת על ידי משהו אחר מלבד Perl עצמו. |
הפעלה והשתקה של אזהרות#
אזהרות (המחלקות W, D, ו־S) נשלטות על ידי הפרגמה warnings. בלעדיה, רק האזהרות החמורות (S) מודפסות:
use warnings; # turn on every warning
no warnings; # turn them all off (lexically)
no warnings 'uninitialized'; # turn off one category
use warnings FATAL => 'all'; # promote warnings to fatal errors
הקטגוריה הנקובה בתג (W category) היא המחרוזת שמעבירים אל no warnings כדי להשתיק רק את הודעת האבחון הזו. מטפל $SIG{__WARN__} יחיד יכול ליירט כל אזהרה בזמן ריצה; $SIG{__DIE__} עושה את אותו הדבר עבור שגיאות קטלניות. ראו %SIG.
הערה על ניידוּת#
PetaPerl פועל רק על Linux ואינו כולל שכבת XS. משפחות הודעות האבחון התלויות בפלטפורמה שׁ־perl נייד נושא - קודי סטטוס של VMS, טקסט GetLastError של Win32, הודעות ”unimplemented on this architecture“, כשלי XS-loader - לכן אינן עולות כאן. במקום שבו Perl המקורי מתעד הודעת אבחון שעולה רק במערכת הפעלה אחרת או דרך XS, PetaPerl פשוט לעולם אינו פולט אותה.
הודעות האבחון#
שגיאות קטלניות כלליות - פתרון מתודות, הפניות, אריתמטיקה, האשים מוגבלים, מטפלי קובץ, ושאר ה־
dieים בזמן ריצה שאינם ייחודיים ל־regex או למפענח.שגיאות הידור של regex - כל מה שמהדר התבניות דוחה, מ־
Unmatched )ועד\g,\N,\o, ומבני(?...)פגומים.שגיאות תחביר בזמן הידור - שגיאות שהמפענח ומחולל הקוד מעלים לפני שהתוכנית רצה.
אזהרות - הודעות האבחון הלא־קטלניות: רקורסיה עמוקה, תווים רחבים, מבנים חסרי תועלת.
שגיאות ערך וטיפוס - הודעות אבחון על מה שערך הוא ומה שאינו: לא הפניה, לא הפניית קוד, חלוקה באפס, גישה להאש מוגבל.
שגיאות פנימיות - ה־panicים שמסמנים באג ב־pperl עצמו.
הודעות אבחון ייחודיות ל־pperl - הודעות ש־PetaPerl פולט שאין להן מקבילה ב־Perl המקורי.