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
, розширюючи екосистему інструментів для дебагу за межами стандартних.
Дивіться також
- Офіційний початковий посібник Elixir по налагодженню: https://elixir-lang.org/getting-started/debugging.html
- Документація дебагера Erlang
:debugger
: http://erlang.org/doc/apps/debugger/debugger_chapter.html - Дискусії на форумі Elixir про техніки налагодження: https://elixirforum.com/c/elixir-questions/elixir-questions-questions-help/15