Elixir:
Een debugger gebruiken

Hoe te:

Elixir wordt geleverd met een ingebouwde grafische debugger genaamd :debugger. Om het te gebruiken, moet je het starten en koppelen aan je lopend proces.

Zorg er eerst voor dat je :debugger hebt gestart binnen een iex-sessie:

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

Interpreteer nu de code module die je wilt debuggen:

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

Je kunt een breakpoint instellen:

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

En dan, voer je functie uit om de breakpoint te bereiken en door je code te stappen:

iex> MyApp.MyModule.my_function(arg1, arg2)
# Debugger zal de uitvoering pauzeren op de regel met de breakpoint

Diepgaande Duik

Voordat Elixir’s :debugger er was, voorzag Erlang de debugger die Elixir gebruikt; het is robuust en geweldig in het omgaan met gelijktijdige processen, een sterk punt van Erlang VM (BEAM). In tegenstelling tot sommige andere debuggers, staat :debugger geen wijziging van variabelen on the fly toe, vanwege de onveranderlijke aard van data in Elixir. Wat betreft alternatieven, heb je IEx.pry dat je toelaat om de uitvoering te pauzeren en op elk punt in je code in een REPL te springen, wat super handig kan zijn.

Hoewel :debugger goed is voor een grafische interface, geven sommigen de voorkeur aan het ingebouwde :observer-hulpmiddel dat ook procesinspectie en systeemmetrieken biedt, zij het niet specifiek gericht op het stapsgewijs doorlopen van code. De gemeenschap van Elixir draagt ook bij aan hulpmiddelen zoals visualixir en rexbug, waardoor het ecosysteem van debuggereedschappen wordt uitgebreid voorbij de standaardopties.

Zie Ook