erlang dbg - 跟踪所有函数对所有函数的调用

时间:2015-08-14 11:57:20

标签: erlang tracing dbg

Using trace and dbg in Erlang开始,我知道可以使用

跟踪所有函数对指定函数的调用
1>dbg:p(all, c).

但是,一个跟踪如何调用所有函数的所有函数? e.g:

1>dbg:foo().
*ALL Erlang function calls will be traced from here on out. Prepare yourself.*
2>lists:append("abc", "def").
*trace*

1 个答案:

答案 0 :(得分:7)

跟踪对所有函数的所有调用都不是您想要做的事情,因为这会轻易淹没您的输出并使您的shell无法使用。毕竟,shell也会调用函数来执行其职责,就像dbg一样,所以你最终会看到对生成和显示跟踪所涉及的io函数的无休止调用。

相反,请查看the various dbg:tp and dbg:tpl functions。在致电dbg:p(all, c).后应用它们它们允许您跟踪特定模块和特定功能。首先跟踪特定的函数或模块,然后根据您看到的跟踪,将跟踪扩展到该函数的调用者。一旦它们与您的调试工作不再相关,您还可以使用dbg:ctp and dbg:ctpl关闭特定功能或模块的跟踪。使用这种方法,您可以使用dbg迭代地调整您正在寻找的任何内容。