【发布时间】:2012-11-17 18:55:55
【问题描述】:
我浏览了 Erlang 中 trace/3 BIF 的文档。但是,我观察到的一个现象是,它不能用于跟踪邮箱中消息的消费情况。标志'receive' 仅在将消息添加到进程邮箱时进行跟踪。
有什么方法可以跟踪事件,例如使用receive 构造从邮箱读取?如果不是,有什么理由不能做到这一点?一个程序中的大多数事件都可以追踪,而从邮箱中读取消息却是不可追踪的,这似乎很奇怪。
【问题讨论】:
我浏览了 Erlang 中 trace/3 BIF 的文档。但是,我观察到的一个现象是,它不能用于跟踪邮箱中消息的消费情况。标志'receive' 仅在将消息添加到进程邮箱时进行跟踪。
有什么方法可以跟踪事件,例如使用receive 构造从邮箱读取?如果不是,有什么理由不能做到这一点?一个程序中的大多数事件都可以追踪,而从邮箱中读取消息却是不可追踪的,这似乎很奇怪。
【问题讨论】:
没有这样的工具。您只能希望处理函数的调用跟踪。这在 OTP 应用程序中相当容易,因为您可以挂钩 handle_...。
【讨论】: