🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
本地节点监听远程节点的函数被调用事件 1.远程节点,存在下面函数 player_handler:get_state(Uid). 2.本地节点。 ```erlang erl -name test@127.0.0.1 -setcookie 127001 -remsh 'game@127.0.0.1'。连接上远程节点。回退到本地节点 >dbg:tracer(). %启动 >dbg:n('game@127.0.0.1'). >dbg:p(all, c). >dbg:tpl(player_handler, handle_info, dbg:fun2ms(fun(_) -> exception_trace() end)). > ``` 3.进入远程节点执行 ```erlang NaNundefinedplayer_handler:get_state(1). NaNundefined{state, 1} ``` 4.回到本地节点可以看到shell中会打印 ```erlang (<4641.47.0>) call player_handler:get_state(1) (<4641.47.0>) returned from player_handler:get_state/1 -> {state, 1} ``` 附上自家项目用的tracer ```erlang t(Mod)-> dbg:tpl(Mod,[{'_', [], [{return_trace}]}]). t(Mod,Fun)-> dbg:tpl(Mod,Fun,[{'_', [], [{return_trace}]}]). t(Mod,Fun,Ari)-> dbg:tpl(Mod,Fun,Ari,[{'_', [], [{return_trace}]}]). p(Max)-> FuncStopTracer = fun (_, N) when N =:= Max-> % 记录累计到上限值,追踪器自动关闭 dbg:stop_clear(), io:format("#WARNING >>>>>> dbg tracer stopped <<<<<<~n~n",[]); (Msg, N) -> case Msg of {trace, _Pid, call, Trace} -> {M, F, A} = Trace, io:format("###################~n",[]), io:format("call [~p:~p,(~p)]~n", [M, F, A]), io:format"###################~n",[]); {trace, _Pid, return_from, Trace, ReturnVal} -> {M, F, A} = Trace, io:format("===================~n",[]), io:format("return [~p:~p(~p)] =====>~p~n", [M, F, A, ReturnVal]), io:format("===================~n",[]); _ -> skip end, N + 1 end, case dbg:tracer(process, {FuncStopTracer, 0}) of {ok, _Pid} -> dbg:p(all, [all]); {error, already_started} -> skip end. stop()-> dbg:stop_clear(). ```