| commit | 1ddebb6bdaa2ebe94e761ad7435f5cd61480d3a5 | [log] [tgz] |
|---|---|---|
| author | Fred Hebert <mononcqc@ferd.ca> | Sat Jun 15 19:41:55 2019 -0400 |
| committer | GitHub <noreply@github.com> | Sat Jun 15 19:41:55 2019 -0400 |
| tree | b28d88b6e0e8d96f8a4271200b92aed4d5b2c20e | |
| parent | 02f8fc8c4daaad3cb42a6a5bc2b59f6e48b8d02e [diff] | |
| parent | 0c077e43e82c7c07128ec66caeb7c16abadd39c4 [diff] |
Merge pull request #74 from gomoripeti/trace_fmt_extra_msg Support extra message in traces
Recon wants to be a set of tools usable in production to diagnose Erlang problems or inspect production environment safely.
To build the library:
rebar3 compile
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.
2.x
recon_alloc (base handling of foreign_blocks type)recon:files/0 since OTP-21 no longer supports listing all file descriptors, and removing error_logger_queue_len from node stats since a new logging mechanism was introduced in-process instead.bin_leak arith errorsrecon_alloc:allocators/1 (incl. R16 compatibility)term_to_pid supports binariesreturn_to option in recon_tracereturn_trace in recon_trace:calls/2-3 instead of fun(_) -> return_trace() end.app_deps script to run with rebar3 dependenciesrecon:proc_count and recon:proc_window.recon:port_types/0 and recon_lib:count/1, thanks to @lucafavatellarecon_trace:calls/2 interface to allow multiple match specs, which was currently only allowed for calls/3.mbcs_pool data in erts_alloc, and some internal refactoring, thanks to Lukas Larsson.recon_alloc operations with dumps on diskrecon_trace:mfa() type to recon_trace:tspec() to avoid issues in older Erlang versions regarding redefining an existing type (Thanks Roberto Aloi)recon_trace script to allow safe tracing of function calls on production nodes.queue_fun.awk script to inspect running functions of processes with large mailboxes in a crash dump.recon_alloc when certain expected allocators do not return results (Thanks to Michal Ptaszek)recon_alloc.recon_alloc, thanks to Lukas Larsson. Things that changed include:average_sizes/0 is renamed average_block_sizes/1 and now takes the keywords current and max.memory/1 has new options in allocated_types and allocated_instances.memory/2 has been added, which allows to choose between current and max values. memory(Term) is made equivalent to memory(Term, current).sbcs_to_mbcs/0 to take the arguments current and max.set_unit/1, which allows to get the recon_alloc results in bytes (default), kilobytes, megabytes, and gigabytes, to help with readability.recon:port_info/1 no longer includes the parallelism option by default within the meta category as this would hurt backwards compatibility on some installations.recon:get_state/2 is added in order to specify timeouts. recon:get_state/1 keeps its 5000 milliseconds timeout.binary_memory, which is callable in recon:info/2,4, recon:proc_count/2, and 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.1.x
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.parallelism data from port_info for better OTP backwards compatibility with little loss of information.recon_lib:term_to_port to convert a string back to a usable port.recon:port_info/1 and recon:port_info/2recon_alloc moduleinfo/2 and info/4. The memory info 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.erl to read apps/ directories for releasesbin_leak function call.recon_lib for the window and count functions that take a specific pid as an argument.recon:info/1 into recon_lib:term_to_pid and allowed arbitrary terms to be used for pids in recon:get_state/1.