Elixir:
Utilizzo di un debugger

Come fare:

Elixir viene fornito con un debugger grafico integrato chiamato :debugger. Per usarlo, è necessario avviarlo e collegarsi al processo in esecuzione.

Prima di tutto, assicurati di avere :debugger avviato all’interno di una sessione iex:

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

Ora, interpreta il modulo di codice che vuoi eseguire il debug:

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

Puoi impostare un punto di interruzione:

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

E poi, esegui la tua funzione per raggiungere il punto di interruzione e procedere passo passo con il tuo codice:

iex> MyApp.MyModule.my_function(arg1, arg2)
# Il debugger interromperà l'esecuzione alla riga con il punto di interruzione

Approfondimento

Prima del :debugger di Elixir, Erlang forniva il debugger utilizzato da Elixir; è robusto e ottimo nel gestire processi concorrenti, uno dei punti di forza della VM di Erlang (BEAM). A differenza di alcuni altri debugger, :debugger non consente la modifica delle variabili al volo, a causa della natura immutabile dei dati in Elixir. Per quanto riguarda le alternative, esiste IEx.pry che consente di mettere in pausa l’esecuzione e saltare in un REPL in qualsiasi punto del codice, il che può essere estremamente utile.

Mentre :debugger è buono per un’interfaccia grafica, alcuni potrebbero preferire lo strumento integrato :observer che offre anche l’ispezione dei processi e metriche di sistema, anche se non specificamente indirizzato al passo passo attraverso il codice. La comunità di Elixir contribuisce anche con strumenti come visualixir e rexbug, espandendo l’ecosistema degli strumenti di debug oltre le opzioni predefinite.

Vedi anche