TraceMap attempts to make a map of messages passed between processes.
Currently, it works, but could be expanded and improved and made more solid.
Don't run it on a production system!
In Erlang:
tracemap:map(ranch).
... time passes, and a few http requests are made ...
%% Make a graphviz file:
tracemap:graphviz("trace.dot").
%% Make a js-sequence-diagrams file
tracemap:sequence_js("seq.txt").
... you're done tracing things ...
tracemap:stop().
From the shell:
neato trace.dot -Tpng > trace.png
# Or whatever other image viewer you prefer:
eog trace.png
To make the sequence diagram work, you'll need to include the output
of the file sequence_js creates in an HTML file. See the gallery/
directory for examples.
Example images: http://davidw.github.io/tracemap/
-
Parse OTP style messages to get more information about who is sending what where.
-
Live display via the web/javascript.
-
Make the code safe for a production system by limiting the amount of tracing done.
-
Permit tracing of multiple applications.
-
As an application adds children, start tracing them.