当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang trace_pattern(MFA :: send, MatchSpec, FlagList :: [])用法及代码示例


erlang:trace_pattern(MFA :: send, MatchSpec, FlagList :: []) ->
 integer() >= 0
OTP 19.0
类型:
MatchSpec = (MatchSpecList :: trace_match_spec()) | boolean()
trace_match_spec() =
[{[term()] | '_' | match_variable(),[term()],[term()]}]

match_variable() =atom()
'$1' 的近似值 | '$2' | '$3' | ...

设置跟踪模式消息发送。必须与erlang:trace/3设置send一个或多个进程的跟踪标志。默认情况下,所有消息发送自send跟踪的进程被跟踪。要根据消息内容、发送者和/或接收者限制跟踪的发送事件,请使用erlang:trace_pattern/3.

参数 MatchSpec 可以采用以下形式:


MatchSpecList

匹配规范列表。匹配在列表上完成[Receiver, Msg].Receiver是接收者的进程或端口标识Msg是消息术语。发送进程的pid可以通过guard函数获取self/0。空列表与true。有关详细信息,请参阅部分Erlang 中的匹配规范在用户指南中。


true

启用对所有已发送消息的跟踪(来自 send 跟踪进程)。任何匹配规范都会被删除。这是默认设置。


false

禁用对所有已发送消息的跟踪。任何匹配规范都会被删除。

对于发送跟踪,参数 FlagList 必须是 []

返回值始终为 1

例子:

仅跟踪特定进程的消息Pid

> erlang:trace_pattern(send, [{[Pid, '_'],[],[]}], []).
1

仅跟踪匹配 {reply, _} 的消息:

> erlang:trace_pattern(send, [{['_', {reply,'_'}],[],[]}], []).
1

仅跟踪发送给发送者本身的消息:

> erlang:trace_pattern(send, [{['$1', '_'],[{'=:=','$1',{self}}],[]}], []).
1

仅跟踪发送到其他节点的消息:

> erlang:trace_pattern(send, [{['$1', '_'],[{'=/=',{node,'$1'},{node}}],[]}], []).
1
注意

send 跟踪的匹配规范可以使用除 caller 之外的所有保护函数和主体函数。

通过引发错误异常而失败,错误原因为:


badarg

如果论证无效。


system_limit

如果作为参数传递的匹配规范具有过多的嵌套,这会导致调用进程正在其上执行的调度程序的调度程序堆栈耗尽。调度程序堆栈大小可以在启动运行时系统时进行配置。

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 trace_pattern(MFA :: send, MatchSpec, FlagList :: []) -> integer() >= 0。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。