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

发布于 2024-09-02 04:33:39 字数 278 浏览 8 评论 0原文

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

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

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

    例如:{'=/=', '$2', function_name}

我也欢迎开箱即用的解决方案!

谢谢你!

I wanted to trace for all functions in an erlang module, with dbg:tpl, but one of the internal functions took up 95% of the trace file. I then wanted to exclude only that single function and found that it was not as easy as I thought it would be.

I know there are great pattern matching possibilities for arguments when tracing.

  • Is there a similar possibility to apply pattern matching for functions?

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

I am open for outside-the-box solutions as well!

Thank You!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

妄想挽回 2024-09-09 04:33:39

它可以通过列表理解来实现:

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

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

It can be achieved as one statement with a list comprehension:

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

Where Mod is the module you want to trace on, and DontTrace is a list of functions names that should not be traced on.

眼泪也成诗 2024-09-09 04:33:39
dbg:tpl(mod,[]).
dbg:ctpl(mod,notthisfunction).

还没有测试过这个,但这不应该起作用吗?不知道一种方法可以在一行中完成它。

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

Haven't tested this but shouldn't this do the trick? Don't know of a way to do it in one line.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文