Runtime_tools Release Notes
Runtime_tools 1.2
Improvements and new features
-
A number of bug fixes and improvements have been done to applications
runtime_tools
, kernel
and erts
:
- A read timeout no longer resets the sequential trace
token. This is an incompatibility towards the previous behaviour. Use
seq_trace:set_token([])
to reset the sequential trace
token.
seq_trace:get_token/0
and
seq_trace:set_token/1
now have compatible token formats.
dbg:trace_port/2
and
dbg:trace_client/2,3
now supports trace to and read from a
size limited "wrap file set".
dbg:trace_port_control/1
now supports operation
get_listen_port
for the ip trace driver.
- New
match spec functions
{is_seq_trace}
and
{get_seq_trace}
has been added to test and read the
sequential trace token in match specs.
- New match spec
functions
{get_tcw}
and {set_tcw Value}
that
reads and sets a "trace control word" in the node has been added. The
"trace control word" is a word in each Erlang node of at least 24 bits.
There are also enhancements of BIFs:
erlang:system_info(trace_control_word)
and
erlang:system_flag(trace_control_word, Value)
for the same
purpose.
- A new match spec function
{silent,
TrueOrFalse}
for setting a silent call trace flag per process
that inhibits call trace messages, both local and global, has been
added. The BIF erlang:trace/3
has been extended to
recognize the flag 'silent' to start a call trace in silent mode.
- Some bugs in the
dbg
module has been fixed, e.g the
'old_trace_call' flag has been removed from the 'all' flags list, and
the dbg server no longer hangs if the supplied tracer fails to start.
- A bug in the emulator that made 'EXIT' messages from a process
involved in a sequential call trace get overwritten by the sequential
trace token itself has been fixed.
- The documentation regarding
the above has been updated. Especially, the fact that the match spec
function
{return_trace}
destroys the tail recursiveness of
the traced function has been pointed out.
(*** POTENTIAL INCOMPATIBILITY ***)
(Own Id: OTP-3747)
(Aux Id: OTP-3592, OTP-3744)
-
A trace client fun that can be given to dbg:trace_client/3 now gets
informed about the end of trace, so it can do something useful with its
collected data. See dbg:trace_client/3.
(*** POTENTIAL INCOMPATIBILITY ***)
(Own Id: OTP-3933)
(Aux Id: seq5193)
-
The flag 'procs' to erlang:trace/3 has got a slightly new behaviour:
Trace tag 'spawn' has a new element, and trace tags 'register',
'unregister', and 'getting_unlinked' are new. Therefore, new and/or
different trace messages will arrive to the tracer when the 'procs'
trace flag is used.
(*** POTENTIAL INCOMPATIBILITY ***)
(Own Id: OTP-3934)
(Aux Id: seq5193)
-
Wrap file traces now can limit the size of each file with a time
instead of a size. See the documentation for dbg:trace_port/2.
(Own Id: OTP-3935)
(Aux Id: seq5193)
-
When using trace flags 'running' and 'timestamp' to determine the
amount of running time different processes in the system were using,
the results were somewhat unreliable since the time to write the trace
buffer itself randomly burdened the traced processes. This is now
compensated for by faking process schedule out and in trace messages
around the file writes (for the trace file driver trace_file_drv).
(Own Id: OTP-3938)
-
The file names for wrap file traces has been changed. This has been
done to make it easier for auxiliary tools to know the file names when
fetching wrap traces over the network, especially if the tools used for
fetching does not support wildcards in filenames. See the documentation
for dbg:trace_port/2. NOTE that this change may affect existing fetch
tools. Especially note that the number of files in the wrap trace must
now be known when reading the trace, or as it is stated in the
documentation: the same wrap trace specification must be used when
reading the trace as when creating the trace.
(*** POTENTIAL INCOMPATIBILITY ***)
(Own Id: OTP-3965)
There are also release notes for
older versions.