Python נקודת שבירה()

breakpoint() ב-Python

הפונקציה breakpoint() ב-Python היא פונקציה מובנית חדשה שהוצגה ב-Python 3.7. בדיבאג של קוד Python תמיד היה תהליך מכאיב בגלל הקשר הצמוד בין הקוד המקורי וקוד המודול המסייע בדיבאג. לדוגמה, אם אתה משתמש בדיבאגר pdb, אז עליך לקרוא ל-pdb.set_trace() בקוד התוכנית שלך. אם ברצונך להשתמש בדיבאגר אחר, לכמוב web-pdb, אז עליך להסיר את כל הקוד הקשור ל-PDB ולהוסיף את השורה web_pdb.set_trace(). זה יכול לגרום לעומס גדול בשימוש בדיבאגר של Python ולהקשות על דיבאג ותחזוקת קוד Python. זה הסיבה שבגרסה 3.7 של Python הוזן breakpoint(), שמאפשרת לנו לכתוב קוד דיבאגינג לא מקושר כהלכה.

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

breakpoint() ב-Python קוראת לפונקציה sys.breakpointhook(). כברירת מחדל, sys.breakpointhook() קוראת לפונקציה pdb.set_trace(). לכן, לפחות בצורה הבסיסית, שימוש ב-breakpoint() נותן נוחות בשימוש בדיבאגר כי אנו אינו צריכים לייבא באופן ברור את מודול pdb. בואו נסתכל על דוגמה פשוטה של שימוש בפונקציה breakpoint(). יש לנו סקריפט Python בשם python_breakpoint_examples.py עם הקוד הבא.

$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$

פייתון breakpoint() – עצירת ניפוי שגיאות

פונקציית sys.breakpointhook() בפייתון משתמשת במשתנה סביבה PYTHONBREAKPOINT כדי להגדיר את הניפוי של התקלות. אם המשתנה אינו מוגדר, הדיבאגר PDB המוגדר כברירת מחדל יישמש. אם המשתנה מוגדר כ"0", אז הפונקציה תחזיר מיידית ולא יתבצע ניפוי שגיאות בקוד. זה מאוד מועיל כאשר נרצה להריץ את הקוד שלנו בלי ניפוי שגיאות.

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

פייתון breakpoint() – שינוי מודול ניפוי שגיאות

אנו יכולים להשתמש במשתנה סביבה PYTHONBREAKPOINT כדי לספק את שיטת הניפוי המבוקשת להיות קוראת על ידי פונקציית breakpoint(). זה מאוד מועיל מכיוון שניתן לשנות בקלות את מודול הניפוי ללא כל שינוי בקוד. נניח שנרצה להשתמש בניפוי של web-pdb. נוכל לקשר אותו בקלות לתוכנית שלנו באמצעות PYTHONBREAKPOINT=web_pdb.set_trace. תחילה, ודאו ש-web-pdb מותקן. ניתן להתקין אותו באמצעות הפקודה pip3.7 install web-pdb.

לפי תיעוד ה-web-pdb, הוא תואם את פונקציית ה-nbreakpoint() החדשה שנוספה בפייתון 3.7.

$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...

פתח את כתובת ה-URL שמופיעה בקונסולה ותראה את חלון האיתור הכמו בתמונה למטה. ניתן להשתמש בממשק זה כדי להנפיק פקודות PDB, תוכל לשלוח את הפקודה "c" כדי להמשיך ולהשלים את התוכנית שלנו.

סיכום

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

תוכל לבדוק דוגמאות נוספות בפייתון ב-מאגר הקוד שלנו ב-GitHub.

הפניה: תיעוד רשמי

Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint