uftrace - Function graph tracer for userspace
uftrace
[record|replay|live|report|info|dump|recv|graph|script|tui]
[options] COMMAND [command-options]
The uftrace tool is a function tracer that traces the execution of
given COMMAND at the function level. COMMAND should be a C or C++ executable
built with compiler instrumentation (-pg or -finstrument-functions). COMMAND
needs to have an ELF symbol table (i.e. not be strip(1)-ed) in order
for the names of traced functions to be available.
The uftrace command consists of a number of sub-commands, in the
manner of git(1) or perf(1). Below is a short description of each
sub-command. For more detailed information, see the respective manual pages.
The options in this page can be given to any sub-command also.
For convenience, if no sub-command is given, uftrace acts as
though the live sub-command was specified, which runs the record and replay
sub-commands in turn. See uftrace-live(1) for options belonging to the live
sub-command. For more detailed analysis, it is better to use
uftrace-record(1) to save trace data, and then analyze it with other uftrace
commands like uftrace-replay(1), uftrace-report(1), uftrace-info(1),
uftrace-dump(1), uftrace-script(1) or uftrace-tui(1).
- record
- Run a given command and save trace data in a data file or directory.
- replay
- Print recorded function trace data with time durations.
- live
- Do live tracing. Print function trace of the given command.
- report
- Print various statistics and summary of the recorded trace data.
- info
- Print side-band information like OS version, CPU info, command line and so
on.
- dump
- Print raw tracing data in the data files.
- recv
- Save tracing data sent to network
- graph
- Print function call graph
- script
- Run a script for recorded function trace
- tui
- Show text user interface for graph and report
These are the common options supported by all uftrace
subcommands:
- -h, --help
- Print help message and list of options with description
- --usage
- Print usage string
- -V, --version
- Print program version
- -v, --verbose
- Print verbose messages. This option increases a debug level and can be
used at most 3 times.
- --debug
- Print debug messages. This option is same as -v/--verbose and is provided
only for backward compatibility.
- --debug-domain=DOMAIN[,DOMAIN,
...]
- Limit the printing of debug messages to those belonging to one of the
DOMAINs specified. Available domains are: uftrace, symbol, demangle,
filter, fstack, session, kernel, mcount, dynamic, event, script and dwarf.
The domains can have an their own debug level optionally (preceded by a
colon). For example, -v --debug-domain=filter:2 will apply debug level of
2 to the “filter” domain and apply debug level of 1 to
others.
- -d DATA,
--data=DATA
- Specify name of trace data (directory). Default is uftrace.data.
- --logfile=FILE
- Save warning and debug messages into this file instead of stderr.
- --color=VAL
- Enable or disable color on the output. Possible values are
“yes”(= “true” | “1” |
“on” ), “no”(= “false” |
“0” | “off” ) and “auto”. The
“auto” value is default and turns on coloring if stdout is a
terminal.
- Do not use a pager.
- --opt-file=FILE
- Read command-line options from the FILE.
These options are listed here for completeness, but are only
effective with specific subcommands.
Please see the uftrace-<subcommand> manual pages for
more information: The manual for uftrace-live(1) is special: The
subcommand live does record and replay internally. Thus, it describes most
regular option in detail.
- --avg-self
- Show average/min/max of self function time
- --avg-total
- Show average/min/max of total function time
- -a, --auto-args
- Show arguments and return value of known functions
- -A,
--argument=FUNC@arg[,arg,...]
- Show function arguments
- -b, --buffer=SIZE
- Size of tracing buffer (default: 128K)
- --chrome
- Dump recorded data in chrome trace format
- --clock
- Set clock source for timestamp (default: mono)
- --column-offset=DEPTH
- Offset of each column (default: 8)
- --column-view
- Print tasks in separate columns
- -C,
--caller-filter=FUNC
- Only trace callers of those FUNCs
- --demangle=TYPE
- C++ symbol demangling: full, simple, no (default: simple)
- --diff=DATA
- Report differences
- --diff-policy=POLICY
- Control diff report policy (default: `abs,compact,no-percent')
- --disable
- Start with tracing disabled
- -D, --depth=DEPTH
- Trace functions within DEPTH
- -e, --estimate-return
- Use only entry record type for safety
- --event-full
- Show all events outside of function
- -E, --Event=EVENT
- Enable EVENT to save more information
- --flame-graph
- Dump recorded data in FlameGraph format
- --flat
- Use flat output format
- --force
- Trace even if executable is not instrumented
- --format=FORMAT
- Use FORMAT for output: normal, html (default: normal)
- -f,
--output-fields=FIELD
- Show FIELDs in the replay or graph output
- -F, --filter=FUNC
- Only trace those FUNCs
- -g, --agent
- Start an agent in mcount to listen to commands
- --graphviz
- Dump recorded data in DOT format
- -H, --hide=FUNC
- Hide FUNCs from trace
- --host=HOST
- Send trace data to HOST instead of write to file
- -k, --kernel
- Trace kernel functions also (if supported)
- --keep-pid
- Keep same pid during execution of traced program
- --kernel-buffer=SIZE
- Size of kernel tracing buffer (default: 1408K)
- --kernel-full
- Show kernel functions outside of user
- --kernel-only
- Dump kernel data only
- --kernel-skip-out
- Skip kernel functions outside of user (deprecated)
- -K,
--kernel-depth=DEPTH
- Trace kernel functions within DEPTH
- --libmcount-single
- Use single thread version of libmcount
- --list-event
- List available events
- --logfile=FILE
- Save warning and debug messages into this file instead of stderr.
- -l, --nest-libcall
- Show nested library calls
- --libname
- Show libname name with symbol name
- --libmcount-path=PATH
- Load libmcount libraries from this PATH
- --match=TYPE
- Support pattern match: regex, glob (default: regex)
- --max-stack=DEPTH
- Set max stack depth to DEPTH (default: 65535)
- --no-args
- Do not show arguments and return value
- Don’t show comments of returned functions
- --no-event
- Disable (default) events
- --no-sched
- Disable schedule events
- --no-sched-preempt
- Hide pre-emptive schedule event but show regular(sleeping) schedule
event
- --no-libcall
- Don’t trace library function calls
- --no-merge
- Don’t merge leaf functions
- --no-pltbind
- Do not bind dynamic symbols (LD_BIND_NOT)
- --no-randomize-addr
- Disable ASLR (Address Space Layout Randomization)
- --nop
- No operation (for performance test)
- --num-thread=NUM
- Create NUM recorder threads
- -N, --notrace=FUNC
- Don’t trace those FUNCs
- -p, --pid=PID
- Connect to the PID of an interactive mcount instance
- --port=PORT
- Use PORT for network connection (default: 8090)
- -P, --patch=FUNC
- Apply dynamic patching for FUNCs
- --record
- Record a new trace before running given script
- --report
- Show a live report before replay
- --rt-prio=PRIO
- Record with real-time (FIFO) priority
- -r,
--time-range=TIME~TIME
- Show output within the TIME (timestamp or elapsed time) range
only
- --run-cmd=CMDLINE
- Command line that want to execute after tracing data received
- -R,
--retval=FUNC[@retspec]
- Show function return values for FUNC, optionally with given uftrace
retspec
- --sample-time=TIME
- Show flame graph with this sampling time
- --signal=SIGNAL@act[,act,...]
- Trigger the given actions when the given SIGNAL is received
- --sort-column=INDEX
- Sort diff report on column INDEX (default: 2)
- --srcline
- Enable recording source line info
- --symbols
- Print symbol table instead of the recorded tracing info
- -s,
--sort=KEY[,KEY,...]
- Sort reported functions by KEYs (default: 2)
- -S,
--script=SCRIPT
- Run a given SCRIPT in function entry and exit
- -t,
--time-filter=TIME
- Hide small functions run less than the TIME
- --task
- Print task relationship in a tree form instead of the tracing info.
- --task-newline
- Interleave a newline when task is changed
- --tid=TID[,TID,...]
- Only replay those tasks
- --time
- Print time information
- -T,
--trigger=FUNC@act[,act,...]
- Trigger action on those FUNCs
- -U, --unpatch=FUNC
- Don’t apply dynamic patching for FUNCs
- --with-syms=DIR
- Use symbol files in the DIR
- -W, --watch=POINT
- Watch and report POINT if it’s changed
- -Z,
--size-filter=SIZE
- Apply dynamic patching for functions bigger than SIZE
For more detail about these command-specific options, please see
the more specific manual pages listed below.
uftrace-live(1), uftrace-record(1), uftrace-replay(1),
uftrace-report(1), uftrace-info(1), uftrace-dump(1), uftrace-recv(1),
uftrace-graph(1), uftrace-script(1), uftrace-tui(1)
Namhyung Kim <namhyung@gmail.com>.