diff options
author | Kjell Winblad <kjellwinblad@gmail.com> | 2021-05-03 09:57:36 +0200 |
---|---|---|
committer | Kjell Winblad <kjellwinblad@gmail.com> | 2021-05-03 10:02:41 +0200 |
commit | 9d74726bee1c8ec498068e1467ae6392b9999b76 (patch) | |
tree | dc7f73c158fd66d9d5941ba3e90f8cc23b879e6b /lib/runtime_tools/src | |
parent | 7fe7fa3dde556b5b92522f8279d465bb52baf1f6 (diff) | |
download | erlang-9d74726bee1c8ec498068e1467ae6392b9999b76.tar.gz |
GH-4396: exported function instead of fun to set up remote tracing
The function `dbg:n/1` used a local fun to set up a tracer on a remote
node. This works fine as long as the remote node is running exactly
the same version of Erlang/OTP but does not work at all
otherwise. This is fixed by exporting the relevant function
(`dbg:do_relay/2`) and by calling this function on the remote node to
set up remote tracing.
Diffstat (limited to 'lib/runtime_tools/src')
-rw-r--r-- | lib/runtime_tools/src/dbg.erl | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/runtime_tools/src/dbg.erl b/lib/runtime_tools/src/dbg.erl index 92938ed5c1..41410bebf0 100644 --- a/lib/runtime_tools/src/dbg.erl +++ b/lib/runtime_tools/src/dbg.erl @@ -34,7 +34,7 @@ -export([fun2ms/1]). %% Local exports --export([erlang_trace/3,get_info/0,deliver_and_flush/1]). +-export([erlang_trace/3,get_info/0,deliver_and_flush/1,do_relay/2]). %% Debug exports -export([wrap_presort/2, wrap_sort/2, wrap_postsort/1, wrap_sortfix/2, @@ -942,9 +942,9 @@ erlang_trace(AtomPid, How, Flags) -> relay(Node,To) when Node /= node() -> case get(Node) of - undefined -> + undefined -> S = self(), - Pid = spawn_link(Node, fun() -> do_relay(S,To) end), + Pid = spawn_link(Node, dbg, do_relay, [S, To]), receive {started,Remote} -> put(Node, {Pid,Remote}) end, {ok,Pid}; {_Relay,PortOrPid} -> |