从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*
从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*
跟踪对所有函数的所有调用并不是您想要做的事情,因为这很容易淹没您的输出并使您的 shell 无法使用。毕竟,shell 也调用函数来执行其职责dbg
,因此您最终会看到对io
生成和显示跟踪所涉及的函数的无穷无尽的调用跟踪。
相反,看看各种dbg:tp
和dbg:tpl
功能。在您调用它们后应用它们dbg:p(all, c).
它们允许您跟踪特定模块和特定功能。从跟踪特定函数或模块开始,然后根据您看到的跟踪,将跟踪扩大到该函数的调用者。一旦它们不再与您的调试工作相关,您还可以使用dbg:ctp
和关闭对特定功能或模块的跟踪。dbg:ctpl
使用这种方法,您可以dbg
迭代地归零您正在寻找的任何东西。