Use compiler-agnostic defines to silence warning
[lttng-tools.git] / doc / man / lttng-enable-event.1.txt
... / ...
CommitLineData
1lttng-enable-event(1)
2=====================
3:revdate: 14 June 2021
4
5
6NAME
7----
8lttng-enable-event - Create or enable LTTng recording event rules
9
10
11SYNOPSIS
12--------
13Create or enable one or more recording event rules to match Linux kernel
14tracepoint or system call events:
15
16[verse]
17*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* option:--kernel [option:--tracepoint | option:--syscall]
18 (option:--all | 'NAME'[,'NAME']...) [option:--filter='EXPR']
19 [option:--session='SESSION'] [option:--channel='CHANNEL']
20
21Create or enable a recording event rule to match Linux kernel events
22created from a dynamic instrumentation point:
23
24[verse]
25*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* option:--kernel
26 (option:--probe='LOC' | option:--function='LOC' | option:--userspace-probe='LOC') 'RECORDNAME'
27 [option:--session='SESSION'] [option:--channel='CHANNEL']
28
29Create or enable one or more recording event rules to match
30user space tracepoint events:
31
32[verse]
33*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* option:--userspace [option:--tracepoint]
34 (option:--all | 'NAME'[,'NAME']...) [option:--exclude='XNAME'[,'XNAME']...]
35 [option:--loglevel='LOGLEVEL' | option:--loglevel-only='LOGLEVEL'] [option:--filter='EXPR']
36 [option:--session='SESSION'] [option:--channel='CHANNEL']
37
38Create or enable one or more recording event rules to match
39Java/Python logging events:
40
41[verse]
42*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* (option:--jul | option:--log4j | option:--log4j2 | option:--python)
43 [option:--tracepoint] (option:--all | 'NAME'[,'NAME']...)
44 [option:--loglevel='LOGLEVEL' | option:--loglevel-only='LOGLEVEL'] [option:--filter='EXPR']
45 [option:--session='SESSION'] [option:--channel='CHANNEL']
46
47DESCRIPTION
48-----------
49The `lttng enable-event` command does one of:
50
51* Create one or more recording event rules.
52
53* Enable one or more disabled recording event rules.
54+
55See the ``<<enable,Enable a disabled recording event rule>>'' section
56below.
57
58See man:lttng-concepts(7) to learn more about instrumentation points,
59events, recording event rules, and event records.
60
61The recording event rule(s) to create or enable belong to:
62
63With the option:--session='SESSION' option::
64 The recording session named 'SESSION'.
65
66Without the option:--session option::
67 The current recording session (see man:lttng-concepts(7) to learn
68 more about the current recording session).
69
70With the option:--channel='CHANNEL' option::
71 The channel named 'CHANNEL'.
72
73Without the option:--channel option::
74 The channel named `channel0`.
75+
76If there's already a channel for the selected recording session and
77domain which isn't named `channel0`, the `enable-event` command fails.
78Otherwise, it automatically creates it.
79
80See the ``<<examples,EXAMPLES>>'' section below for usage examples.
81
82List the recording event rules of a specific recording session
83and/or channel with the man:lttng-list(1) and man:lttng-status(1)
84commands.
85
86Disable an enabled recording event rule with the
87man:lttng-disable-event(1) command.
88
89
90Overview of recording event rule conditions
91~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92For LTTng to emit and record an event{nbsp}__E__,{nbsp}__E__ must
93satisfy *all* the conditions of a recording event rule{nbsp}__ER__, that
94is:
95
96Explicit conditions::
97 You set the following conditions when you create or
98 enable{nbsp}__ER__ with the `enable-event` command:
99+
100--
101* The instrumentation point type from which LTTng creates{nbsp}__E__
102 has a specific type.
103+
104See the ``<<inst-point-type-cond,Instrumentation point type
105condition>>'' section below.
106
107* A pattern matches the name of{nbsp}__E__ while another pattern
108 doesn't.
109+
110See the ``<<event-name-cond,Event name condition>>'' section below.
111
112* The log level of the instrumentation point from which LTTng
113 creates{nbsp}__E__ is at least as severe as some value, or is exactly
114 some value.
115+
116See the ``<<inst-point-log-level-cond,Instrumentation point log level
117condition>>'' section below.
118
119* The fields of the payload of{nbsp}__E__ and the current context fields
120 satisfy a filter expression.
121+
122See the ``<<filter-cond,Event payload and context filter condition>>''
123section below.
124--
125
126Implicit conditions::
127+
128--
129* _ER_ itself is enabled.
130+
131A recording event rule is enabled on creation.
132+
133Enable a disabled recording event rule with the `enable-event` command.
134
135* The channel to which{nbsp}__ER__ is attached is enabled.
136+
137A channel is enabled on creation.
138+
139Enable a disabled channel with the man:lttng-enable-channel(1) command.
140
141* The recording session of{nbsp}__ER__ is active (started).
142+
143A recording session is inactive (stopped) on creation.
144+
145Start an inactive recording session with the man:lttng-start(1) command.
146
147* The process for which LTTng creates{nbsp}__E__ is allowed to record
148 events.
149+
150All processes are allowed to record events on recording session
151creation.
152+
153Use the man:lttng-track(1) and man:lttng-untrack(1) commands to select
154which processes are allowed to record events based on specific process
155attributes.
156--
157
158The dedicated command-line options of most conditions are optional: if
159you don't specify the option, the associated condition is always
160satisfied.
161
162
163[[inst-point-type-cond]]
164Instrumentation point type condition
165~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166An event{nbsp}__E__ satisfies the instrumentation point type condition
167of a recording event rule if the instrumentation point from which LTTng
168creates{nbsp}__E__ is:
169
170For the Linux kernel tracing domain (option:--kernel option)::
171 With the option:--tracepoint option or without any other instrumentation point type option:::
172 An LTTng kernel tracepoint, that is, a statically defined point
173 in the source code of the kernel image or of a kernel module
174 with LTTng kernel tracer macros.
175+
176As of LTTng{nbsp}{lttng_version}, this is the default instrumentation
177point type of the Linux kernel tracing domain, but this may change in
178the future.
179+
180List the available Linux kernel tracepoints with `lttng list --kernel`.
181See man:lttng-list(1) to learn more.
182
183 With the option:--syscall option:::
184 The entry and exit of a Linux kernel system call.
185+
186List the available Linux kernel system call instrumentation points with
187`lttng list --kernel --syscall`. See man:lttng-list(1) to learn more.
188
189 With the option:--probe option:::
190 A Linux kprobe, that is, a single probe dynamically placed in
191 the compiled kernel code.
192+
193The argument of the option:--probe option is the location of the
194kprobe to insert, either a symbol or a
195memory address, while 'RECORDNAME' is the name of the record
196of{nbsp}__E__ (see the ``<<er-name,Event record name>>'' section below).
197+
198The payload of a Linux kprobe event is empty.
199
200 With the option:--userspace-probe option:::
201 A Linux user space probe, that is, a single probe dynamically
202 placed at the entry of a compiled user space application/library
203 function through the kernel.
204+
205The argument of the option:--userspace-probe option is the location
206of the user space probe to insert, one of:
207+
208--
209* A path and symbol (ELF method).
210* A path, provider name, and probe name (SystemTap User-level Statically
211 Defined Tracing (USDT) method; a DTrace-style marker).
212+
213As of LTTng{nbsp}{lttng_version}, LTTng only supports USDT probes which
214are :not: reference-counted.
215--
216+
217'RECORDNAME' is the name of the record of{nbsp}__E__ (see the
218``<<er-name,Event record name>>'' section below).
219+
220The payload of a Linux user space probe event is empty.
221
222 With the option:--function option:::
223 A Linux kretprobe, that is, two probes dynamically placed at the
224 entry and exit of a function in the compiled kernel code.
225+
226The argument of the option:--function option is the location of the
227Linux kretprobe to insert, either a symbol or
228a memory address, while 'RECORDNAME' is the name of the record
229of{nbsp}__E__ (see the ``<<er-name,Event record name>>'' section below).
230+
231The payload of a Linux kretprobe event is empty.
232
233For the user space tracing domain (option:--userspace option)::
234 With or without the option:--tracepoint option:::
235 An LTTng user space tracepoint, that is, a statically defined
236 point in the source code of a C/$$C++$$ application/library with
237 LTTng user space tracer macros.
238+
239As of LTTng{nbsp}{lttng_version}, this is the default and sole
240instrumentation point type of the user space tracing domain, but this
241may change in the future.
242+
243List the available user space tracepoints with `lttng list --userspace`.
244See man:lttng-list(1) to learn more.
245
246For the `java.util.logging` (option:--jul option), Apache 1.x log4j (option:--log4j option), Apache 2.x log4j (option:--log4j2 option), and Python (option:--python option) tracing domains::
247 With or without the option:--tracepoint option:::
248 A logging statement.
249+
250As of LTTng{nbsp}{lttng_version}, this is the default and sole
251instrumentation point type of the `java.util.logging`, Apache Log4j 1.x, Apache
252log4j 2.x, and Python tracing domains, but this may change in the future.
253+
254List the available Java and Python loggers with `lttng list --jul`,
255`lttng list --log4j`, `lttng list --log4j2`, and `lttng list --python`.
256See man:lttng-list(1) to learn more.
257
258
259[[event-name-cond]]
260Event name condition
261~~~~~~~~~~~~~~~~~~~~
262An event{nbsp}__E__ satisfies the event name condition of a recording
263event rule{nbsp}__ER__ if the two following statements are true:
264
265* You specify the option:--all option or, depending on the
266 instrumentation type condition (see the
267 ``<<inst-point-type-cond,Instrumentation point type condition>>''
268 section above) of{nbsp}__ER__, 'NAME' matches:
269+
270--
271LTTng tracepoint::
272 The full name of the tracepoint from which LTTng creates{nbsp}__E__.
273+
274Note that the full name of a user space tracepoint is
275__PROVIDER__++:++__NAME__, where __PROVIDER__ is the tracepoint provider
276name and __NAME__ is the tracepoint name.
277
278Logging statement::
279 The name of the Java or Python logger from which LTTng
280 creates{nbsp}__E__.
281
282Linux system call::
283 The name of the system call, without any `sys_` prefix, from which
284 LTTng creates{nbsp}__E__.
285--
286
287* You don't specify the option:--exclude=__XNAME__[++,++__XNAME__]...
288 option or, depending on the instrumentation type condition
289 of{nbsp}__ER__, none of the 'XNAME' arguments matches the full name of
290 the user space tracepoint from which LTTng creates{nbsp}__E__.
291+
292The option:--exclude option is only available with the option:--userspace
293option.
294
295This condition is only meaningful for the LTTng tracepoint, logging
296statement, and Linux system call instrumentation point types: it's
297always satisfied for the other types.
298
299In all cases, 'NAME' and 'XNAME' are globbing patterns: the `*`
300character means ``match anything''. To match a literal `*` character,
301use :escwc:. To match a literal `,` character, use
302:esccomma:.
303
304IMPORTANT: Make sure to **single-quote** 'NAME' and 'XNAME' when they
305contain the `*` character and when you run the `enable-event` command
306from a shell.
307
308With the LTTng tracepoint, logging statement, and Linux system call
309instrumentation point types, the `enable-event` command creates or
310enables one independent recording event rule per 'NAME' argument
311(non-option, comma-separated). With the option:--all option, the
312`enable-event` command creates or enables a single recording event rule.
313
314
315[[inst-point-log-level-cond]]
316Instrumentation point log level condition
317~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
318An event{nbsp}__E__ satisfies the instrumentation point log level
319condition of a recording event rule if either:
320
321* The option:--loglevel and option:--loglevel-only options are
322 missing.
323
324* The log level of the LTTng user space tracepoint or logging statement
325 which creates{nbsp}__E__ is:
326 With the option:--loglevel='LOGLEVEL' option::
327 At least as severe as 'LOGLEVEL'.
328
329 With the option:--loglevel-only='LOGLEVEL' option::
330 Exactly 'LOGLEVEL'.
331
332This condition is only meaningful for the LTTng user space tracepoint
333and logging statement instrumentation point types: it's always satisfied
334for other types.
335
336The available values of 'LOGLEVEL' are, depending on the tracing domain,
337from the most to the least severe:
338
339User space (option:--userspace option)::
340+
341* `EMERG` (0)
342* `ALERT` (1)
343* `CRIT` (2)
344* `ERR` (3)
345* `WARNING` (4)
346* `NOTICE` (5)
347* `INFO` (6)
348* `DEBUG_SYSTEM` (7)
349* `DEBUG_PROGRAM` (8)
350* `DEBUG_PROCESS` (9)
351* `DEBUG_MODULE` (10)
352* `DEBUG_UNIT` (11)
353* `DEBUG_FUNCTION` (12)
354* `DEBUG_LINE` (13)
355* `DEBUG` (14)
356
357`java.util.logging` (option:--jul option)::
358+
359* `OFF` (`INT32_MAX`)
360* `SEVERE` (1000)
361* `WARNING` (900)
362* `INFO` (800)
363* `CONFIG` (700)
364* `FINE` (500)
365* `FINER` (400)
366* `FINEST` (300)
367* `ALL` (`INT32_MIN`)
368
369Apache Log4j 1.x (option:--log4j option)::
370+
371* `OFF` (`INT32_MAX`)
372* `FATAL` (50000)
373* `ERROR` (40000)
374* `WARN` (30000)
375* `INFO` (20000)
376* `DEBUG` (10000)
377* `TRACE` (5000)
378* `ALL` (`INT32_MIN`)
379
380Apache Log4j 2 (option:--log4j2 option)::
381+
382* `OFF` (`0`)
383* `FATAL` (100)
384* `ERROR` (200)
385* `WARN` (300)
386* `INFO` (400)
387* `DEBUG` (500)
388* `TRACE` (600)
389* `ALL` (`INT32_MAX`)
390
391Python (option:--python option)::
392+
393* `CRITICAL` (50)
394* `ERROR` (40)
395* `WARNING` (30)
396* `INFO` (20)
397* `DEBUG` (10)
398* `NOTSET` (0)
399
400
401[[filter-cond]]
402Event payload and context filter condition
403~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
404An event{nbsp}__E__ satisfies the event payload and context filter
405condition of a recording event rule if the option:--filter='EXPR'
406option is missing or if 'EXPR' is _true_.
407
408This condition is only meaningful for the LTTng tracepoint and Linux
409system call instrumentation point types: it's always satisfied for other
410types.
411
412'EXPR' can contain references to the payload fields of{nbsp}__E__ and
413to the current context fields.
414
415IMPORTANT: Make sure to **single-quote** 'EXPR' when you run the
416`enable-event` command from a shell, as filter expressions typically
417include characters having a special meaning for most shells.
418
419The expected syntax of 'EXPR' is similar to the syntax of a
420C{nbsp}language conditional expression (an expression which an `if`
421statement can evaluate), but there are a few differences:
422
423* A _NAME_ expression identifies an event payload field named
424 _NAME_ (a C{nbsp}identifier).
425+
426Use the C{nbsp}language dot and square bracket notations to access
427nested structure and array/sequence fields. You can only use a constant,
428positive integer number within square brackets. If the index is out of
429bounds, 'EXPR' is _false_.
430+
431The value of an enumeration field is an integer.
432+
433When a field expression doesn't exist, 'EXPR' is _false_.
434+
435Examples: `my_field`, `target_cpu`, `seq[7]`, `msg.user[1].data[2][17]`.
436
437* A ++$ctx.++__TYPE__ expression identifies the statically-known context
438 field having the type _TYPE_ (a C{nbsp}identifier).
439+
440List the available statically-known context field names with the
441man:lttng-add-context(1) command.
442+
443When a field expression doesn't exist, 'EXPR' is _false_.
444+
445Examples: `$ctx.prio`, `$ctx.preemptible`,
446`$ctx.perf:cpu:stalled-cycles-frontend`.
447
448* A ++$app.++__PROVIDER__++:++__TYPE__ expression identifies the
449 application-specific context field having the type _TYPE_ (a
450 C{nbsp}identifier) from the provider _PROVIDER_ (a C{nbsp}identifier).
451+
452When a field expression doesn't exist, 'EXPR' is _false_.
453+
454Example: `$app.server:cur_user`.
455
456* Compare strings, either string fields or string literals
457 (double-quoted), with the `==` and `!=` operators.
458+
459When comparing to a string literal, the `*` character means ``match
460anything''. To match a literal `*` character, use :escwc:.
461+
462Examples: `my_field == "user34"`, `my_field == my_other_field`,
463`my_field == "192.168.*"`.
464
465* The precedence table of the operators which are supported in 'EXPR'
466 is as follows. In this table, the highest precedence is{nbsp}1:
467+
468[options="header"]
469|===
470|Precedence |Operator |Description |Associativity
471|1 |`-` |Unary minus |Right-to-left
472|1 |`+` |Unary plus |Right-to-left
473|1 |`!` |Logical NOT |Right-to-left
474|1 |`~` |Bitwise NOT |Right-to-left
475|2 |`<<` |Bitwise left shift |Left-to-right
476|2 |`>>` |Bitwise right shift |Left-to-right
477|3 |`&` |Bitwise AND |Left-to-right
478|4 |`^` |Bitwise XOR |Left-to-right
479|5 |`\|` |Bitwise OR |Left-to-right
480|6 |`<` |Less than |Left-to-right
481|6 |`<=` |Less than or equal to |Left-to-right
482|6 |`>` |Greater than |Left-to-right
483|6 |`>=` |Greater than or equal to |Left-to-right
484|7 |`==` |Equal to |Left-to-right
485|7 |`!=` |Not equal to |Left-to-right
486|8 |`&&` |Logical AND |Left-to-right
487|9 |`\|\|` |Logical OR |Left-to-right
488|===
489+
490Parentheses are supported to bypass the default order.
491+
492IMPORTANT: Unlike the C{nbsp}language, the bitwise AND and OR operators
493(`&` and `|`) in 'EXPR' take precedence over relational operators (`<`,
494`<=`, `>`, `>=`, `==`, and `!=`). This means the expression `2 & 2 == 2`
495is _true_ while the equivalent C{nbsp}expression is _false_.
496+
497The arithmetic operators are :not: supported.
498+
499LTTng first casts all integer constants and fields to signed 64-bit
500integers. The representation of negative integers is two's complement.
501This means that, for example, the signed 8-bit integer field 0xff (-1)
502becomes 0xffffffffffffffff (still -1) once casted.
503+
504Before a bitwise operator is applied, LTTng casts all its operands to
505unsigned 64-bit integers, and then casts the result back to a signed
50664-bit integer. For the bitwise NOT operator, it's the equivalent of
507this C{nbsp}expression:
508+
509[source,c]
510----
511(int64_t) ~((uint64_t) val)
512----
513+
514For the binary bitwise operators, it's the equivalent of those
515C{nbsp}expressions:
516+
517[source,c]
518----
519(int64_t) ((uint64_t) lhs >> (uint64_t) rhs)
520(int64_t) ((uint64_t) lhs << (uint64_t) rhs)
521(int64_t) ((uint64_t) lhs & (uint64_t) rhs)
522(int64_t) ((uint64_t) lhs ^ (uint64_t) rhs)
523(int64_t) ((uint64_t) lhs | (uint64_t) rhs)
524----
525+
526If the right-hand side of a bitwise shift operator (`<<` and `>>`) is
527not in the [0,{nbsp}63] range, then 'EXPR' is _false_.
528
529[NOTE]
530====
531Use the man:lttng-track(1) and man:lttng-untrack(1) commands to allow or
532disallow processes to record LTTng events based on their attributes
533instead of using equivalent statically-known context fields in 'EXPR'
534like `$ctx.pid`.
535
536The former method is much more efficient.
537====
538
539'EXPR' examples:
540
541----------------------------
542msg_id == 23 && size >= 2048
543----------------------------
544
545-------------------------------------------------
546$ctx.procname == "lttng*" && (!flag || poel < 34)
547-------------------------------------------------
548
549---------------------------------------------------------
550$app.my_provider:my_context == 17.34e9 || some_enum >= 14
551---------------------------------------------------------
552
553---------------------------------------
554$ctx.cpu_id == 2 && filename != "*.log"
555---------------------------------------
556
557------------------------------------------------
558eax_reg & 0xff7 == 0x240 && x[4] >> 12 <= 0x1234
559------------------------------------------------
560
561
562[[er-name]]
563Event record name
564~~~~~~~~~~~~~~~~~
565When LTTng records an event{nbsp}__E__, the resulting event record has a
566name which depends on the instrumentation point type condition (see the
567``<<inst-point-type-cond,Instrumentation point type condition>>''
568section above) of the recording event rule which matched{nbsp}__E__:
569
570LTTng tracepoint (option:--kernel/option:--userspace and option:--tracepoint options)::
571 Full name of the tracepoint from which LTTng creates{nbsp}__E__.
572+
573Note that the full name of a user space tracepoint is
574__PROVIDER__++:++__NAME__, where __PROVIDER__ is the tracepoint provider
575name and __NAME__ is the tracepoint name.
576
577`java.util.logging` logging statement (option:--jul and option:--tracepoint options)::
578 `lttng_jul:event`
579+
580Such an event record has a string field `logger_name` which contains the
581name of the `java.util.logging` logger from which LTTng
582creates{nbsp}__E__.
583
584Apache Log4j 1.x logging statement (option:--log4j and option:--tracepoint options)::
585 `lttng_log4j:event`
586+
587Such an event record has a string field `logger_name` which contains the
588name of the Apache Log4j 1.x logger from which LTTng creates{nbsp}__E__.
589
590Apache Log4j 2 logging statement (option:--log4j2 and option:--tracepoint options)::
591 `lttng_log4j2:event`
592+
593Such an event record has a string field `logger_name` which contains the
594name of the Apache Log4j 2 logger from which LTTng creates{nbsp}__E__.
595
596Python logging statement (option:--python and option:--tracepoint options)::
597 `lttng_python:event`
598+
599Such an event record has a string field `logger_name` which contains the
600name of the Python logger from which LTTng creates{nbsp}__E__.
601
602Linux system call (option:--kernel and option:--syscall options)::
603 Entry:::
604 ++syscall_entry_++__NAME__, where _NAME_ is the name of the
605 system call from which LTTng creates{nbsp}__E__, without any
606 `sys_` prefix.
607
608 Exit:::
609 ++syscall_exit_++__NAME__, where _NAME_ is the name of the
610 system call from which LTTng creates{nbsp}__E__, without any
611 `sys_` prefix.
612
613Linux kprobe (option:--kernel and option:--probe options)::
614Linux user space probe (option:--kernel and option:--userspace-probe options)::
615 'RECORDNAME' (first non-option argument).
616
617Linux kretprobe (option:--kernel and option:--function options)::
618 Entry:::
619 __RECORDNAME__++_entry++
620
621 Exit:::
622 __RECORDNAME__++_exit++
623
624
625[[enable]]
626Enable a disabled recording event rule
627~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
628The `enable-event` command can enable a disabled recording event rule,
629as listed in the output of the man:lttng-list(1) command.
630
631You may enable a disabled recording event rule regardless of the
632activity (started or stopped) of its recording session (see
633man:lttng-start(1) and man:lttng-stop(1)).
634
635To enable a disabled recording event rule, run the `enable-event`
636command with the exact same options and arguments that you used to
637create it. In particular, with the option:--filter='EXPR' option, 'EXPR'
638must be the exact same string as the one you used on creation.
639
640
641include::common-lttng-cmd-options-head.txt[]
642
643
644Tracing domain
645~~~~~~~~~~~~~~
646One of:
647
648option:-j, option:--jul::
649 Create or enable recording event rules in the `java.util.logging`
650 (JUL) tracing domain.
651
652option:-k, option:--kernel::
653 Create or enable recording event rules in the Linux kernel tracing
654 domain.
655
656option:-l, option:--log4j::
657 Create or enable recording event rules in the Apache Log4j 1.x tracing
658 domain.
659
660option:--log4j2::
661 Create or enable recording event rules in the Apache Log4j 2 tracing
662 domain.
663
664option:-p, option:--python::
665 Create or enable recording event rules in the Python tracing domain.
666
667option:-u, option:--userspace::
668 Create or enable recording event rules in the user space tracing
669 domain.
670
671
672Recording target
673~~~~~~~~~~~~~~~~
674option:-c 'CHANNEL', option:--channel='CHANNEL'::
675 Create or enable recording event rules attached to the channel named
676 'CHANNEL' instead of `channel0`.
677
678option:-s 'SESSION', option:--session='SESSION'::
679 Create or enable recording event rules in the recording session
680 named 'SESSION' instead of the current recording session.
681
682
683Instrumentation point type condition
684~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
685See the ``<<inst-point-type-cond,Instrumentation point type
686condition>>'' section above.
687
688At most one of:
689
690option:--function='LOC'::
691 Only match Linux kretprobe events.
692+
693Only available with the option:--kernel option.
694+
695'LOC' is one of:
696+
697--
698* A function address (`0x` hexadecimal prefix supported).
699* A function symbol name.
700* A function symbol name and an offset
701 (__SYMBOL__++pass:[+]++__OFFSET__ format).
702--
703+
704You must specify the event record name with 'RECORDNAME'. See the
705``<<er-name,Event record name>>'' section above to learn more.
706
707option:--probe='LOC'::
708 Only match Linux kprobe events.
709+
710Only available with the option:--kernel option.
711+
712'LOC' is one of:
713+
714--
715* An address (`0x` hexadecimal prefix supported).
716* A symbol name.
717* A symbol name and an offset (__SYMBOL__++pass:[+]++__OFFSET__ format).
718--
719+
720You must specify the event record name with 'RECORDNAME'. See the
721``<<er-name,Event record name>>'' section above to learn more.
722
723option:--userspace-probe='LOC'::
724 Only match Linux user space probe events.
725+
726Only available with the option:--kernel option.
727+
728'LOC' is one of:
729+
730--
731\[++elf:++]__PATH__++:++__SYMBOL__::
732 Probe an available symbol within a user space application or
733 library.
734+
735--
736'PATH'::
737 Application or library path.
738+
739One of:
740+
741* An absolute path.
742* A relative path.
743* The name of an application as found in the directories listed in the
744 `PATH` environment variable.
745
746'SYMBOL'::
747 Symbol name of the function of which to instrument the entry.
748+
749'SYMBOL' can be any defined code symbol in the output of the man:nm(1)
750command, including with its nloption:--dynamic option, which lists
751dynamic symbols.
752--
753+
754As of LTTng{nbsp}{lttng_version}, not specifying `elf:` is equivalent to
755specifying it, but this default may change in the future.
756+
757Examples:
758+
759* `--userspace-probe=/usr/lib/libc.so.6:malloc`
760* `--userspace-probe=./myapp:createUser`
761* `--userspace-probe=elf:httpd:ap_run_open_htaccess`
762
763++sdt:++__PATH__++:++__PROVIDER__++:++__NAME__::
764 Use a SystemTap User-level Statically Defined Tracing (USDT) probe
765 within a user space application or library.
766+
767--
768'PATH'::
769 Application or library path.
770+
771This can be:
772+
773* An absolute path.
774* A relative path.
775* The name of an application as found in the directories listed in the
776 `PATH` environment variable.
777
778'PROVIDER'::
779'NAME'::
780 USDT provider and probe names.
781+
782For example, with the following USDT probe:
783+
784[source,c]
785----
786DTRACE_PROBE2("server", "accept_request",
787 request_id, ip_addr);
788----
789+
790The provider/probe name pair is `server:accept_request`.
791--
792+
793Example: `--userspace-probe=sdt:./build/server:server:accept_request`
794--
795+
796You must specify the event record name with 'RECORDNAME'. See the
797``<<er-name,Event record name>>'' section above to learn more.
798
799option:--syscall::
800 Only match Linux system call events.
801+
802Only available with the option:--kernel option.
803
804option:--tracepoint::
805 Only match:
806+
807With the option:--kernel or option:--userspace option:::
808 LTTng tracepoint events.
809With the option:--jul, option:--log4j, option:--log4j2, or option:--python option:::
810 Logging events.
811
812With the option:--kernel, not specifying any of the instrumentation
813point type options is equivalent to specifying the option:--tracepoint
814option, but this default may change in the future.
815
816With the option:--userspace, option:--jul, option:--log4j, option:--log4j2, and
817option:--python options, not specifying the option:--tracepoint option
818is equivalent to specifying it, but this default may change in the
819future.
820
821
822Event name condition
823~~~~~~~~~~~~~~~~~~~~
824See the ``<<event-name-cond,Event name condition>>'' section above.
825
826option:-a, option:--all::
827 Equivalent to a single 'NAME' argument (LTTng tracepoint or logger
828 name) set to `*` (match anything).
829+
830You may :not: use this option with a 'NAME' argument.
831
832option:-x 'XNAME'[,'XNAME']..., option:--exclude='XNAME'[,'XNAME']...::
833 Only match events of which none of the 'XNAME' arguments
834 matches the full name of the LTTng user space tracepoint.
835+
836Only available with the option:--userspace option.
837+
838'XNAME' is a globbing pattern: the `*` character means ``match
839anything''. To match a literal `*` character, use :escwc:. To match
840a literal `,` character, use :esccomma:.
841
842
843Instrumentation point log level condition
844~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
845See the ``<<inst-point-log-level-cond,Instrumentation point log level
846condition>>'' section above.
847
848At most one of:
849
850option:--loglevel='LOGLEVEL'::
851 Only match events of which the log level of the LTTng tracepoint or
852 logging statement is at least as severe as 'LOGLEVEL'.
853
854option:--loglevel-only='LOGLEVEL'::
855 Only match events of which the log level of the LTTng tracepoint or
856 logging statement is exactly 'LOGLEVEL'.
857
858The instrumentation point log level options above are :not: available
859with the option:--kernel option.
860
861
862Event payload and context filter condition
863~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
864See the ``<<filter-cond,Event payload and context filter condition>>''
865section above.
866
867option:-f 'EXPR', option:--filter='EXPR'::
868 Only match events of which 'EXPR', which can contain references to
869 event payload and current context fields, is _true_.
870+
871This option is only available with the option:--tracepoint or
872option:--syscall option.
873
874
875include::common-lttng-cmd-help-options.txt[]
876
877
878include::common-lttng-cmd-after-options.txt[]
879
880
881[[examples]]
882EXAMPLES
883--------
884.Create a recording event rule which matches all Linux system call events (current recording session, default channel).
885====
886See the option:--all and option:--syscall options.
887
888[role="term"]
889----
890$ lttng enable-event --kernel --all --syscall
891----
892====
893
894.Create a recording event rule which matches user space tracepoint events named specifically (current recording session, default channel).
895====
896The recording event rule below matches all user space tracepoint events
897of which the name starts with `my_provider:msg`.
898
899[role="term"]
900----
901$ lttng enable-event --userspace 'my_provider:msg*'
902----
903====
904
905.Create three recording event rules which match Python logging events named specifically (current recording session, default channel).
906====
907[role="term"]
908----
909$ lttng enable-event --python server3,ui.window,user-mgmt
910----
911====
912
913.Create a recording event rule which matches Apache Log4j 1.x logging events with a specific log level range (current recording session, specific channel).
914====
915See the option:--channel, option:--all, and option:--loglevel options.
916
917[role="term"]
918----
919$ lttng enable-event --log4j --channel=my-loggers \
920 --all --loglevel=INFO
921----
922====
923
924.Create a recording event rule which matches Apache Log4j 2 logging events with a specific log level range (current recording session, specific channel).
925====
926See the option:--channel, option:--all, and option:--loglevel options.
927
928[role="term"]
929----
930$ lttng enable-event --log4j2 --channel=my-loggers \
931 --all --loglevel=INFO
932----
933====
934
935.Create a recording event rule which matches specific Linux kprobe events (current recording session, default channel).
936====
937The recording event rule below matches the entry of `usb_disconnect()`
938Linux kernel function calls. The records of such events are named `usbd`
939(see the ``<<er-name,Event record name>>'' section above).
940
941See the option:--probe option.
942
943[role="term"]
944----
945$ lttng enable-event --kernel --probe=usb_disconnect usbd
946----
947====
948
949.Create a recording event rule which matches Linux kernel tracepoint events which satisfy an event payload and context filter (specific recording session, default channel).
950====
951See the option:--session and option:--filter options.
952
953[role="term"]
954----
955$ lttng enable-event --kernel --session=my-session 'sched_*' \
956 --filter='$ctx.preemptible && comm != "systemd*"'
957----
958====
959
960.Enable two Linux kernel tracepoint recording event rules (current recording session, specific channel).
961====
962See the option:--channel option.
963
964[role="term"]
965----
966$ lttng enable-event --kernel --channel=tva ja,wendy
967----
968====
969
970
971include::common-footer.txt[]
972
973
974SEE ALSO
975--------
976man:lttng(1),
977man:lttng-disable-event(1),
978man:lttng-enable-channel(1),
979man:lttng-list(1),
980man:lttng-start(1),
981man:lttng-track(1),
982man:lttng-concepts(7)
This page took 0.033647 seconds and 5 git commands to generate.