** (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.
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
This works, I was indeed confused by the documentation (which is for Erlang). It raises another error though:
iex(1)> :dbg.tracer(:process, fn (msg, _) -> IO.puts("DEBUG: #{msg}") end)
** (FunctionClauseError) no function clause matching in :dbg.tracer/2
The following arguments were given to :dbg.tracer/2:
# 1
:process
# 2
#Function<43.65746770/2 in :erl_eval.expr/5>
(runtime_tools 1.17) dbg.erl:308: :dbg.tracer/2
It seems to not find the function. Note, this function does exist in Erlang (as can be seen in the documentation I linked) and :dbg.tracer() works as well.
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: