Elixir:
שימוש במנפה שגיאות

איך לעשות זאת:

Elixir מגיע עם דיבאגר גרפי מובנה בשם :debugger. כדי להשתמש בו, תצטרך להפעיל אותו ולהתחבר לתהליך הרץ שלך.

ראשית, הבטח ש-:debugger מופעל בתוך סשן iex:

iex> :debugger.start()
{:ok, #PID<0.108.0>}

עכשיו, פרש את המודול שברצונך לבצע עליו דיבג:

iex> :int.ni(MyApp.MyModule)
{:module, MyApp.MyModule}

אתה יכול להגדיר נקודת עצירה:

iex> :int.break(MyApp.MyModule, line_number)
:ok

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

iex> MyApp.MyModule.my_function(arg1, arg2)
# הדיבאגר יעצור את הביצוע בשורה עם נקודת העצירה

צלילה עמוקה

לפני :debugger של Elixir, Erlang סיפקה את הדיבאגר ש-Elixir משתמשת בו; הוא עמיד ומצוין בטיפול בתהליכים מקבילים, נקודת חוזק של מכונת Erlang VM (BEAM). בניגוד לדיבאגרים אחרים, :debugger לא מאפשר שינוי של משתנים במהלך הריצה, בשל הטבע האימוטבלי של הנתונים ב-Elixir. כחלופות, יש לך את IEx.pry שמאפשר לך לעצור ביצוע ולקפוץ ל-REPL בכל נקודה בקוד שלך, שיכול להיות מאוד שימושי.

בעוד ש-:debugger טוב לממשק גרפי, יש כאלו שיעדיפו את הכלי המובנה :observer שגם הוא מציע בדיקת תהליכים ומדדי מערכת, אף על פי שלא ממוקד במיוחד בשלבים דרך הקוד. קהילת Elixir גם תורמת כלים כמו visualixir ו-rexbug, המרחיבה את האקוסיסטם של כלי דיבוג מעבר לברירות המחדל.

ראה גם