Elixir:
Korzystanie z debugera

Jak to zrobić:

Elixir jest dostarczany z wbudowanym graficznym debuggerem o nazwie :debugger. Aby go użyć, musisz go uruchomić i dołączyć do działającego procesu.

Najpierw upewnij się, że :debugger jest uruchomiony w sesji iex:

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

Teraz zinterpretuj moduł kodu, który chcesz debugować:

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

Możesz ustawić punkt przerwania:

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

A następnie, uruchom swoją funkcję aby trafić na punkt przerwania i przejść przez swój kod:

iex> MyApp.MyModule.my_function(arg1, arg2)
# Debugger zatrzyma wykonanie w linii z punktem przerwania

Pogłębiona analiza

Przed :debuggerem Elixira, Erlang dostarczył debugger, którego Elixir używa; jest on solidny i świetnie radzi sobie z jednoczesnymi procesami, co jest mocną stroną Erlang VM (BEAM). W przeciwieństwie do niektórych innych debuggerów, :debugger nie pozwala na modyfikację zmiennych “w locie”, ze względu na niezmienność danych w Elixirze. Jeśli chodzi o alternatywy, masz IEx.pry, który pozwala zatrzymać wykonanie i wskoczyć do REPL w dowolnym miejscu w kodzie, co może być bardzo przydatne.

Choć :debugger jest dobry do graficznego interfejsu, niektórzy mogą preferować wbudowane narzędzie :observer, które również oferuje inspekcję procesów i metryki systemowe, chociaż nie jest specjalnie przeznaczone do przestępowania przez kod. Społeczność Elixira również przyczynia się narzędziami takimi jak visualixir i rexbug, rozszerzając ekosystem narzędzi debugowania poza domyślne opcje.

Zobacz także