Runtime_tools Release Notes
Runtime_tools 1.4
Fixed errors and malfunctions
-
Added
include
directory
(Own Id: OTP-4736)
Runtime_tools 1.3
Fixed errors and malfunctions
-
dbg:p/2 always returns error (i.e. does not crash) if faulty flag is
given. Also dbg:c/4 now executes on a separate process and internal
messages are no longer traced.
(Own Id: OTP-4111)
(Aux Id: Seq7131)
Improvements and new features
-
- Trace ports can now be opened on remote nodes
- It is possible to use the local node as a "trace control
node", i.e. trace only remote nodes.
- The function
dbg:i/0
now prints information about
all traced nodes
- Added function
dbg:tracer/3
- same as
tracer/2
but on the given node
- Added function
dbg:flush_trace_port/1
- same as
flush_trace_port/0
but on the given node
- Added function
dbg:trace_port_control/2
- same as
trace_port_control/1
but on the given node
- Added function
dbg:get_tracer/1
- same as
get_tracer/0
but on the given node
- Added function
dbg:stop_clear/0
- same as
stop/0
but also clears all trace patterns
- Added functions
ctp/0
, ctpl/0
and
ctpg/0
- clears trace patterns on all functions
- (Incompatible) A tracer is no longer autmatically started on
the local node. I.e. to start a tracer on the local node you must
explicitly call
dbg:tracer/0
or
dbg:tracer/2
.
- (Incompatible)
dbg:ln/0
now includes the local
node if it is traced
- (Incompatible) Return values from
dbg:p/2
and
dbg:tp/x
are changed - the element
{matched,N}
is replaced by
{matched,LocalNode,N}
(*** POTENTIAL INCOMPATIBILITY ***)
(Own Id: OTP-4346)
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)
Runtime_tools 1.1.4
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
Runtime_tools 1.1.2
Improvements and new features
-
New functions in the module
dbg
:
flush_trace_port
, stop_trace_client
.
There is a new option
follow_file
for trace_client
.
Own Id: OTP-3471
Aux Id: OTP-3427
-
Call tracing is greatly improved. It is now possible to
trace local function calls (and calls to local functions)
set up with the erlang:trace_pattern BIF. Trace compilation
for local call is no longer needed.
New functions in the module
dbg
: h
, tpl
,
ctpl
, ctpg
. tp
now
only traces global functions - use tpl
to trace global
and local.
Own Id: OTP-3518
Runtime_tools 1.1.1
Improvements and new features
-
The trace_file_drv driver was internally rewritten to
use the new erl_driver.h file.
Own Id: OTP-3371