2

Using trace and dbg in Erlang 开始,我知道可以使用以下命令跟踪所有函数对指定函数的调用

1>dbg:p(all, c).

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

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

1 回答 1

7

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

相反,看看各种dbg:tpdbg:tpl功能。在您调用它们后应用它们dbg:p(all, c).它们允许您跟踪特定模块和特定功能。从跟踪特定函数或模块开始,然后根据您看到的跟踪,将跟踪扩大到该函数的调用者。一旦它们不再与您的调试工作相关,您还可以使用dbg:ctp和关闭对特定功能或模块的跟踪。dbg:ctpl使用这种方法,您可以dbg迭代地归零您正在寻找的任何东西。

于 2015-08-14T13:24:43.427 回答