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


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