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

cat*_*ory 1 erlang trace dbg

在Erlang中使用trace和dbg,我知道可以使用所有函数跟踪对指定函数的调用

1>dbg:p(all, c).
Run Code Online (Sandbox Code Playgroud)

但是,一个跟踪如何调用所有函数中的所有函数?例如:

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

Ste*_*ski 7

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

相反,看看各种dbg:tpdbg:tpl功能.在您打电话之后应用它们.dbg:p(all, c).它们允许您跟踪特定模块和特定功能.首先跟踪特定的函数或模块,然后根据您看到的跟踪,将跟踪扩展到该函数的调用者.一旦它们与您的调试工作不再相关,您还可以使用dbg:ctpdbg:ctpl关闭特定功能或模块的跟踪.通过这种方法,您可以使用dbg迭代的方式将其置于您正在寻找的任何位置.