當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。