Elixir:
Einsatz eines Debuggers

Wie geht das:

Elixir wird mit einem integrierten grafischen Debugger namens :debugger geliefert. Um ihn zu nutzen, müssen Sie ihn starten und sich an Ihren laufenden Prozess anhängen.

Zuerst stellen Sie sicher, dass :debugger in einer iex-Sitzung gestartet ist:

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

Jetzt interpretieren Sie das Code-Modul, das Sie debuggen möchten:

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

Sie können einen Haltepunkt setzen:

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

Und dann führen Sie Ihre Funktion aus, um den Haltepunkt zu erreichen und durch Ihren Code zu gehen:

iex> MyApp.MyModule.meine_funktion(arg1, arg2)
# Debugger wird die Ausführung an der Zeile mit dem Haltepunkt pausieren

Vertiefung

Vor Elixirs :debugger bot Erlang den Debugger, den Elixir nutzt; er ist robust und sehr gut im Umgang mit parallelen Prozessen geeignet, eine Stärke der Erlang VM (BEAM). Im Gegensatz zu einigen anderen Debuggern erlaubt :debugger keine Modifikation von Variablen im laufenden Betrieb, aufgrund der unveränderlichen Natur von Daten in Elixir. Als Alternativen gibt es IEx.pry, das es Ihnen erlaubt, die Ausführung zu pausieren und an jedem Punkt in Ihrem Code in eine REPL zu springen, was sehr praktisch sein kann.

Während :debugger gut für eine grafische Oberfläche ist, bevorzugen einige vielleicht das eingebaute Werkzeug :observer, das auch Prozessinspektion und Systemmetriken bietet, allerdings nicht speziell darauf ausgerichtet ist, durch den Code zu gehen. Die Elixir-Community trägt außerdem Werkzeuge wie visualixir und rexbug bei, die das Ökosystem der Debugging-Tools über die Standardauswahl hinaus erweitern.

Siehe auch