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


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


erlang:trace_pattern(MFA :: 'receive', 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设置'receive'一个或多个进程的跟踪标志。默认情况下接收的所有消息'receive'跟踪的进程被跟踪。要根据消息内容、发送者和/或接收者限制跟踪的接收事件,请使用erlang:trace_pattern/3.

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


MatchSpecList

匹配规范列表。匹配在列表上完成[Node, Sender, Msg].Node是发送者的节点名称。Sender是发送者的进程或端口标识,或者原子undefined如果发件人未知(远程发件人可能会出现这种情况)。Msg是消息术语。接收进程的pid可以用guard函数访问self/0。空列表与true。有关详细信息,请参阅部分Erlang 中的匹配规范在用户指南中。


true

启用对所有收到消息的跟踪(到 'receive' 跟踪进程)。任何匹配规范都会被删除。这是默认设置。


false

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

对于接收跟踪,参数 FlagList 必须是 []

返回值始终为 1

例子:

仅跟踪来自特定进程 Pid 的消息:

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

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

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

只跟踪来自其他节点的消息:

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

'receive' 跟踪的匹配规范可以使用除 caller , is_seq_trace , get_seq_token , set_seq_token , enable_trace , disable_trace , trace , silentprocess_dump 之外的所有保护函数和主体函数。

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


badarg

如果论证无效。


system_limit

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

相关用法


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