Elixir:
Usando un depurador
Cómo hacerlo:
Elixir viene con un depurador gráfico incorporado llamado :debugger. Para usarlo, necesitarás iniciarlo y adjuntarlo a tu proceso en ejecución.
Primero, asegúrate de haber iniciado :debugger dentro de una sesión de iex:
iex> :debugger.start()
{:ok, #PID<0.108.0>}Ahora, interpreta el módulo de código que deseas depurar:
iex> :int.ni(MyApp.MyModule)
{:module, MyApp.MyModule}Puedes establecer un punto de interrupción:
iex> :int.break(MyApp.MyModule, número_de_línea)
:okY luego, ejecuta tu función para alcanzar el punto de interrupción y avanzar a través de tu código:
iex> MyApp.MyModule.mi_función(arg1, arg2)
# El depurador pausará la ejecución en la línea con el punto de interrupciónEstudio Profundo
Antes del :debugger de Elixir, Erlang proporcionó el depurador que usa Elixir; es robusto y excelente en el manejo de procesos concurrentes, un punto fuerte de la VM de Erlang (BEAM). A diferencia de algunos otros depuradores, :debugger no permite la modificación de variables al vuelo, debido a la naturaleza inmutable de los datos en Elixir. En cuanto a alternativas, tienes IEx.pry que te permite pausar la ejecución y saltar a un REPL en cualquier punto de tu código, lo que puede ser muy útil.
Mientras que :debugger es bueno para una interfaz gráfica, algunos podrían preferir la herramienta incorporada :observer que también ofrece inspección de procesos y métricas del sistema, aunque no está específicamente dirigida a avanzar a través del código. La comunidad de Elixir también contribuye con herramientas como visualixir y rexbug, expandiendo el ecosistema de herramientas de depuración más allá de las predeterminadas.
Ver También
- Guía Oficial para Empezar con Elixir sobre Depuración: https://elixir-lang.org/getting-started/debugging.html
- Documentación de
:debuggerde Erlang: http://erlang.org/doc/apps/debugger/debugger_chapter.html - Discusiones en el Foro de Elixir sobre Técnicas de Depuración: https://elixirforum.com/c/elixir-questions/elixir-questions-questions-help/15