Elixir:
Usando um depurador

Como usar:

O Elixir vem com um depurador gráfico embutido chamado :debugger. Para usá-lo, você precisará iniciá-lo e anexá-lo ao seu processo em execução.

Primeiro, garanta que você tenha :debugger iniciado dentro de uma sessão iex:

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

Agora, interprete o módulo de código que você deseja depurar:

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

Você pode definir um ponto de interrupção:

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

E então, execute sua função para alcançar o ponto de interrupção e percorrer seu código:

iex> MyApp.MyModule.my_function(arg1, arg2)
# O depurador pausará a execução na linha com o ponto de interrupção

Aprofundando

Antes do :debugger de Elixir, o Erlang forneceu o depurador que o Elixir usa; ele é robusto e excelente no manejo de processos concorrentes, um ponto forte da VM do Erlang (BEAM). Diferente de alguns outros depuradores, o :debugger não permite a modificação de variáveis on the fly, devido à natureza imutável dos dados em Elixir. Quanto às alternativas, você tem o IEx.pry que permite pausar a execução e pular para um REPL em qualquer ponto do seu código, o que pode ser extremamente útil.

Enquanto o :debugger é bom para uma interface gráfica, alguns podem preferir a ferramenta embutida :observer que também oferece inspeção de processos e métricas do sistema, embora não seja especificamente direcionada para percorrer o código. A comunidade do Elixir também contribui com ferramentas como visualixir e rexbug, expandindo o ecossistema de ferramentas de depuração além dos padrões.

Veja Também