Types
Result = {ok, ActivatedNodes} | {error,Reason}
Nodes = atom() | [atom()] | all | existing | new
Opts = Opt | [Opt]
Opt = {file,Client} | {handler, FormatHandler} | {process_info,PI} |
shell | {shell, ShellSpec} | {timer, TimerSpec} |
{overload_check, {MSec, Module, Function}} |
{flush, MSec} | resume | {resume, FetchTimeout} |
{queue_size, QueueSize}
TimerSpec = MSec | {MSec, StopOpts}
MSec = FetchTimeout = integer()
Module = Function = atom()
StopOpts = see stop/2
Client = File | {local, File}
File = Filename | Wrap
Filename = string()
Wrap = {wrap,Filename} | {wrap,Filename,Size,Count}
FormatHandler = See format/2
PI = true | false
ShellSpec = true | false | only
QueueSize = non_neg_integer()
Starts a file trace port on all specified nodes
and points the system tracer for sequential tracing to
the same port.
Options:
- Filename
The specified Filename is prefixed with the node name.
Default Filename is ttb.
- File={wrap,Filename,Size,Count}
Can be used if the size of the trace logs must be limited.
Default values are
Size=128*1024 and Count=8.
- Client
When tracing diskless nodes, ttb must be started
from an external "trace control node" with disk access, and
Client must be {local, File}. All
trace information is then sent to the trace control node where
it is written to file.
- queue_size
When tracing to shell or {local,File}, an ip
trace driver is used internally. The ip trace driver has a
queue of maximum QueueSize messages waiting to be
delivered. If the driver cannot deliver messages as fast as
they are produced, the queue size might be exceeded and
messages are dropped. This parameter is optional, and is
only useful if many {drop,N} trace messages are
received by the trace handler. It has no meaning if shell
or {local,File} is not used. See
dbg:trace_port/2
for more information about the ip trace driver.
- process_info
Indicates if process
information is to be collected. If PI = true (which is
default), each process identifier Pid is replaced by a
tuple {Pid,ProcessInfo,Node}, where ProcessInfo
is the registered process name, its globally registered name,
or its initial function. To turn off this functionality,
set PI = false.
- {shell, ShellSpec}
Indicates that trace messages are to be printed on the
console as they are received by the tracing process. This implies
trace client {local, File}. If ShellSpec
is only (instead of true), no trace logs are stored.
- shell
Shortcut for {shell, true}.
- timer
Indicates that the trace is to be
automatically stopped after MSec milliseconds. StopOpts
are passed to command ttb:stop/2 if specified (default is []).
Notice that the timing is approximate, as delays related to
network communication are always present. The timer starts after
ttb:p/2 is issued, so you can set up your trace patterns before.
- overload_check
-
Allows to enable overload
checking on the nodes under trace. Module:Function(check)
is performed each MSec millisecond. If the check returns
true, the tracing is disabled on a specified node.
Module:Function must be able to handle at least three
atoms: init, check, and stop. init and
stop allows you to initialize and clean
up the check environment.
When a node gets overloaded, it is not possible to issue ttb:p/2
or any command from the ttb:tp/2,3,4 family, as it would lead to
inconsistent tracing state (different trace specifications on
different nodes).
- flush
Periodically flushes all file trace
port clients (see
dbg:flush_trace_port/1). When enabled,
the buffers are freed each MSec millisecond. This option is
not allowed with {file, {local, File}} tracing.
- {resume, FetchTimeout}
-
Enables the autoresume feature.
When enabled, remote nodes try to reconnect to the controlling node
if they are restarted. The feature requires application Runtime_Tools
to be started (so it has to be present in the .boot
scripts if the traced nodes run with embedded Erlang). If this is
not possible, resume can be performed manually by starting
Runtime_Tools remotely using
rpc:call/4.
ttb tries to fetch all logs from a reconnecting node before
reinitializing the trace. This must finish within FetchTimeout
milliseconds or is aborted.
By default, autostart information is stored in a file named
ttb_autostart.bin on each node. If this is not desired
(for example, on diskless nodes), a custom module handling autostart
information storage and retrieval can be provided by specifying
environment variable ttb_autostart_module for the application
Runtime_Tools. The module must respond to the following API:
- write_config(Data) -> ok
Stores the provided data for further retrieval. It is
important to realize that the data storage used must not
be affected by the node crash.
- read_config() -> {ok, Data} | {error, Error}
Retrieves configuration stored with write_config(Data).
- delete_config() -> ok
-
Deletes configuration stored with write_config(Data).
Notice that after this call any subsequent calls to read_config
must return {error, Error}.
resume implies the default FetchTimeout, which is
10 seconds