🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
开启 dbg:tracer() dbg:p(Item, Flags) dbg:p(Item) -> dbg:p(Item, [m]). Item是设定要跟踪的对象,Flags是设置要监听的动作 Item = all %会trace 整个系统所有的进程,同样可以监控整个集群 |new %就会trace 系统在此刻开始所创建的新进程,可以监控整个集群 |existing %会trace 系统此刻之前所创建的进程,可以监控整个集群 |pid() || register_name %则只会trace对应的进程,如果是在集群中,只要节点在traced nodes列表内,可以跨节点trace那个进程. | integer() %the process <0.Item.0> is traced | {X, Y, Z} %the process <X.Y.Z> is traced | "<X.Y.Z>" %as returned from pid_to_list/1, the process <X.Y.Z> is traced Flags can be a single atom, or a list of flags Flags = s(send) trace 进程发送的消息 |r(receive) trace 进程受到的消息 |m(messages) trace 进程收的或者发的消息 |c(call) 通过tp/2设置的匹配规则后,可以trace 进程所有的call匹配的动作。 |p(procs) trace 与目标进程相关联的进程 |sos(set on spwan) 使监控的进程所产生的进程继承所以trace flags |sol (set on link) 如果有另外的进程p2 link被监控的进程,p2会继承所有的trace flags |sofs(set on first spawn) 监控第一个创建的进程 |sofl (set on first link) |all 所有的flags |clear 清除所有flags dbg:tp({Module, Function, Arity}, MatchSpec) 与 dbg:tpl({Module, Function, Arity}, MatchSpec) -> {ok, MatchDesc} | {error, term()} tpl和tp类似,只是tpl会trace 未导出函数 dbg:tpl(Module, '_', []). 会trace 该module的所有的调用。 dbg:tpl(Module, Function, '_', []). 会trace module:function,不限定参数个数。 dbg:tpl(Module, Function, Arity, []). trace module:function/arity。 dbg:tpl(M, F, A, [{'_', [], [{return_trace}]}]). 会跟踪返回值 fun2ms dbg:fun2ms(fun([M,N]) when N > 3 -> return_trace() end). [{['$1','$2'],[{'>','$2',3}],[{return_trace}]}] dbg:fun2ms(fun([M,N]) when N > X -> return_trace() end). [{['$1','$2'],[{'>','$2',{const,3}}],[{return_trace}]}] dbg:fun2ms(fun(_) -> return_trace() end). p, c - Set trace flags for processes tp, tpl, ctp, ctpl, ctpg, ltp, dtp, wtp, rtp - Manipulate trace patterns for functions n, cn, ln - Add/remove traced nodes. tracer, trace_port, trace_client, get_tracer, stop, stop_clear - Manipulate tracer process/port i - Info