【问题标题】:Can match specifications be used when tracing messages in Erlang?在 Erlang 中跟踪消息时可以使用匹配规范吗?
【发布时间】:2014-09-03 15:01:57
【问题描述】:

当跟踪 Erlang 中的函数调用时,匹配规范可用于缩小生成跟踪消息的函数调用集。

  • 有没有办法使用匹配规范来过滤掉消息 何时跟踪发送或接收的消息?

我已阅读 dbg 和 ttb 的文档,还发现 Erlang Solutions 的 Mazen Harake 撰写的 presentation 在学习跟踪时很有用。

在使用 Google 搜索几乎所有示例时,我发现跟踪函数调用不发送或接收消息。

  • 也许大多数 Erlang 程序员认为跟踪消息没有用处?

我的问题可能与问题"Tracing the action of consuming messages from mailbox in Erlang" 相关。

【问题讨论】:

  • 正如@i-give-crap-answers 在接受的答案中解释的那样,在无法跟踪消息时使用匹配规范。我的好奇心使我想了解为什么不支持此功能。它只是没有实现(还)还是有一些我不完全理解的技术原因(还)?

标签: erlang trace


【解决方案1】:

不,没有办法,但是:

  • 您可以将每条消息发送到跟踪器,然后通过过滤器清除它们。对于消息量很小的低速率消息,这可能会很好。
  • 您可以使用 seq_tracer 功能,然后在函数调用上进行匹配,然后调用进程上的 seq_tracer。这也可以减少跟踪消息的数量。

【讨论】:

  • 是的,手动过滤跟踪消息是可能的,但我希望有一个更有效的选项,类似于在跟踪函数调用时使用匹配规范。谢谢@i-give-crap-answers,我花了很长时间试图寻找答案,现在可以停止搜索了。
  • 我会查看 seq_tracer 但快速查看后它似乎不适合我当前的需求。
猜你喜欢
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2012-11-17
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
相关资源
最近更新 更多