Astarno
How to use the dbg tracer in Elixir
I’m trying to use the dbg tracer from Erlang in Elixir. At the moment I have the following line:
:dbg.tracer(process, fn (msg, _) -> IO.puts("DEBUG: #{msg}") end)
This raises the error:
** (CompileError) iex:1: undefined function process/0
(stdlib 3.16.1) lists.erl:1358: :lists.mapfoldl/3
Any help with this would be appreciated. I’m myself pretty new to Elixir and Erlang, so it’s very possible it’s something very simple that I’m doing wrong.
Kind regards!
Marked As Solved
John-Goff
From looking at the docs it appears as though that function does not take a two-arity function as its second argument. It should either be a zero-arity function, or a tuple with a two-arity function and the initial data for that function. This is the Erlang type syntax which specifies this:
Data = PortGenerator | HandlerSpec | ModuleSpec
PortGenerator = fun() (no arguments)
Error = term()
HandlerSpec = {HandlerFun, InitialData}
HandlerFun = fun() (two arguments)
ModuleSpec = fun() (no arguments) |{TracerModule, TracerState}
TracerModule = atom()
InitialData = TracerState = term()
Also Liked
RudManusachi
The first argument of :dbg.tracer/2 is type which is one of the atoms :port | :process | :module.
You probably got that example mixed from some source in Erlang. process in Erlang is an atom. So the equivalent in elixir would be :process
:dbg.tracer(:process, fn (msg, _) -> IO.puts("DEBUG: #{msg}") end)
LostKobrakai
I usually suggest GitHub - redink/extrace: Elixir wrapper for Recon Trace., which translates quite well from and to erlang.








