Recon wants to be a set of tools usable in production to diagnose Erlang problems or inspect production environment safely.
To build the library:
Documentation for the library can be obtained at http://ferd.github.io/recon/
It is recommended that you use tags if you do not want bleeding edge and development content for this library.
Versions supported: OTP-17 and up. Support of R16B03-1 down to R15B02 is best effort. Builds with Rebar3 require OTP-17.1 and up because that's what the tool supports.
Branches are organized by version.
master contains the bleeding edge,
2.x contains all stable changes up to the latest release of v2, and
1.x contains all stable changes of the first version of Recon.
recon_alloc(base handling of
recon:files/0since OTP-21 no longer supports listing all file descriptors, and removing
error_logger_queue_lenfrom node stats since a new logging mechanism was introduced in-process instead.
recon_alloc:allocators/1(incl. R16 compatibility)
fun(_) -> return_trace() end.
app_depsscript to run with rebar3 dependencies
recon_lib:count/1, thanks to @lucafavatella
recon_trace:calls/2interface to allow multiple match specs, which was currently only allowed for
erts_alloc, and some internal refactoring, thanks to Lukas Larsson.
recon_allocoperations with dumps on disk
recon_trace:tspec()to avoid issues in older Erlang versions regarding redefining an existing type (Thanks Roberto Aloi)
recon_tracescript to allow safe tracing of function calls on production nodes.
queue_fun.awkscript to inspect running functions of processes with large mailboxes in a crash dump.
recon_allocwhen certain expected allocators do not return results (Thanks to Michal Ptaszek)
recon_alloc, thanks to Lukas Larsson. Things that changed include:
average_block_sizes/1and now takes the keywords
memory/1has new options in
memory/2has been added, which allows to choose between
memory(Term)is made equivalent to
sbcs_to_mbcs/0to take the arguments
set_unit/1, which allows to get the
recon_allocresults in bytes (default), kilobytes, megabytes, and gigabytes, to help with readability.
recon:port_info/1no longer includes the
parallelismoption by default within the
metacategory as this would hurt backwards compatibility on some installations.
recon:get_state/2is added in order to specify timeouts.
recon:get_state/1keeps its 5000 milliseconds timeout.
binary_memory, which is callable in
recon:proc_window/3. This attribute allows to fetch the amount of memory used by refc binaries for a process, and to sort by that value for counts and windows.
recon_alloc:snapshot*functions, which allow memory allocation snapshots to be taken, saved on disk, reloaded, and analyzed on-demand. Thanks to Lukas Larsson for this functionality.
port_infofor better OTP backwards compatibility with little loss of information.
recon_lib:term_to_portto convert a string back to a usable port.
memoryinfo type thus gets renamed to
memory_used, in order to avoid conflicts when picking between a type and a specific process attribute. Types exported by the module also get updated.
app_deps.erlto read apps/ directories for releases
recon_libfor the window and count functions that take a specific pid as an argument.
recon_lib:term_to_pidand allowed arbitrary terms to be used for pids in