是否可以在跟踪中返回堆栈跟踪?我正在使用:dbg.tp/3
并:dbg.tracer/2
与调用模块一起获取跟踪。我尝试caller
了函数(参见文档:https ://erlang.org/doc/apps/erts/match_spec.html ),但它给了我来自堆栈的下一个调用(即{:erl_eval, :do_apply, 6}
),我需要的是第一个函数在我的项目中定义。
对于上下文,处理函数传递给tracer/2
:
handler_fun = fn {:trace, _pid, :call, {_m, _f, _a}, dump}, _ignored ->
IO.puts(dump)
end
和 tp 调用(现在我只使用进程转储,它给我二进制的堆栈,但我想以我可以在代码中解释而不是解析它的形式得到它):
:dbg.tp(module, :_, [{:_, [], [{:message, {:process_dump}}]}])
我愿意使用与跟踪/dbg 不同的工具。