table of contents
UFTRACE(1) | UFTRACE(1) |
NAME¶
uftrace - Function graph tracer for userspace
SYNOPSIS¶
uftrace [record|replay|live|report|info|dump|recv|graph|script|tui] [options] COMMAND [command-options]
DESCRIPTION¶
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).
SUB-COMMANDS¶
- 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
COMMON OPTIONS¶
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.
- --no-pager
- Do not use a pager.
- --opt-file=FILE
- Read command-line options from the FILE.
SUBCOMMAND-SPECIFIC OPTIONS¶
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
- --no-comment
- 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.
SEE ALSO¶
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)
AUTHORS¶
Namhyung Kim <namhyung@gmail.com>.
Sep, 2018 | Uftrace User Manuals |