如何跟踪Erlang模块中的所有函数除外?

时间:2010-05-19 23:32:06

标签: erlang pattern-matching trace

我想用dbg:tpl跟踪erlang模块中的所有函数,但其​​中一个内部函数占用了跟踪文件的95%。然后我想只排除那个单一的功能,发现它并不像我想象的那么容易。

我知道在跟踪时,参数有很好的模式匹配可能性。

  • 是否有类似的可能性为函数应用模式匹配?

    eg.: {'=/=', '$2', function_name}

我也愿意接受开箱即用的解决方案!

谢谢!

2 个答案:

答案 0 :(得分:5)

它可以作为一个具有列表理解的语句来实现:

[dbg:tpl(Mod, F, []) || {F, _Ar} <- Mod:module_info(functions), not lists:member(F, DontTrace)].

其中Mod是您要跟踪的模块,DontTrace是不应跟踪的函数名称列表。

答案 1 :(得分:1)

dbg:tpl(mod,[]).
dbg:ctpl(mod,notthisfunction).

没有测试过这个,但不应该这样做吗?不知道如何在一行中做到这一点。