Implement --shm-path option for UST sessions (per-uid channels)
[lttng-tools.git] / doc / man / lttng.1
CommitLineData
516f6cbe 1.TH "LTTNG" "1" "May 13th, 2014" "" ""
6991b181
DG
2
3.SH "NAME"
c5db699c 4lttng \(em LTTng 2.x tracer control command line tool
6991b181
DG
5
6.SH "SYNOPSIS"
7
8.PP
6991b181 9lttng [OPTIONS] <COMMAND>
6991b181
DG
10.SH "DESCRIPTION"
11
12.PP
13The LTTng project aims at providing highly efficient tracing tools for Linux.
e256d661 14Its tracers help track down performance issues and debug problems
6991b181
DG
15involving multiple concurrent processes and threads. Tracing across multiple
16systems is also possible.
17
fa072eae 18The \fBlttng\fP command line tool from the lttng-tools package is used to control
e256d661
JG
19both kernel and user-space tracing. Every interaction with the tracer should
20be done by this tool or by the liblttng-ctl library provided by the lttng-tools
6991b181
DG
21package.
22
23LTTng uses a session daemon (lttng-sessiond(8)), acting as a tracing registry,
50a3b92a 24which allows you to interact with multiple tracers (kernel and user-space)
6991b181
DG
25inside the same container, a tracing session. Traces can be gathered from the
26kernel and/or instrumented applications (lttng-ust(3)). Aggregating and reading
27those traces is done using the babeltrace(1) text viewer.
28
50a3b92a 29We introduce the notion of \fBtracing domains\fP which is essentially a type of
0e115563
DG
30tracer (kernel, user space, JUL, LOG4J or Python for now). In the future, we
31could see more tracer like for instance an hypervisor. For some commands,
32you'll need to specify on which domain the command operates (\-u, \-k, \-l, \-j
33or \-p). For instance, the kernel domain must be specified when enabling a
34kernel event.
50a3b92a 35
6991b181
DG
36In order to trace the kernel, the session daemon needs to be running as root.
37LTTng provides the use of a \fBtracing group\fP (default: tracing). Whomever is
38in that group can interact with the root session daemon and thus trace the
e256d661 39kernel. Session daemons can co-exist, meaning that you can have a session daemon
fa072eae 40running as Alice that can be used to trace her applications along side with a
e256d661 41root daemon or even a Bob daemon. We highly recommend starting the session
6991b181
DG
42daemon at boot time for stable and long term tracing.
43
274d6c5d
DG
44Each user-space application instrumented with lttng-ust(3) will automatically
45register with the root session daemon and its user session daemon. This allows
46each daemon to list the available traceable applications and tracepoints at any
47given moment (See the \fBlist\fP command).
6991b181
DG
48.SH "OPTIONS"
49
50.PP
51This program follow the usual GNU command line syntax with long options starting with
52two dashes. Below is a summary of the available options.
53.PP
54
55.TP
c9e32613 56.BR "\-h, \-\-help"
6991b181
DG
57Show summary of possible options and commands.
58.TP
c9e32613 59.BR "\-v, \-\-verbose"
6991b181 60Increase verbosity.
d829b38c 61Three levels of verbosity are available which are triggered by putting additional v to
fa072eae 62the option (\-vv or \-vvv)
6991b181 63.TP
c9e32613 64.BR "\-q, \-\-quiet"
6991b181
DG
65Suppress all messages (even errors).
66.TP
c9e32613 67.BR "\-g, \-\-group NAME"
6991b181
DG
68Set unix tracing group name. (default: tracing)
69.TP
c9e32613 70.BR "\-n, \-\-no-sessiond"
6991b181
DG
71Don't automatically spawn a session daemon.
72.TP
391b9c72 73.BR "\-\-sessiond\-path PATH"
6991b181
DG
74Set session daemon full binary path.
75.TP
c9e32613 76.BR "\-\-list\-options"
6991b181
DG
77Simple listing of lttng options.
78.TP
c9e32613 79.BR "\-\-list\-commands"
6991b181 80Simple listing of lttng commands.
ed43168a
JRJ
81.TP
82.BR "\-m, \-\-mi TYPE
83Machine interface
84
85TYPE supported: XML
86
87Machine interface (MI) mode converts the traditional pretty printing to a
88machine output syntax. MI mode provides a format change-resistant way to access
89information generated via the lttng command line.
90
91When using MI mode, the data is printed on \fBstdout\fP. Error and warning are
92printed on \fBstderr\fP with the pretty print default format.
93
94If any errors occur during the execution of a command, the return value of the
95command will be different than zero. In this case, lttng does NOT guarantee the
96syntax and data validity of the generated MI output.
97
98For XML output type, a schema definition (XSD) file used for validation can be
99found under src/common/mi_lttng.xsd
100
6991b181
DG
101.SH "COMMANDS"
102
812a5eb7 103.PP
ee2758e5 104\fBadd-context\fP [OPTIONS]
812a5eb7 105.RS
6991b181
DG
106Add context to event(s) and/or channel(s).
107
391b9c72
DG
108A context is basically extra information appended to a channel. For instance,
109you could ask the tracer to add the PID information for all events in a
110channel. You can also add performance monitoring unit counters (perf PMU) using
aa3514e9 111the perf kernel API.
6991b181 112
aa3514e9
MD
113For example, this command will add the context information 'prio' and two per-CPU
114perf counters (hardware branch misses and cache misses), to all events in the trace
6991b181
DG
115data output:
116
812a5eb7 117.nf
aa3514e9
MD
118# lttng add-context \-k \-t prio \-t perf:cpu:branch-misses \\
119 \-t perf:cpu:cache-misses
812a5eb7 120.fi
6991b181 121
c9e32613 122Please take a look at the help (\-h/\-\-help) for a detailed list of available
6991b181
DG
123contexts.
124
aa3514e9
MD
125Perf counters are available as per-CPU ("perf:cpu:...") and per-thread
126("perf:thread:...") counters. Currently, per-CPU counters can only be
127used with the kernel tracing domain, and per-thread counters can only be
128used with the UST tracing domain.
129
bd337b98
DG
130If no channel is given (\-c), the context is added to all channels that were
131already enabled. If the session has no channel, a default channel is created.
31ea4846 132Otherwise the context will be added only to the given channel (\-c).
6991b181 133
c9e32613 134If \fB\-s, \-\-session\fP is omitted, the session name is taken from the .lttngrc
6991b181 135file.
6991b181
DG
136
137.B OPTIONS:
138
812a5eb7
MD
139.TP
140.BR "\-h, \-\-help"
141Show summary of possible options and commands.
142.TP
143.BR "\-s, \-\-session NAME"
144Apply on session name.
145.TP
146.BR "\-c, \-\-channel NAME"
147Apply on channel name.
148.TP
149.BR "\-k, \-\-kernel"
150Apply for the kernel tracer
151.TP
152.BR "\-u, \-\-userspace"
153Apply for the user-space tracer
154.TP
155.BR "\-t, \-\-type TYPE"
156Context type. You can repeat this option on the command line. Please
157use "lttng add-context \-h" to list all available types.
158.RE
159.PP
6991b181 160
22019883
MD
161.PP
162\fBcalibrate\fP [OPTIONS]
163.RS
6991b181
DG
164Quantify LTTng overhead
165
166The LTTng calibrate command can be used to find out the combined average
167overhead of the LTTng tracer and the instrumentation mechanisms used. This
168overhead can be calibrated in terms of time or using any of the PMU performance
169counter available on the system.
170
171For now, the only calibration implemented is that of the kernel function
172instrumentation (kretprobes).
173
174* Calibrate kernel function instrumentation
175
176Let's use an example to show this calibration. We use an i7 processor with 4
177general-purpose PMU registers. This information is available by issuing dmesg,
178looking for "generic registers".
179
180This sequence of commands will gather a trace executing a kretprobe hooked on
181an empty function, gathering PMU counters LLC (Last Level Cache) misses
c9e32613 182information (see lttng add-context \-\-help to see the list of available PMU
6991b181
DG
183counters).
184
22019883 185.nf
6991b181 186# lttng create calibrate-function
22019883
MD
187# lttng enable-event calibrate \-\-kernel \\
188 \-\-function lttng_calibrate_kretprobe
aa3514e9
MD
189# lttng add-context \-\-kernel \-t perf:cpu:LLC-load-misses \\
190 \-t perf:cpu:LLC-store-misses \\
191 \-t perf:cpu:LLC-prefetch-misses
6991b181
DG
192# lttng start
193# for a in $(seq 1 10); do \\
c9e32613 194 lttng calibrate \-\-kernel \-\-function;
6991b181
DG
195 done
196# lttng destroy
22019883
MD
197# babeltrace $(ls \-1drt ~/lttng-traces/calibrate-function-* \\
198 | tail \-n 1)
199.fi
6991b181
DG
200
201The output from babeltrace can be saved to a text file and opened in a
202spreadsheet (e.g. oocalc) to focus on the per-PMU counter delta between
203consecutive "calibrate_entry" and "calibrate_return" events. Note that these
204counters are per-CPU, so scheduling events would need to be present to account
205for migration between CPU. Therefore, for calibration purposes, only events
206staying on the same CPU must be considered.
207
208The average result, for the i7, on 10 samples:
209
22019883 210.nf
6991b181
DG
211 Average Std.Dev.
212perf_LLC_load_misses: 5.0 0.577
213perf_LLC_store_misses: 1.6 0.516
214perf_LLC_prefetch_misses: 9.0 14.742
22019883 215.fi
6991b181
DG
216
217As we can notice, the load and store misses are relatively stable across runs
218(their standard deviation is relatively low) compared to the prefetch misses.
219We can conclude from this information that LLC load and store misses can be
220accounted for quite precisely, but prefetches within a function seems to behave
221too erratically (not much causality link between the code executed and the CPU
222prefetch activity) to be accounted for.
6991b181
DG
223
224.B OPTIONS:
225
22019883
MD
226.TP
227.BR "\-h, \-\-help"
228Show summary of possible options and commands.
229.TP
230.BR "\-k, \-\-kernel"
231Apply for the kernel tracer
232.TP
233.BR "\-u, \-\-userspace"
234Apply for the user-space tracer
235.TP
236.BR "\-\-function"
237Dynamic function entry/return probe (default)
238.RE
239.PP
6991b181 240
ee2758e5 241.PP
feb3ca56 242\fBcreate\fP [NAME] [OPTIONS]
ee2758e5 243.RS
6991b181
DG
244Create tracing session.
245
246A tracing session contains channel(s) which contains event(s). It is domain
e256d661 247agnostic, meaning that channels and events can be enabled for the
6991b181
DG
248user-space tracer and/or the kernel tracer. It acts like a container
249aggregating multiple tracing sources.
250
251On creation, a \fB.lttngrc\fP file is created in your $HOME directory
252containing the current session name. If NAME is omitted, a session name is
fa072eae 253automatically created having this form: 'auto-yyyymmdd-hhmmss'.
6991b181 254
c9e32613 255If no \fB\-o, \-\-output\fP is specified, the traces will be written in
6991b181 256$HOME/lttng-traces.
feb0f3e5
AM
257
258The $HOME environment variable can be overridden by defining the environment
259variable LTTNG_HOME. This is useful when the user running the commands has
260a non-writeable home directory.
6991b181 261
1c1c3634
DG
262The session name MUST NOT contain the character '/'.
263
6991b181
DG
264.B OPTIONS:
265
ee2758e5
MD
266.TP
267.BR "\-h, \-\-help"
268Show summary of possible options and commands.
269.TP
270.BR "\-\-list-options"
271Simple listing of options
272.TP
273.BR "\-o, \-\-output PATH"
274Specify output path for traces
275.TP
96fe6b8d
DG
276.BR "\-\-no-output"
277Traces will not be output
278.TP
ee2758e5 279.BR "\-\-snapshot"
96fe6b8d
DG
280Set the session in snapshot mode. Created in no-output mode and uses the
281URL, if one is specified, as the default snapshot output. Every channel will be set
ee2758e5 282in overwrite mode and with mmap output (splice not supported).
0794f51b 283.TP
d73c5802 284.BR "\-\-live [USEC]"
eb82f91d 285Set the session exclusively in live mode. The parameter is the delay in micro
0794f51b
DG
286seconds before the data is flushed and streamed. The live mode allows you to
287stream the trace and view it while it's being recorded by any tracer. For that,
288you need a lttng-relayd and this session requires a network URL (\-U or
d73c5802
DG
289\-C/\-D). If no USEC nor URL is provided, the default is to use a timer value
290set to 1000000 and the network URL set to net://127.0.0.1.
0794f51b
DG
291
292To read a live session, you can use babeltrace(1) or the live streaming
293protocol in doc/live-reading-protocol.txt. Here is an example:
294
295.nf
296$ lttng-relayd -o /tmp/lttng
297$ lttng create --live 200000 -U net://localhost
298$ lttng enable-event -a --userspace
299$ lttng start
300.fi
301
302After the start, you'll be able to read the events while they are being
303recorded in /tmp/lttng.
6b8f2e64 304
d7ba1388
MD
305.TP
306.BR "\-\-shm-path PATH"
307
308Path where shared memory holding buffers should be created. Useful
309when used with pramfs to extract trace data after crash.
310
ee2758e5
MD
311.TP
312.BR "\-U, \-\-set-url=URL"
313Set URL for the consumer output destination. It is persistent for the
314session lifetime. Redo the command to change it. This will set both data
315and control URL for network.
316.TP
317.BR "\-C, \-\-ctrl-url=URL"
318Set control path URL. (Must use -D also)
319.TP
320.BR "\-D, \-\-data-url=URL"
321Set data path URL. (Must use -C also)
322.PP
6b8f2e64
DG
323Using these options, each API call can be controlled individually. For
324instance, \-C does not enable the consumer automatically. You'll need the \-e
325option for that.
326
785d2d0d
DG
327.B URL FORMAT:
328
329proto://[HOST|IP][:PORT1[:PORT2]][/TRACE_PATH]
330
331Supported protocols are (proto):
ee2758e5
MD
332.TP
333.BR "file://..."
334Local filesystem full path.
785d2d0d 335
ee2758e5
MD
336.TP
337.BR "net://..."
338This will use the default network transport layer which is TCP for both
339control (PORT1) and data port (PORT2). The default ports are
340respectively 5342 and 5343. Note that net[6]:// is not yet supported.
785d2d0d 341
ee2758e5
MD
342.TP
343.BR "tcp[6]://..."
344Can only be used with -C and -D together
785d2d0d
DG
345
346NOTE: IPv6 address MUST be enclosed in brackets '[]' (rfc2732)
6b8f2e64
DG
347
348.B EXAMPLES:
349
ee2758e5 350.nf
6b8f2e64 351# lttng create -U net://192.168.1.42
ee2758e5 352.fi
6b8f2e64
DG
353Uses TCP and default ports for the given destination.
354
ee2758e5 355.nf
6b8f2e64 356# lttng create -U net6://[fe80::f66d:4ff:fe53:d220]
ee2758e5 357.fi
6b8f2e64
DG
358Uses TCP, default ports and IPv6.
359
ee2758e5 360.nf
6b8f2e64 361# lttng create s1 -U net://myhost.com:3229
6991b181 362.fi
ee2758e5
MD
363Create session s1 and set its consumer to myhost.com on port 3229 for control.
364.RE
365.PP
6991b181 366
f2b14ef1
MD
367.PP
368\fBdestroy\fP [NAME] [OPTIONS]
369.RS
6991b181
DG
370Teardown tracing session
371
372Free memory on the session daemon and tracer side. It's gone!
373
374If NAME is omitted, the session name is taken from the .lttngrc file.
6991b181
DG
375
376.B OPTIONS:
377
f2b14ef1
MD
378.TP
379.BR "\-h, \-\-help"
380Show summary of possible options and commands.
381.TP
382.BR "\-a, \-\-all"
383Destroy all sessions
384.TP
385.BR "\-\-list-options"
386Simple listing of options
387.RE
388.PP
6991b181 389
05be3802
MD
390.PP
391\fBenable-channel\fP NAME[,NAME2,...] (\-k | \-u) [OPTIONS]
392.RS
6991b181
DG
393Enable tracing channel
394
004f3466
DG
395To enable an event, you must enable both the event and the channel that
396contains it.
b883c01b 397
c9e32613 398If \fB\-s, \-\-session\fP is omitted, the session name is taken from the .lttngrc
6991b181 399file.
7972aab2 400
05be3802
MD
401Exactly one of \-k or -u must be specified.
402
7972aab2 403It is important to note that if a certain type of buffers is used, the session
bd337b98 404will be set with that type and all other subsequent channel needs to have the
7972aab2 405same type.
bd337b98 406
d2f11c4a
DG
407Note that once the session has been started and enabled on the tracer side,
408it's not possible anymore to enable a new channel for that session.
6991b181
DG
409
410.B OPTIONS:
411
05be3802
MD
412.TP
413.BR "\-h, \-\-help"
414Show this help
415.TP
416.BR "\-\-list-options"
417Simple listing of options
418.TP
419.BR "\-s, \-\-session NAME"
420Apply on session name
421.TP
422.BR "\-k, \-\-kernel"
423Apply to the kernel tracer
424.TP
425.BR "\-u, \-\-userspace"
426Apply to the user-space tracer
427.TP
428.BR "\-\-discard"
429Discard event when subbuffers are full (default)
430.TP
431.BR "\-\-overwrite"
33fbd469
DG
432Flight recorder mode: overwrites events when subbuffers are full. The
433number of subbuffer must be 2 or more.
05be3802
MD
434.TP
435.BR "\-\-subbuf-size SIZE"
436Subbuffer size in bytes {+k,+M,+G}.
437(default UST uid: 131072, UST pid: 4096, kernel: 262144, metadata: 4096)
438Rounded up to the next power of 2.
439
440The minimum subbuffer size, for each tracer, is the max value between
441the default above and the system page size. You can issue this command
442to get the current page size on your system: \fB$ getconf PAGE_SIZE\fP
443.TP
444.BR "\-\-num-subbuf NUM"
445Number of subbuffers. (default UST uid: 4, UST pid: 4, kernel: 4,
446metadata: 2) Rounded up to the next power of 2.
447.TP
448.BR "\-\-switch-timer USEC"
449Switch subbuffer timer interval in µsec.
450(default UST uid: 0, UST pid: 0, kernel: 0, metadata: 0)
451.TP
452.BR "\-\-read-timer USEC"
453Read timer interval in µsec.
454(default UST uid: 0, UST pid: 0, kernel: 200000, metadata: 0)
455.TP
456.BR "\-\-output TYPE"
457Channel output type. Possible values: mmap, splice
458(default UST uid: mmap, UST pid: mmap, kernel: splice, metadata: mmap)
459.TP
460.BR "\-\-buffers-uid"
461Use per UID buffer (\-u only). Buffers are shared between applications
462that have the same UID.
463.TP
464.BR "\-\-buffers-pid"
465Use per PID buffer (\-u only). Each application has its own buffers.
466.TP
467.BR "\-\-buffers-global"
468Use shared buffer for the whole system (\-k only)
469.TP
470.BR "\-C, \-\-tracefile-size SIZE"
471Maximum size of each tracefile within a stream (in bytes).
4720 means unlimited. (default: 0)
c0684a0d 473Note: traces generated with this option may inaccurately report
a10f04ad 474discarded events as of CTF 1.8.
05be3802
MD
475.TP
476.BR "\-W, \-\-tracefile-count COUNT"
477Used in conjunction with \-C option, this will limit the number of files
478created to the specified count. 0 means unlimited. (default: 0)
1624d5b7
JD
479
480.B EXAMPLES:
481
05be3802
MD
482.nf
483$ lttng enable-channel -k -C 4096 -W 32 chan1
484.fi
e256d661 485For each stream, the maximum size of each trace file will be 4096 bytes and
cea28771 486there will be a maximum of 32 different files. The file count is appended after
1624d5b7
JD
487the stream number as seen in the following example. The last trace file is
488smaller than 4096 since it was not completely filled.
489
05be3802 490.nf
1624d5b7
JD
491 ~/lttng-traces/[...]/chan1_0_0 (4096)
492 ~/lttng-traces/[...]/chan1_0_1 (4096)
493 ~/lttng-traces/[...]/chan1_0_2 (3245)
494 ~/lttng-traces/[...]/chan1_1_0 (4096)
495 ...
05be3802 496.fi
1624d5b7 497
05be3802
MD
498.nf
499$ lttng enable-channel -k -C 4096
500.fi
1624d5b7
JD
501This will create trace files of 4096 bytes and will create new ones as long as
502there is data available.
05be3802
MD
503.RE
504.PP
6991b181 505
6a240cd9
MD
506.PP
507\fBenable-event\fP NAME[,NAME2,...] [-k|-u] [OPTIONS]
508.RS
6991b181
DG
509Enable tracing event
510
c9e32613 511A tracing event is always assigned to a channel. If \fB\-c, \-\-channel\fP is
6991b181 512omitted, a default channel named '\fBchannel0\fP' is created and the event is
85076754
MD
513added to it. If \fB\-c, \-\-channel\fP is omitted, but a non-default
514channel already exists within the session, an error is returned. For the
515user-space tracer, using \fB\-a, \-\-all\fP is the same as using the
516wildcard "*".
6991b181 517
c9e32613 518If \fB\-s, \-\-session\fP is omitted, the session name is taken from the .lttngrc
6991b181 519file.
6991b181
DG
520
521.B OPTIONS:
522
6a240cd9
MD
523.TP
524.BR "\-h, \-\-help"
525Show summary of possible options and commands.
526.TP
527.BR "\-\-list-options"
528Simple listing of options
529.TP
530.BR "\-s, \-\-session NAME"
531Apply on session name
532.TP
533.BR "\-c, \-\-channel NAME"
534Apply on channel name
535.TP
536.BR "\-a, \-\-all"
e256d661 537Enable all tracepoints and syscalls. This actually enables a single
6a240cd9
MD
538wildcard event "*".
539.TP
540.BR "\-k, \-\-kernel"
541Apply for the kernel tracer
542.TP
543.BR "\-u, \-\-userspace"
544Apply for the user-space tracer
545.TP
bed69e7d
DG
546.BR "\-j, \-\-jul"
547Apply for Java application using Java Util Logging interface (JUL)
548.TP
222e4eab
DG
549.BR "\-l, \-\-log4j"
550Apply for Java application using LOG4J
551.TP
0e115563
DG
552.BR "\-p, \-\-python"
553Apply for Python application using the logging module.
554.TP
6a240cd9 555.BR "\-\-tracepoint"
e256d661 556Tracepoint event (default). Userspace tracer supports wildcards at the end
6a240cd9
MD
557of string. Don't forget to quote to deal with bash expansion.
558e.g.:
6991b181 559.nf
6991b181
DG
560 "*"
561 "app_component:na*"
6991b181 562.fi
6a240cd9
MD
563.TP
564.BR "\-\-loglevel NAME"
565Tracepoint loglevel range from 0 to loglevel. Listed in the help (\-h).
f9e8873b
DG
566For the JUL domain, the loglevel ranges are detailed with the \-\-help
567option thus starting from SEVERE to FINEST.
999ee001
DG
568For the LOG4J domain, loglevels range from FATAL to TRACE which are also
569detailed in the help.
0e115563
DG
570For the Python domain, loglevels range from CRITICAL to DEBUG which are
571detailed in the help as well.
6a240cd9
MD
572.TP
573.BR "\-\-loglevel-only NAME"
574Tracepoint loglevel (only this loglevel).
575The loglevel or loglevel-only options should be combined with a
576tracepoint name or tracepoint wildcard.
577.TP
578.BR "\-\-probe (addr | symbol | symbol+offset)"
579Dynamic probe. Addr and offset can be octal (0NNN...), decimal (NNN...)
580or hexadecimal (0xNNN...)
581.TP
582.BR "\-\-function (addr | symbol | symbol+offset)"
583Dynamic function entry/return probe. Addr and offset can be octal
584(0NNN...), decimal (NNN...) or hexadecimal (0xNNN...)
585.TP
586.BR "\-\-syscall"
587System call event. Enabling syscalls tracing (kernel tracer), you will
588not be able to disable them with disable-event. This is a known
627dbfd8
CB
589limitation. You can disable the entire channel to do the trick. Also note
590that per-syscall selection is not supported yet. Use with "-a" to enable
591all syscalls.
6a240cd9
MD
592.TP
593.BR "\-\-filter 'expression'"
594Set a filter on a newly enabled event. Filter expression on event
e256d661
JG
595fields and context. The event will be recorded if the filter's
596expression evaluates to TRUE. Only specify on first activation of a
597given event within a session.
598Specifying a filter is only allowed when enabling events within a session before
6a240cd9
MD
599tracing is started. If the filter fails to link with the event
600within the traced domain, the event will be discarded.
e256d661 601Filtering is currently only implemented for the user-space tracer.
6a240cd9
MD
602
603Expression examples:
604
605.nf
606 'intfield > 500 && intfield < 503'
607 '(strfield == "test" || intfield != 10) && intfield > 33'
608 'doublefield > 1.1 && intfield < 5.3'
609.fi
610
611Wildcards are allowed at the end of strings:
612 'seqfield1 == "te*"'
613In string literals, the escape character is a '\\'. Use '\\*' for
e256d661
JG
614the '*' character, and '\\\\' for the '\\' character sequence. Wildcard
615matches any sequence of characters, including an empty sub-string
616(matches 0 or more characters).
6a240cd9 617
e256d661
JG
618Context information can be used for filtering. The examples below shows
619usage of context filtering on the process name (using a wildcard), process ID
620range, and unique thread ID. The process and thread IDs of
6a240cd9
MD
621running applications can be found under columns "PID" and "LWP" of the
622"ps -eLf" command.
623
624.nf
625 '$ctx.procname == "demo*"'
626 '$ctx.vpid >= 4433 && $ctx.vpid < 4455'
627 '$ctx.vtid == 1234'
628.fi
629
11139b74
DG
630Context information is available to all filters whether or not the add-context
631command has been used to add it to the event's channel, as long as the context
632field exists for that domain. For example, the filter examples given above will
633never fail to link: no add-context is required for the event's channel.
634
bccd20a3
JI
635.TP
636.BR "\-x, \-\-exclude LIST"
637Add exclusions to UST tracepoints:
638Events that match any of the items in the comma-separated LIST are not
639enabled, even if they match a wildcard definition of the event.
640
641This option is also applicable with the \fB\-a, \-\-all\fP option,
642in which case all UST tracepoints are enabled except the ones whose
643names match any of the items in LIST.
6a240cd9
MD
644.RE
645.PP
6991b181 646
272c6a17
MD
647.PP
648\fBdisable-channel\fP NAME[,NAME2,...] (\-k | \-u) [OPTIONS]
649.RS
6991b181
DG
650Disable tracing channel
651
e256d661 652Disabling a channel disables the tracing of all of the channel's events. A channel
5368d366 653can be re-enabled by calling \fBlttng enable-channel NAME\fP again.
6991b181 654
c9e32613 655If \fB\-s, \-\-session\fP is omitted, the session name is taken from the .lttngrc
6991b181 656file.
6991b181
DG
657
658.B OPTIONS:
659
272c6a17
MD
660.TP
661.BR "\-h, \-\-help"
662Show summary of possible options and commands.
663.TP
664.BR "\-\-list-options"
665Simple listing of options
666.TP
667.BR "\-s, \-\-session NAME"
668Apply on session name
669.TP
670.BR "\-k, \-\-kernel"
671Apply for the kernel tracer
672.TP
673.BR "\-u, \-\-userspace"
674Apply for the user-space tracer
675.RE
676.PP
6991b181 677
c138a39b
MD
678.PP
679\fBdisable-event\fP NAME[,NAME2,...] (\-k | \-u) [OPTIONS]
680.RS
6991b181
DG
681Disable tracing event
682
683The event, once disabled, can be re-enabled by calling \fBlttng enable-event
684NAME\fP again.
685
c9e32613 686If \fB\-s, \-\-session\fP is omitted, the session name is taken from the .lttngrc
6991b181 687file.
6991b181 688
85076754
MD
689If \fB\-c, \-\-channel\fP is omitted, the default channel name is used.
690If \fB\-c, \-\-channel\fP is omitted, but a non-default channel already
691exists within the session, an error is returned.
692
6991b181
DG
693.B OPTIONS:
694
c138a39b
MD
695.TP
696.BR "\-h, \-\-help"
697Show summary of possible options and commands.
698.TP
699.BR "\-\-list-options"
700Simple listing of options
701.TP
702.BR "\-s, \-\-session NAME"
703Apply on session name
704.TP
85076754
MD
705.BR "\-c, \-\-channel NAME"
706Apply on channel name
707.TP
c138a39b
MD
708.BR "\-a, \-\-all-events"
709Disable all events. This does NOT disable "*" but rather every known
710events of the session.
711.TP
712.BR "\-k, \-\-kernel"
713Apply for the kernel tracer
714.TP
715.BR "\-u, \-\-userspace"
716Apply for the user-space tracer
bed69e7d
DG
717.TP
718.BR "\-j, \-\-jul"
719Apply for Java application using Java Util Logging interface (JUL)
222e4eab
DG
720.TP
721.BR "\-l, \-\-log4j"
722Apply for Java application using LOG4J
0e115563
DG
723.TP
724.BR "\-p, \-\-python"
725Apply for Python application using the logging module.
c138a39b
MD
726.RE
727.PP
6991b181 728
747361fe
MD
729.PP
730\fBlist\fP [OPTIONS] [SESSION [SESSION OPTIONS]]
731.RS
c9e32613 732List tracing session information.
6991b181
DG
733
734With no arguments, it will list available tracing session(s).
735
fa072eae
YB
736With the session name, it will display the details of the session including
737the trace file path, the associated channels and their state (activated
d829b38c 738and deactivated), the activated events and more.
fa072eae 739
c9e32613 740With \-k alone, it will list all available kernel events (except the system
6991b181 741calls events).
bed69e7d
DG
742With \-j alone, the available JUL event from registered application will be
743list. The event corresponds to the Logger name in the Java JUL application.
999ee001
DG
744With \-l alone, the available LOG4J event from registered application will be
745list. The event corresponds to the Logger name in the Java LOG4J application.
0e115563
DG
746With \-p alone, the available Python event from registered application will be
747list. The event corresponds to the Logger name in the Python application.
c9e32613
DG
748With \-u alone, it will list all available user-space events from registered
749applications. Here is an example of 'lttng list \-u':
6991b181 750
747361fe 751.nf
6991b181
DG
752PID: 7448 - Name: /tmp/lttng-ust/tests/hello/.libs/lt-hello
753 ust_tests_hello:tptest_sighandler (type: tracepoint)
754 ust_tests_hello:tptest (type: tracepoint)
747361fe 755.fi
6991b181
DG
756
757You can now enable any event listed by using the name :
758\fBust_tests_hello:tptest\fP.
6991b181
DG
759
760.B OPTIONS:
761
747361fe
MD
762.TP
763.BR "\-h, \-\-help"
764Show summary of possible options and commands.
765.TP
766.BR "\-\-list-options"
767Simple listing of options
768.TP
769.BR "\-k, \-\-kernel"
770Select kernel domain
771.TP
772.BR "\-u, \-\-userspace"
773Select user-space domain.
bed69e7d
DG
774.TP
775.BR "\-j, \-\-jul"
776Apply for Java application using JUL
777.TP
222e4eab
DG
778.BR "\-l, \-\-log4j"
779Apply for Java application using LOG4J
0e115563
DG
780.TP
781.BR "\-p, \-\-python"
782Apply for Python application using the logging module.
783.TP
bed69e7d
DG
784.BR "\-f, \-\-fields"
785List event fields
6991b181 786
747361fe 787.PP
6b8f2e64
DG
788.B SESSION OPTIONS:
789
747361fe
MD
790.TP
791.BR "\-c, \-\-channel NAME"
792List details of a channel
793.TP
794.BR "\-d, \-\-domain"
795List available domain(s)
796.RE
797.PP
6991b181 798
516f6cbe
JG
799.PP
800\fBload\fP [OPTIONS] [NAME]
801.RS
802Load tracing session configuration
803
804If NAME is omitted, all session configurations found in both the user's session
bd88d988 805configuration directory (default: ~/.lttng/sessions/) and the system session
cf53c06d
DG
806configuration directory (default: /etc/lttng/sessions/) will be loaded. Note
807that the sessions in the user directory are loaded first and then the system
808wide directory are loaded.
516f6cbe
JG
809
810.B OPTIONS:
811
812.TP
813.BR "\-h, \-\-help"
814Show summary of possible options and commands.
815.TP
816.BR "\-a, \-\-all"
817Load all session configurations (default).
818.TP
819.BR "\-i, \-\-input-path PATH"
bd88d988
DG
820Specify the input path for session configurations. This overrides the default
821session configuration directory.
516f6cbe
JG
822.TP
823.BR "\-f, -\-force"
824Overwrite current session configuration(s) if a session of the same name
825already exists.
826.RE
827.PP
828
829.PP
830\fBsave\fP [OPTIONS] [SESSION]
831.RS
832Save tracing session configuration
833
834If SESSION is omitted, all session configurations will be saved to individual
553067af 835\fB.lttng\fP files under the user's session configuration directory (default:
bd88d988
DG
836~/.lttng/sessions/). The default session configuration file naming scheme is
837\fBSESSION.lttng\fP.
516f6cbe 838
cf53c06d
DG
839For instance, a user in the tracing group saving a session from a root session
840daemon will save it in her/his user directory.
841
516f6cbe
JG
842.B OPTIONS:
843
844.TP
845.BR "\-h, \-\-help"
846Show summary of possible options and commands.
847.TP
848.BR "\-a, \-\-all"
849Save all session configurations (default).
850.TP
851.BR "\-o, \-\-output-path PATH"
553067af
DG
852Specify the output path for saved sessions. This overrides the default session
853configuration directory.
516f6cbe
JG
854.TP
855.BR "\-f, -\-force"
856Overwrite session configuration file if session name clashes.
857.RE
858.PP
859
7c96a096
MD
860.PP
861\fBset-session\fP NAME [OPTIONS]
862.RS
6991b181
DG
863Set current session name
864
865Will change the session name in the .lttngrc file.
6991b181
DG
866
867.B OPTIONS:
868
7c96a096
MD
869.TP
870.BR "\-h, \-\-help"
871Show summary of possible options and commands.
872.TP
873.BR "\-\-list-options"
874Simple listing of options
875.RE
876.PP
6991b181 877
8df3bfe9
MD
878.PP
879\fBsnapshot\fP [OPTIONS] ACTION
880.RS
b872baea 881Snapshot command for LTTng session.
b872baea
DG
882
883.B OPTIONS:
884
8df3bfe9
MD
885.TP
886.BR "\-h, \-\-help"
887Show summary of possible options and commands.
888.TP
889.BR "\-\-list-options"
890Simple listing of options
b872baea 891
8df3bfe9 892.PP
b872baea
DG
893.B ACTION:
894
8df3bfe9 895.TP
b872baea
DG
896\fBadd-output\fP [-m <SIZE>] [-s <NAME>] [-n <NAME>] <URL> | -C <URL> -D <URL>
897
88743287 898Setup and add a snapshot output for a session. Output is the destination
b872baea
DG
899where the snapshot will be sent. Only one output is permitted. To change it,
900you'll need to delete it and add back the new one.
901
8df3bfe9 902.TP
b872baea
DG
903\fBdel-output\fP ID | NAME [-s <NAME>]
904
88743287
JG
905Delete an output for a session using the output's ID. You can either specify the
906output by name or use its ID as returned by the list-output command.
b872baea 907
8df3bfe9 908.TP
b872baea
DG
909\fBlist-output\fP [-s <NAME>]
910
911List the output of a session. Attributes of the output are printed.
912
8df3bfe9 913.TP
b872baea
DG
914\fBrecord\fP [-m <SIZE>] [-s <NAME>] [-n <NAME>] [<URL> | -C <URL> -D <URL>]
915
916Snapshot a session's buffer(s) for all domains. If an URL is specified, it is
917used instead of a previously added output. Specifying only a name or/and a max
918size will override the current output values. For instance, you can record a
919snapshot with a custom maximum size or with a different name.
920
8df3bfe9 921.nf
1ac1098f 922$ lttng snapshot add-output -n mysnapshot file:///data/snapshot
b872baea
DG
923[...]
924$ lttng snapshot record -n new_name_snapshot
8df3bfe9 925.fi
b872baea
DG
926
927The above will create a snapshot in /data/snapshot/new_name_snapshot* directory
928rather then in mysnapshot*/
b872baea 929
8df3bfe9
MD
930.PP
931.B DETAILED ACTION OPTIONS
b872baea 932
8df3bfe9
MD
933.TP
934.BR "\-s, \-\-session NAME"
935Apply to session name.
936.TP
937.BR "\-n, \-\-name NAME"
938Name of the snapshot's output.
939.TP
940.BR "\-m, \-\-max-size SIZE"
eb82f91d 941Maximum size in bytes of the snapshot. The maximum size does not include the
a8f307d8
SM
942metadata file. Human readable format is accepted: {+k,+M,+G}. For instance,
943\-\-max-size 5M
8df3bfe9
MD
944.TP
945.BR "\-C, \-\-ctrl-url URL"
946Set control path URL. (Must use -D also)
947.TP
948.BR "\-D, \-\-data-url URL"
949Set data path URL. (Must use -C also)
950.RE
951.PP
b872baea 952
afb8ca1b
MD
953.PP
954\fBstart\fP [NAME] [OPTIONS]
955.RS
6991b181
DG
956Start tracing
957
958It will start tracing for all tracers for a specific tracing session.
6991b181 959If NAME is omitted, the session name is taken from the .lttngrc file.
6991b181
DG
960
961.B OPTIONS:
962
afb8ca1b
MD
963.TP
964.BR "\-h, \-\-help"
965Show summary of possible options and commands.
966.TP
967.BR "\-\-list-options"
968Simple listing of options
969.RE
970.PP
6991b181 971
6c09bfdb
MD
972.PP
973\fBstop\fP [NAME] [OPTIONS]
974.RS
6991b181
DG
975Stop tracing
976
391b9c72
DG
977It will stop tracing for all tracers for a specific tracing session. Before
978returning, the command checks for data availability meaning that it will wait
979until the trace is readable for the session. Use \-\-no-wait to avoid this
980behavior.
6991b181
DG
981
982If NAME is omitted, the session name is taken from the .lttngrc file.
6991b181
DG
983
984.B OPTIONS:
985
6c09bfdb
MD
986.TP
987.BR "\-h, \-\-help"
988Show summary of possible options and commands.
989.TP
990.BR "\-\-list-options"
991Simple listing of options
3a7a166e
MJ
992.TP
993.BR "\-\-no-wait"
6c09bfdb
MD
994Don't wait for data availability.
995.RE
996.PP
6991b181 997
5975c30a
MD
998.PP
999\fBversion\fP
1000.RS
6991b181 1001Show version information
6991b181
DG
1002
1003.B OPTIONS:
1004
5975c30a
MD
1005.TP
1006.BR "\-h, \-\-help"
1007Show summary of possible options and commands.
1008.TP
1009.BR "\-\-list-options"
1010Simple listing of options
1011.RE
1012.PP
6991b181 1013
5b4c1410
MD
1014.PP
1015\fBview\fP [SESSION_NAME] [OPTIONS]
1016.RS
1017View traces of a tracing session. By default, the babeltrace viewer
1018will be used for text viewing. If SESSION_NAME is omitted, the session
1019name is taken from the .lttngrc file.
6991b181
DG
1020
1021.B OPTIONS:
1022
5b4c1410
MD
1023.TP
1024.BR "\-h, \-\-help"
1025Show this help
1026.TP
1027.BR "\-\-list-options"
1028Simple listing of options
1029.TP
1030.BR "\-t, \-\-trace-path PATH"
1031Trace directory path for the viewer
1032.TP
1033.BR "\-e, \-\-viewer CMD"
1034Specify viewer and/or options to use This will completely override the
1035default viewers so please make sure to specify the full command. The
1036trace directory path of the session will be appended at the end to the
1037arguments
1038.RE
1039.PP
6991b181 1040
999ee001
DG
1041.SH "JUL/LOG4J DOMAIN"
1042
1043This section explains the JUL and LOG4J domain where JUL stands for Java Util
1044Logging. You can use these by using the \fBliblttng-ust-<domain>-jni.so\fP from
1045the lttng-ust(3) project.
acf47627
DG
1046
1047The LTTng Java Agent uses JNI to link the UST tracer to the Java application
1048that uses the agent. Thus, it behaves similarly to the UST domain (\-u). When
999ee001
DG
1049enabling events, you enable a Logger name that will then be mapped to a default
1050UST tracepoint called \fBlttng_jul:<domain>_event\fP in the
1051\fBlttng_<domain>_channel\fP. Using the lttng-ctl API, any JUL/LOG4J events
1052must use the tracepoint event type (same as \-\-tracepoint).
acf47627 1053
999ee001
DG
1054Because of the default immutable channel, the \fBenable-channel\fP command CAN
1055NOT be used with the JUL and LOG4J domain thus not having any options.
acf47627 1056
999ee001
DG
1057Also, loglevels are supported. Use \fBlttng enable-event \-h\fP to list them.
1058Wildcards are NOT supported except the "*" meaning all events (same as \-a).
acf47627
DG
1059
1060Exactly like the UST domain, if the Java application has the same UID as you,
1061you can trace it. Same goes for the tracing group accessing root applications.
1062
999ee001
DG
1063Finally, you can list every Logger name that are available from registered
1064applications to the session daemon by using \fBlttng list \-j\fP or \fB\-l\fP.
acf47627 1065
999ee001 1066Here is an example on how to use the JUL domain.
acf47627
DG
1067
1068.nf
1069$ lttng list -j
1070[...]
1071$ lttng create aSession
1072$ lttng enable-event -s aSession -j MyCustomLoggerName
1073$ lttng start
1074.fi
1075
1076More information can be found in the lttng-ust documentation, see
1077java-util-logging.txt
1078.PP
1079
c206d957 1080.SH "EXIT VALUES"
b107a0b1 1081.PP
6b8f2e64
DG
1082On success 0 is returned and a positive value on error. Value of 1 means a command
1083error, 2 an undefined command, 3 a fatal error and 4 a command warning meaning that
1084something went wrong during the command.
c206d957 1085
6b8f2e64 1086Any other value above 10, please refer to
b107a0b1 1087.BR "<lttng/lttng-error.h>"
6b8f2e64
DG
1088for a detailed list or use lttng_strerror() to get a human readable string of
1089the error code.
c206d957 1090.PP
b107a0b1 1091
6991b181
DG
1092.SH "ENVIRONMENT VARIABLES"
1093
1094.PP
1095Note that all command line options override environment variables.
1096.PP
1097
1098.PP
05833633 1099.IP "LTTNG_SESSIOND_PATH"
c9e32613
DG
1100Allows one to specify the full session daemon binary path to lttng command line
1101tool. You can also use \-\-sessiond-path option having the same effect.
b107a0b1
MD
1102.PP
1103
516f6cbe
JG
1104.PP
1105.IP "LTTNG_SESSION_CONFIG_XSD_PATH"
1106Set the path in which the \fBsession.xsd\fP session configuration schema may be
1107found.
1108.PP
1109
6991b181 1110.SH "SEE ALSO"
6b8f2e64
DG
1111.BR babeltrace(1),
1112.BR lttng-ust(3),
1113.BR lttng-sessiond(8),
1114.BR lttng-relayd(8),
b107a0b1 1115
6991b181
DG
1116.SH "BUGS"
1117
b107a0b1 1118.PP
6991b181 1119If you encounter any issues or usability problem, please report it on our
6b8f2e64 1120mailing list <lttng-dev@lists.lttng.org> to help improve this project or
eb82f91d 1121at https://bugs.lttng.org which is a bug tracker.
b107a0b1
MD
1122.PP
1123
6991b181
DG
1124.SH "CREDITS"
1125
1126.PP
c9e32613 1127lttng is distributed under the GNU General Public License version 2. See the file
6991b181
DG
1128COPYING for details.
1129.PP
1130A Web site is available at http://lttng.org for more information on the LTTng
1131project.
1132.PP
1133You can also find our git tree at http://git.lttng.org.
1134.PP
1135Mailing lists for support and development: <lttng-dev@lists.lttng.org>.
1136.PP
1137You can find us on IRC server irc.oftc.net (OFTC) in #lttng.
1138.PP
1139.SH "THANKS"
1140
1141.PP
1142Thanks to Yannick Brosseau without whom this project would never have been so
1143lean and mean! Also thanks to the Ericsson teams working on tracing which
fa072eae 1144helped us greatly with detailed bug reports and unusual test cases.
6991b181
DG
1145
1146Thanks to our beloved packager Alexandre Montplaisir-Goncalves (Ubuntu and PPA
1147maintainer) and Jon Bernard for our Debian packages.
1148
1149Special thanks to Michel Dagenais and the DORSAL laboratory at Polytechnique de
1150Montreal for the LTTng journey.
c9e32613 1151.PP
6991b181
DG
1152.SH "AUTHORS"
1153
1154.PP
1155lttng-tools was originally written by Mathieu Desnoyers, Julien Desfossez and
1156David Goulet. More people have since contributed to it. It is currently
9b22d135 1157maintained by Jérémie Galarneau <jeremie.galarneau@efficios.com>.
6991b181 1158.PP
This page took 0.087415 seconds and 4 git commands to generate.