OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

מעקב

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

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



הד "מתכונן למחיקת קבצים" >&2

if [[ -d $dir_name ]]; אז אם cd $dir_name; לאחר מכן

הד "מחיקת קבצים" >&2

rm *

אחר

echo "cannot cd to '$dir_name'" >&2 יציאה 1

פי אחר

echo "אין ספרייה כזו: '$dir_name'" >&2 יציאה 1

fi

הד "מחיקת הקובץ הושלמה" >&2

הד "מתכונן למחיקת קבצים" >&2

if [[ -d $dir_name ]]; אז אם cd $dir_name; לאחר מכן

הד "מחיקת קבצים" >&2

rm *

אחר

echo "cannot cd to '$dir_name'" >&2 יציאה 1

פי אחר

echo "אין ספרייה כזו: '$dir_name'" >&2 יציאה 1

fi

הד "מחיקת הקובץ הושלמה" >&2


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

כעת כאשר הסקריפט מבוצע, ניתן לראות שמחיקת הקובץ בוצעה:



[me@linuxbox ~]$ מחיקה מתכונן למחיקת קבצים מוחק קבצים

מחיקת הקובץ הושלמה [me@linuxbox ~]$

[me@linuxbox ~]$ מחיקה מתכונן למחיקת קבצים מוחק קבצים

מחיקת הקובץ הושלמה [me@linuxbox ~]$


bash מספקת גם שיטת מעקב, המיושמת על ידי אפשרות -x והפקודה set עם אפשרות -x. באמצעות סקריפט הבעיות הקודם שלנו, אנו יכולים להפעיל מעקב עבור הסקריפט כולו על ידי הוספת האפשרות -x לשורה הראשונה:


#!/bin/bash -x

#!/bin/bash -x

Debugging


# בעיה: סקריפט להדגמת שגיאות נפוצות מספר=1

if [$number = 1]; לאחר מכן

echo "מספר שווה ל-1." אַחֵר

echo "המספר אינו שווה ל-1."

fi

# בעיה: סקריפט להדגמת שגיאות נפוצות מספר=1

if [$number = 1]; לאחר מכן

echo "מספר שווה ל-1." אַחֵר

echo "המספר אינו שווה ל-1."

fi


לאחר ביצוע, התוצאות נראות כך:



[me@linuxbox ~]$ צרה

+ מספר=1

+ '[' 1 = 1 ']'

+ הד 'מספר שווה ל-1.' המספר שווה ל-1.

[me@linuxbox ~]$ צרה

+ מספר=1

+ '[' 1 = 1 ']'

+ הד 'מספר שווה ל-1.' המספר שווה ל-1.


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



[me@linuxbox ~]$ ייצוא PS4='$LINENO + '

[me@linuxbox ~]$ צרה

5 + מספר=1

7 + '[' 1 = 1 ']'

8 + הד 'המספר שווה ל-1'. המספר שווה ל-1.

[me@linuxbox ~]$ ייצוא PS4='$LINENO + '

[me@linuxbox ~]$ צרה

5 + מספר=1

7 + '[' 1 = 1 ']'

8 + הד 'המספר שווה ל-1'. המספר שווה ל-1.


כדי לבצע מעקב על חלק נבחר של הסקריפט, ולא על התסריט כולו, נוכל להשתמש ב- סט פקודה עם -x אפשרות:


#! / bin / bash

# בעיה: סקריפט להדגמת שגיאות נפוצות מספר=1

#! / bin / bash

# בעיה: סקריפט להדגמת שגיאות נפוצות מספר=1



set -x # הפעל מעקב

if [$number = 1]; לאחר מכן

echo "מספר שווה ל-1." אַחֵר

echo "המספר אינו שווה ל-1."

fi

set +x # כבה את המעקב


set -x # הפעל מעקב

if [$number = 1]; לאחר מכן

echo "מספר שווה ל-1." אַחֵר

echo "המספר אינו שווה ל-1."

fi

set +x # כבה את המעקב


אנו משתמשים סט פקודה עם -x אפשרות להפעלת מעקב וה- +x אפשרות לביטול מעקב. ניתן להשתמש בטכניקה זו כדי לבחון חלקים מרובים של סקריפט בעייתי.


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: