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