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, розширюючи екосистему інструментів для дебагу за межами стандартних.

Дивіться також