[erlang-questions] [ANN] Recon 2.1.0 released

Fred Hebert mononcqc@REDACTED
Tue Mar 4 16:46:01 CET 2014

Hi everyone,

I've just released recon 2.1.0, a library to debug dand diagnose Erlang
production systems.

The biggest addition here is the addition of `recon_trace', to try and
allow safe tracing, in production. It's a bit similar in intent to
redbug (without the dependency chain), and tries to be more powerful.

Example usage:

    1> recon_trace:calls({queue, '_', fun([A,_]) -> return_trace() end}, {10,100}).
    13:24:21.324309 <0.38.0> queue:in(3, {[],[]})
    13:24:21.371473 <0.38.0> queue:in/2 --> {[3],[]}
    13:25:14.694865 <0.53.0> queue:split(4, {[10,9,8,7],[1,2,3,4,5,6]})
    13:25:14.695194 <0.53.0> queue:split/2 --> {{[4,3,2],[1]},{[10,9,8,7],[5,6]}}
    2> recon_trace:clear().

This matches all functions from the queue module with an arity 2, and
returns the result of the call. It also puts a practical limit of 10
trace messages per 100 milliseconds.

There's more stuff in there:

- Limiting to an absolute count or a rate over time
- Matching on arity only
- Matching on multiple specs
- Allowing to match on existing, new, all pids, or one or more processes
  (of the form <A.B.C>, {A,B,C}, "<A.B.C>", some_name, {global, Name},
  {via, gproc, Name}, etc.)
- Printing traces with arities or arguments
- tracing local function calls (see f(X), not mod:f(X))

There's also protection against annoying errors:

- wildcard matches on modules banned unless restricting the
- don't trace IO, lists, or recon_trace itself
- Each call to `recon_trace:calls' resets the trace patterns to
  avoid adding more specs than expected
- Linked to the calling process so that a disconnected node or crashed
  shell turns of tracing on the remote node

For the time being, only function calls are being traced -- GC, message
passing, and scheduling aren't included. I hope this is still going to be
useful to Erlang devs around!

Full Documentation: http://ferd.github.io/recon/recon_trace.html
Source: https://github.com/ferd/recon


More information about the erlang-questions mailing list