1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
|
% UFTRACE-DUMP(1) Uftrace User Manuals
% Namhyung Kim <namhyung@gmail.com>
% Sep, 2018
NAME
====
uftrace-dump - Print raw tracing data in the data files
SYNOPSIS
========
uftrace dump [*options*]
DESCRIPTION
===========
This command shows raw tracing data recorded in the data file. The dump format
can be configured by additional options such as --chrome, --flame-graph,
or --graphviz.
DUMP OPTIONS
============
\--chrome
: Show JSON style output as used by the Google Chrome tracing facility.
\--flame-graph
: Show FlameGraph style output viewable by modern web browsers (after
processing by the FlameGraph tool).
\--graphviz
: Show DOT style output used by the graphviz toolkit.
\--mermaid
: Show graph as mermaid flowchart diagram. It can be rendered in the browser.
\--debug
: Show hex dump of data as well
\--sample-time=*TIME*
: Apply sampling time when generating output for --flame-graph. By default, it
tries to find a period from 1 usec to 1 sec where it keeps the total number
of samples under 1 million (in a single-threaded program). You can override
the sampling time with this option explicitly. Note that functions which
ran less than the sampling time will be removed from the output and
functions ran longer than the time will be shown as larger.
\--no-args
: Do not show function arguments and return value.
COMMON OPTIONS
==============
-F *FUNC*, \--filter=*FUNC*
: Set filter to trace selected functions and their children functions.
This option can be used more than once.
See `uftrace-replay`(1) for an explanation of filters.
-N *FUNC*, \--notrace=*FUNC*
: Set filter not to trace selected functions and their children functions.
This option can be used more than once.
See `uftrace-replay`(1) for an explanation of filters.
-C *FUNC*, \--caller-filter=*FUNC*
: Set filter to trace callers of selected functions only.
This option can be used more than once.
See `uftrace-replay`(1) for an explanation of filters.
-T *TRG*, \--trigger=*TRG*
: Set trigger on selected functions. This option can be used more than once.
See `uftrace-replay`(1) for an explanation of triggers.
-D *DEPTH*, \--depth=*DEPTH*
: Set trace limit in nesting level.
-t *TIME*, \--time-filter=*TIME*
: Do not show functions which run under the time threshold. If some functions
explicitly have the 'trace' trigger applied, those are always traced
regardless of execution time.
-Z *SIZE*, \--size-filter=*SIZE*
: Do not show functions smaller than SIZE bytes.
-L *LOCATION*, \--loc-filter=*LOCATION*
: Set filter to trace selected source locations.
This option can be used more than once.
\--no-libcall
: Do not show library calls.
\--no-event
: Do not show any events. Implies `--no-sched`.
\--no-sched
: Do not show schedule events.
\--match=*TYPE*
: Use pattern match using TYPE. Possible types are `regex` and `glob`.
Default is `regex`.
\--with-syms=*DIR*
: Read symbol data from the .sym files in *DIR* directory instead of the
binary. This can be useful to deal with stripped binaries. The file name
of the main binary should be the same when saved and used.
COMMON ANALYSIS OPTIONS
=======================
-H *FUNC*, \--hide=*FUNC*
: Set filter not to trace selected functions.
It doesn't affect their subtrees, but hides only the given functions.
This option can be used more than once.
See `uftrace-replay`(1) for an explanation of filters.
\--kernel-full
: Show all kernel functions called outside of user functions. This option is
only meaningful when used with \--chrome, \--flame-graph or \--graphviz
options.
\--kernel-only
: Dump kernel functions only without user functions.
\--event-full
: Show all (user) events outside of user functions. This option is only
meaningful when used with \--chrome, \--flame-graph or \--graphviz options.
\--tid=*TID*[,*TID*,...]
: Only print functions called by the given tasks. To see the list of
tasks in the data file, you can use `uftrace report --task` or
`uftrace info`. This option can also be used more than once.
\--demangle=*TYPE*
: Use demangled C++ symbol names for filters, triggers, arguments and/or
return values. Possible values are "full", "simple" and "no". Default
is "simple" which ignores function arguments and template parameters.
-r *RANGE*, \--time-range=*RANGE*
: Only show functions executed within the time RANGE. The RANGE can be
\<start\>~\<stop\> (separated by "~") and one of \<start\> and \<stop\> can
be omitted. The \<start\> and \<stop\> are timestamp or elapsed time if
they have \<time_unit\> postfix, for example '100us'. The timestamp or
elapsed time can be shown with `-f time` or `-f elapsed` option respectively
in `uftrace replay`(1).
EXAMPLE
=======
This command dumps data like below:
$ uftrace record abc
$ uftrace dump
uftrace file header: magic = 4674726163652100
uftrace file header: version = 4
uftrace file header: header size = 40
uftrace file header: endian = 1 (little)
uftrace file header: class = 2 (64 bit)
uftrace file header: features = 0x63 (PLTHOOK | TASK_SESSION | SYM_REL_ADDR | MAX_STACK)
uftrace file header: info = 0x3ff
reading 23043.dat
105430.415350255 23043: [entry] __monstartup(4004d0) depth: 0
105430.415351178 23043: [exit ] __monstartup(4004d0) depth: 0
105430.415351932 23043: [entry] __cxa_atexit(4004f0) depth: 0
105430.415352687 23043: [exit ] __cxa_atexit(4004f0) depth: 0
105430.415353833 23043: [entry] main(400512) depth: 0
105430.415353992 23043: [entry] a(4006b2) depth: 1
105430.415354112 23043: [entry] b(4006a0) depth: 2
105430.415354230 23043: [entry] c(400686) depth: 3
105430.415354425 23043: [entry] getpid(4004b0) depth: 4
105430.415355035 23043: [exit ] getpid(4004b0) depth: 4
105430.415355549 23043: [exit ] c(400686) depth: 3
105430.415355761 23043: [exit ] b(4006a0) depth: 2
105430.415355943 23043: [exit ] a(4006b2) depth: 1
105430.415356109 23043: [exit ] main(400512) depth: 0
$ uftrace dump --chrome -F main
{"traceEvents":[
{"ts":105430415353,"ph":"B","pid":23043,"name":"main"},
{"ts":105430415353,"ph":"B","pid":23043,"name":"a"},
{"ts":105430415354,"ph":"B","pid":23043,"name":"b"},
{"ts":105430415354,"ph":"B","pid":23043,"name":"c"},
{"ts":105430415354,"ph":"B","pid":23043,"name":"getpid"},
{"ts":105430415355,"ph":"E","pid":23043,"name":"getpid"},
{"ts":105430415355,"ph":"E","pid":23043,"name":"c"},
{"ts":105430415355,"ph":"E","pid":23043,"name":"b"},
{"ts":105430415355,"ph":"E","pid":23043,"name":"a"},
{"ts":105430415356,"ph":"E","pid":23043,"name":"main"}
], "metadata": {
"command_line":"uftrace record abc ",
"recorded_time":"Tue May 24 19:44:54 2016"
} }
$ uftrace dump --flame-graph --sample-time 1us
main 1
main;a;b;c 1
$ uftrace dump --graphviz
\# command_line "uftrace record tests/t-abc"
digraph "/home/m/git/uftrace/tests/t-abc" {
\# Attributes
splines=ortho;
concentrate=true;
node [shape="rect",fontsize="7",style="filled"];
edge [fontsize="7"];
\# Elements
main[xlabel = "Calls : 1"]
main->a[xlabel = "Calls : 1"]
a->b[xlabel = "Calls : 1"]
b->c[xlabel = "Calls : 1"]
c->getpid[xlabel = "Calls : 1"]
}
SEE ALSO
========
`uftrace`(1), `uftrace-record`(1), `uftrace-replay`(1)
|