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)
:okE 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çãoAprofundando
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
- Guia Oficial de Início Rápido do Elixir sobre Depuração: https://elixir-lang.org/getting-started/debugging.html
- Documentação do
:debuggerdo Erlang: http://erlang.org/doc/apps/debugger/debugger_chapter.html - Discussões no Fórum de Elixir sobre Técnicas de Depuração: https://elixirforum.com/c/elixir-questions/elixir-questions-questions-help/15