X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=2.9%2Flttng-docs-2.9.txt;h=b32a6b67721de62e275ce57ef1f2fae8a4d886f7;hb=7f7f2c46317f57ac78d15a04e60646340ca07415;hp=7fcf4108f96f7e66c9ba4debe574cf94ea3a61d7;hpb=db5a45eee68d92fee0b7694a27bee1fc4385bcce;p=lttng-docs.git diff --git a/2.9/lttng-docs-2.9.txt b/2.9/lttng-docs-2.9.txt index 7fcf410..b32a6b6 100644 --- a/2.9/lttng-docs-2.9.txt +++ b/2.9/lttng-docs-2.9.txt @@ -1,12 +1,15 @@ The LTTng Documentation ======================= Philippe Proulx -v2.9, 8 December 2016 +v2.9, 22 January 2018 include::../common/copyright.txt[] +include::../common/warning-not-maintained.txt[] + + include::../common/welcome.txt[] @@ -98,7 +101,7 @@ New features and changes in LTTng{nbsp}{revision}: -- [role="term"] ---- -lttng add-context --kernel --type=perf:cpu:raw:r0013c:x86unhalted +$ lttng add-context --kernel --type=perf:cpu:raw:r0013c:x86unhalted ---- -- + @@ -340,71 +343,108 @@ but note that: applications. [role="growable"] -.Availability of LTTng{nbsp}{revision} for major Linux distributions as of 2 December 2016. +.Availability of LTTng{nbsp}{revision} for major Linux distributions as of 22 January 2018. |==== |Distribution |Available in releases |Alternatives |https://www.ubuntu.com/[Ubuntu] -|Ubuntu{nbsp}14.04 _Trusty Tahr_ and Ubuntu{nbsp}16.04 _Xenial Xerus_: -<>. -|link:/docs/v2.8#doc-ubuntu[LTTng{nbsp}2.8 for Ubuntu{nbsp}16.10 _Yakkety Yak_]. +|<>. -<> for +Ubuntu{nbsp}14.04 _Trusty Tahr_ and Ubuntu{nbsp}16.04 _Xenial Xerus_: +<>. +|<> for other Ubuntu releases. |https://getfedora.org/[Fedora] -|_Not available_ -|<>. +|<>. +|link:/docs/v2.10#doc-fedora[LTTng{nbsp}2.10 for Fedora{nbsp}27]. + +<> for +other Fedora releases. |https://www.debian.org/[Debian] -|_Not available_ -|<>. +|<>. +|link:/docs/v2.10#doc-debian[LTTng{nbsp}2.10 for Debian "buster" (testing) +and Debian "sid" (unstable)]. -|https://www.opensuse.org/[openSUSE] -|_Not available_ -|<>. + +<> for +other Debian releases. |https://www.archlinux.org/[Arch Linux] -|<>. -| +|_Not available_ +|link:/docs/v2.10#doc-arch-linux[LTTng{nbsp}2.10 for the current Arch Linux build]. + +<>. |https://alpinelinux.org/[Alpine Linux] |_Not available_ -|link:/docs/v2.8#doc-alpine-linux[LTTng{nbsp}2.8 for Alpine Linux{nbsp}"edge"]. +|link:/docs/v2.10#doc-alpine-linux[LTTng{nbsp}2.10 for Alpine Linux{nbsp}3.7 +and Alpine Linux{nbsp}"edge"]. -LTTng{nbsp}2.8 for Alpine Linux{nbsp}3.5 (not released yet). - -<> for -other Alpine Linux releases. +<>. |https://www.redhat.com/[RHEL] and https://www.suse.com/[SLES] |See http://packages.efficios.com/[EfficiOS Enterprise Packages]. | |https://buildroot.org/[Buildroot] -|_Not available_ -|link:/docs/v2.8#doc-buildroot[LTTng{nbsp}2.8 for Buildroot{nbsp}2016.11]. - -<> for +|<<"buildroot", "Buildroot{nbsp}2017.02, Buildroot{nbsp}2017.05, Buildroot{nbsp}2017.08, and Buildroot{nbsp}2017.11">>. +|<> for other Buildroot releases. |http://www.openembedded.org/wiki/Main_Page[OpenEmbedded] and https://www.yoctoproject.org/[Yocto] -|_Not available_ -|link:/docs/v2.8#doc-oe-yocto[LTTng{nbsp}2.8 for Yocto Project{nbsp}2.2 _Morty_] +|<> (`openembedded-core` layer). - -<> for -other OpenEmbedded releases. +|<> for +other Yocto/OpenEmbedded releases. |==== [[ubuntu]] === [[ubuntu-official-repositories]]Ubuntu +LTTng{nbsp}{revision} is available on Ubuntu{nbsp}17.04 _Zesty Zapus_ +and Ubuntu{nbsp}17.10 _Artful Aardvark_. For previous releases of +Ubuntu, <>. + +To install LTTng{nbsp}{revision} on Ubuntu{nbsp}17.04 _Zesty Zapus_: + +. Install the main LTTng{nbsp}{revision} packages: ++ +-- +[role="term"] +---- +# apt-get install lttng-tools +# apt-get install lttng-modules-dkms +# apt-get install liblttng-ust-dev +---- +-- + +. **If you need to instrument and trace + <>**, install the LTTng-UST + Java agent: ++ +-- +[role="term"] +---- +# apt-get install liblttng-ust-agent-java +---- +-- + +. **If you need to instrument and trace + <>**, install the + LTTng-UST Python agent: ++ +-- +[role="term"] +---- +# apt-get install python3-lttngust +---- +-- + + [[ubuntu-ppa]] ==== noch:{LTTng} Stable {revision} PPA @@ -423,8 +463,8 @@ To install LTTng{nbsp}{revision} from the LTTng Stable{nbsp}{revision} PPA: -- [role="term"] ---- -sudo apt-add-repository ppa:lttng/stable-2.9 -sudo apt-get update +# apt-add-repository ppa:lttng/stable-2.9 +# apt-get update ---- -- @@ -433,9 +473,9 @@ sudo apt-get update -- [role="term"] ---- -sudo apt-get install lttng-tools -sudo apt-get install lttng-modules-dkms -sudo apt-get install liblttng-ust-dev +# apt-get install lttng-tools +# apt-get install lttng-modules-dkms +# apt-get install liblttng-ust-dev ---- -- @@ -446,7 +486,7 @@ sudo apt-get install liblttng-ust-dev -- [role="term"] ---- -sudo apt-get install liblttng-ust-agent-java +# apt-get install liblttng-ust-agent-java ---- -- @@ -457,25 +497,82 @@ sudo apt-get install liblttng-ust-agent-java -- [role="term"] ---- -sudo apt-get install python3-lttngust +# apt-get install python3-lttngust ---- -- -[[arch-linux]] -=== Arch Linux +[[fedora]] +=== Fedora -To install LTTng{nbsp}{revision} on Arch Linux using -https://archlinux.fr/yaourt-en[Yaourt]: +To install LTTng{nbsp}{revision} on Fedora{nbsp}26: + +. Install the LTTng-tools{nbsp}{revision} and LTTng-UST{nbsp}{revision} + packages: ++ +-- +[role="term"] +---- +# yum install lttng-tools +# yum install lttng-ust +---- +-- + +. Download, build, and install the latest LTTng-modules{nbsp}{revision}: ++ +-- +[role="term"] +---- +$ cd $(mktemp -d) && +wget http://lttng.org/files/lttng-modules/lttng-modules-latest-2.9.tar.bz2 && +tar -xf lttng-modules-latest-2.9.tar.bz2 && +cd lttng-modules-2.9.* && +make && +sudo make modules_install && +sudo depmod -a +---- +-- + +[IMPORTANT] +.Java and Python application instrumentation and tracing +==== +If you need to instrument and trace <> on Fedora, you need to build and install +LTTng-UST{nbsp}{revision} <> and pass +the `--enable-java-agent-jul`, `--enable-java-agent-log4j`, or +`--enable-java-agent-all` options to the `configure` script, depending +on which Java logging framework you use. + +If you need to instrument and trace <> on Fedora, you need to build and install +LTTng-UST{nbsp}{revision} from source and pass the +`--enable-python-agent` option to the `configure` script. +==== + + +[[debian]] +=== Debian + +To install LTTng{nbsp}{revision} on Debian "stretch" (stable): . Install the main LTTng{nbsp}{revision} packages: + -- [role="term"] ---- -yaourt -S lttng-tools -yaourt -S lttng-ust -yaourt -S lttng-modules +# apt-get install lttng-modules-dkms +# apt-get install liblttng-ust-dev +# apt-get install lttng-tools +---- +-- + +. **If you need to instrument and trace <>**, install the LTTng-UST Java agent: ++ +-- +[role="term"] +---- +# apt-get install liblttng-ust-agent-java ---- -- @@ -485,8 +582,7 @@ yaourt -S lttng-modules -- [role="term"] ---- -yaourt -S python-lttngust -yaourt -S python2-lttngust +# apt-get install python3-lttngust ---- -- @@ -499,6 +595,73 @@ Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SUSE), please see http://packages.efficios.com/[EfficiOS Enterprise Packages]. +[[buildroot]] +=== Buildroot + +To install LTTng{nbsp}{revision} on Buildroot{nbsp}2017.02, +Buildroot{nbsp}2017.05, Buildroot{nbsp}2017.08, or +Buildroot{nbsp}2017.11: + +. Launch the Buildroot configuration tool: ++ +-- +[role="term"] +---- +$ make menuconfig +---- +-- + +. In **Kernel**, check **Linux kernel**. +. In **Toolchain**, check **Enable WCHAR support**. +. In **Target packages**{nbsp}→ **Debugging, profiling and benchmark**, + check **lttng-modules** and **lttng-tools**. +. In **Target packages**{nbsp}→ **Libraries**{nbsp}→ + **Other**, check **lttng-libust**. + + +[[oe-yocto]] +=== OpenEmbedded and Yocto + +LTTng{nbsp}{revision} recipes are available in the +http://layers.openembedded.org/layerindex/branch/master/layer/openembedded-core/[`openembedded-core`] +layer for Yocto Project{nbsp}2.3 _Pyro_ and Yocto Project{nbsp}2.4 _Rocko_ +under the following names: + +* `lttng-tools` +* `lttng-modules` +* `lttng-ust` + +With BitBake, the simplest way to include LTTng recipes in your target +image is to add them to `IMAGE_INSTALL_append` in path:{conf/local.conf}: + +---- +IMAGE_INSTALL_append = " lttng-tools lttng-modules lttng-ust" +---- + +If you use Hob: + +. Select a machine and an image recipe. +. Click **Edit image recipe**. +. Under the **All recipes** tab, search for **lttng**. +. Check the desired LTTng recipes. + +[IMPORTANT] +.Java and Python application instrumentation and tracing +==== +If you need to instrument and trace <> on Yocto/OpenEmbedded, you need to build and install +LTTng-UST{nbsp}{revision} <> and pass +the `--enable-java-agent-jul`, `--enable-java-agent-log4j`, or +`--enable-java-agent-all` options to the `configure` script, depending +on which Java logging framework you use. + +If you need to instrument and trace <> on Yocto/OpenEmbedded, you need to build and install +LTTng-UST{nbsp}{revision} from source and pass the +`--enable-python-agent` option to the `configure` script. +==== + + [[building-from-source]] === Build from source @@ -519,7 +682,7 @@ To build and install LTTng{nbsp}{revision} from source: -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-modules/lttng-modules-latest-2.9.tar.bz2 && tar -xf lttng-modules-latest-2.9.tar.bz2 && cd lttng-modules-2.9.* && @@ -534,7 +697,7 @@ sudo depmod -a -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-ust/lttng-ust-latest-2.9.tar.bz2 && tar -xf lttng-ust-latest-2.9.tar.bz2 && cd lttng-ust-2.9.* && @@ -584,7 +747,7 @@ instrumented user application with `liblttng-ust`>>: -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-tools/lttng-tools-latest-2.9.tar.bz2 && tar -xf lttng-tools-latest-2.9.tar.bz2 && cd lttng-tools-2.9.* && @@ -622,9 +785,10 @@ This tutorial walks you through the steps to: [[tracing-the-linux-kernel]] === Trace the Linux kernel -The following command lines start with cmd:sudo because you need root -privileges to trace the Linux kernel. You can avoid using cmd:sudo if -your Unix user is a member of the <>. +The following command lines start with the `#` prompt because you need +root privileges to trace the Linux kernel. You can also trace the kernel +as a regular user if your Unix user is a member of the +<>. . Create a <> which writes its traces to dir:{/tmp/my-kernel-trace}: @@ -632,7 +796,7 @@ your Unix user is a member of the <>. -- [role="term"] ---- -sudo lttng create my-kernel-session --output=/tmp/my-kernel-trace +# lttng create my-kernel-session --output=/tmp/my-kernel-trace ---- -- @@ -641,8 +805,8 @@ sudo lttng create my-kernel-session --output=/tmp/my-kernel-trace -- [role="term"] ---- -lttng list --kernel -lttng list --kernel --syscall +# lttng list --kernel +# lttng list --kernel --syscall ---- -- @@ -653,8 +817,8 @@ lttng list --kernel --syscall -- [role="term"] ---- -sudo lttng enable-event --kernel sched_switch,sched_process_fork -sudo lttng enable-event --kernel --syscall open,close +# lttng enable-event --kernel sched_switch,sched_process_fork +# lttng enable-event --kernel --syscall open,close ---- -- + @@ -664,7 +828,7 @@ tracepoints (this will generate a lot of data when tracing): -- [role="term"] ---- -sudo lttng enable-event --kernel --all +# lttng enable-event --kernel --all ---- -- @@ -673,7 +837,7 @@ sudo lttng enable-event --kernel --all -- [role="term"] ---- -sudo lttng start +# lttng start ---- -- @@ -685,8 +849,8 @@ sudo lttng start -- [role="term"] ---- -sudo lttng stop -sudo lttng destroy +# lttng stop +# lttng destroy ---- -- + @@ -699,7 +863,7 @@ only destroys the state of the tracing session. -- [role="term"] ---- -sudo chown -R $(whoami) /tmp/my-kernel-trace +# chown -R $(whoami) /tmp/my-kernel-trace ---- -- @@ -770,7 +934,7 @@ TRACEPOINT_EVENT( -- [role="term"] ---- -gcc -c -I. hello-tp.c +$ gcc -c -I. hello-tp.c ---- -- @@ -830,7 +994,7 @@ int main(int argc, char *argv[]) -- [role="term"] ---- -gcc -c hello.c +$ gcc -c hello.c ---- -- @@ -840,7 +1004,7 @@ gcc -c hello.c -- [role="term"] ---- -gcc -o hello hello.o hello-tp.o -llttng-ust -ldl +$ gcc -o hello hello.o hello-tp.o -llttng-ust -ldl ---- -- @@ -857,7 +1021,7 @@ To trace the user application: -- [role="term"] ---- -./hello world and beyond +$ ./hello world and beyond ---- -- + @@ -875,7 +1039,7 @@ Press Enter to continue... -- [role="term"] ---- -lttng-sessiond --daemonize +$ lttng-sessiond --daemonize ---- -- + @@ -887,7 +1051,7 @@ a service that the distribution's service manager started. -- [role="term"] ---- -lttng list --userspace +$ lttng list --userspace ---- -- + @@ -899,7 +1063,7 @@ under the `./hello` process. -- [role="term"] ---- -lttng create my-user-space-session +$ lttng create my-user-space-session ---- -- @@ -909,7 +1073,7 @@ lttng create my-user-space-session -- [role="term"] ---- -lttng enable-event --userspace hello_world:my_first_tracepoint +$ lttng enable-event --userspace hello_world:my_first_tracepoint ---- -- @@ -918,7 +1082,7 @@ lttng enable-event --userspace hello_world:my_first_tracepoint -- [role="term"] ---- -lttng start +$ lttng start ---- -- @@ -930,8 +1094,8 @@ lttng start -- [role="term"] ---- -sudo lttng stop -sudo lttng destroy +$ lttng stop +$ lttng destroy ---- -- + @@ -986,7 +1150,7 @@ its path to cmd:babeltrace with no options: [role="term"] ---- -babeltrace ~/lttng-traces/my-user-space-session* +$ babeltrace ~/lttng-traces/my-user-space-session* ---- cmd:babeltrace finds all traces recursively within the given path and @@ -997,7 +1161,7 @@ further filtering: [role="term"] ---- -babeltrace /tmp/my-kernel-trace | grep _switch +$ babeltrace /tmp/my-kernel-trace | grep _switch ---- You can pipe the output of cmd:babeltrace into a tool like man:wc(1) to @@ -1005,7 +1169,7 @@ count the recorded events: [role="term"] ---- -babeltrace /tmp/my-kernel-trace | grep _open | wc --lines +$ babeltrace /tmp/my-kernel-trace | grep _open | wc --lines ---- @@ -1107,7 +1271,7 @@ Run this script: [role="term"] ---- -python3 top5proc.py /tmp/my-kernel-trace/kernel +$ python3 top5proc.py /tmp/my-kernel-trace/kernel ---- Output example: @@ -1357,10 +1521,14 @@ as soon as a there's no space left for a new event record, whereas in discard mode, the tracer only discards the event record that doesn't fit. -In discard mode, LTTng increments a count of lost event records when -an event record is lost and saves this count to the trace. In -overwrite mode, LTTng keeps no information when it overwrites a -sub-buffer before consuming it. +In discard mode, LTTng increments a count of lost event records when an +event record is lost and saves this count to the trace. In overwrite +mode, since LTTng 2.8, LTTng increments a count of lost sub-buffers when +a sub-buffer is lost and saves this count to the trace. In this mode, +the exact number of lost event records in those lost sub-buffers is not +saved to the trace. Trace analyses can use the trace's saved discarded +event record and sub-buffer counts to decide whether or not to perform +the analyses even if trace data is known to be missing. There are a few ways to decrease your probability of losing event records. @@ -1385,8 +1553,8 @@ to configure the sub-buffer count and size for them: * **High event throughput**: In general, prefer bigger sub-buffers to lower the risk of losing event records. + -Having bigger sub-buffers also ensures a lower sub-buffer switching -frequency. +Having bigger sub-buffers also ensures a lower +<>. + The number of sub-buffers is only meaningful if you create the channel in overwrite mode: in this case, if a sub-buffer overwrite happens, the @@ -1540,7 +1708,7 @@ With so many similar terms, it's easy to get confused. An **event** is the consequence of the execution of an _instrumentation point_, like a tracepoint that you manually place in some source code, or a Linux kernel KProbe. An event is said to _occur_ at a specific -time. Different actions can be taken upon the occurance of an event, +time. Different actions can be taken upon the occurrence of an event, like record the event's payload to a buffer. An **event record** is the representation of an event in a sub-buffer. A @@ -1575,7 +1743,7 @@ The LTTng project incorporates: * **LTTng-tools**: Libraries and command-line interface to control tracing sessions. ** <> (man:lttng-sessiond(8)). -** <> (man:lttng-consumerd(8)). +** <> (cmd:lttng-consumerd). ** <> (man:lttng-relayd(8)). ** <> (`liblttng-ctl`). ** <> (man:lttng(1)). @@ -1623,7 +1791,7 @@ The cmd:lttng tool has a Git-like interface: [role="term"] ---- -lttng +$ lttng ---- The <> section explores the @@ -1871,7 +2039,7 @@ running. You can also start the session daemon manually. .The consumer daemon. image::plumbing-consumerd.png[] -The _consumer daemon_, man:lttng-consumerd(8), is a daemon which shares +The _consumer daemon_, cmd:lttng-consumerd, is a daemon which shares ring buffers with user applications or with the LTTng kernel modules to collect trace data and send it to some location (on disk or to a <> over the network). The consumer daemon @@ -2712,7 +2880,7 @@ To build the instrumented application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -2721,7 +2889,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o tpp.o -llttng-ust -ldl +$ gcc -o app app.o tpp.o -llttng-ust -ldl ---- -- @@ -2732,7 +2900,7 @@ To run the instrumented application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -2750,7 +2918,7 @@ To create the tracepoint provider package archive file: -- [role="term"] ---- -gcc -I. -c tpp.c +$ gcc -I. -c tpp.c ---- -- @@ -2759,7 +2927,7 @@ gcc -I. -c tpp.c -- [role="term"] ---- -ar rcs tpp.a tpp.o +$ ar rcs tpp.a tpp.o ---- -- @@ -2779,7 +2947,7 @@ To build the instrumented application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -2788,7 +2956,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o tpp.a -llttng-ust -ldl +$ gcc -o app app.o tpp.a -llttng-ust -ldl ---- -- @@ -2799,7 +2967,7 @@ To run the instrumented application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -2828,7 +2996,7 @@ To build the instrumented application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -2837,7 +3005,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -ldl -L. -ltpp +$ gcc -o app app.o -ldl -L. -ltpp ---- -- @@ -2848,7 +3016,7 @@ To run the instrumented application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -2879,7 +3047,7 @@ To build the instrumented application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -2888,7 +3056,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -ldl +$ gcc -o app app.o -ldl ---- -- @@ -2900,7 +3068,7 @@ To run the instrumented application with tracing support: -- [role="term"] ---- -LD_PRELOAD=./libtpp.so ./app +$ LD_PRELOAD=./libtpp.so ./app ---- -- @@ -2911,7 +3079,7 @@ To run the instrumented application without tracing support: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -2944,7 +3112,7 @@ To build the instrumented application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -2953,7 +3121,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -ldl +$ gcc -o app app.o -ldl ---- -- @@ -2964,7 +3132,7 @@ To run the instrumented application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -2996,7 +3164,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3005,7 +3173,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o tpp.o -llttng-ust -ldl +$ gcc -shared -o libemon.so emon.o tpp.o -llttng-ust -ldl ---- -- @@ -3016,7 +3184,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3025,7 +3193,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -L. -lemon +$ gcc -o app app.o -L. -lemon ---- -- @@ -3036,7 +3204,7 @@ To run the application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3068,7 +3236,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3077,7 +3245,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o -ldl -L. -ltpp +$ gcc -shared -o libemon.so emon.o -ldl -L. -ltpp ---- -- @@ -3088,7 +3256,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3097,7 +3265,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -L. -lemon +$ gcc -o app app.o -L. -lemon ---- -- @@ -3108,7 +3276,7 @@ To run the application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3141,7 +3309,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3150,7 +3318,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o -ldl +$ gcc -shared -o libemon.so emon.o -ldl ---- -- @@ -3161,7 +3329,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3170,7 +3338,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -L. -lemon +$ gcc -o app app.o -L. -lemon ---- -- @@ -3182,7 +3350,7 @@ To run the application with tracing support: -- [role="term"] ---- -LD_PRELOAD=./libtpp.so ./app +$ LD_PRELOAD=./libtpp.so ./app ---- -- @@ -3193,7 +3361,7 @@ To run the application without tracing support: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3228,7 +3396,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3237,7 +3405,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o -ldl +$ gcc -shared -o libemon.so emon.o -ldl ---- -- @@ -3248,7 +3416,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3257,7 +3425,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -L. -lemon +$ gcc -o app app.o -L. -lemon ---- -- @@ -3268,7 +3436,7 @@ To run the application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3302,7 +3470,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3311,7 +3479,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o -ldl -L. -ltpp +$ gcc -shared -o libemon.so emon.o -ldl -L. -ltpp ---- -- @@ -3322,7 +3490,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3331,7 +3499,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -ldl -L. -lemon +$ gcc -o app app.o -ldl -L. -lemon ---- -- @@ -3342,7 +3510,7 @@ To run the application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3377,7 +3545,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3386,7 +3554,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o -ldl +$ gcc -shared -o libemon.so emon.o -ldl ---- -- @@ -3397,7 +3565,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3406,7 +3574,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -ldl -L. -lemon +$ gcc -o app app.o -ldl -L. -lemon ---- -- @@ -3417,7 +3585,7 @@ To run the application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3450,7 +3618,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3459,7 +3627,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o -ldl +$ gcc -shared -o libemon.so emon.o -ldl ---- -- @@ -3470,7 +3638,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3479,7 +3647,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o -L. -lemon +$ gcc -o app app.o -L. -lemon ---- -- @@ -3491,7 +3659,7 @@ To run the application with tracing support: -- [role="term"] ---- -LD_PRELOAD=./libtpp.so ./app +$ LD_PRELOAD=./libtpp.so ./app ---- -- @@ -3502,7 +3670,7 @@ To run the application without tracing support: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3534,7 +3702,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3543,7 +3711,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o +$ gcc -shared -o libemon.so emon.o ---- -- @@ -3554,7 +3722,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3563,7 +3731,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -o app app.o tpp.o -llttng-ust -ldl -L. -lemon +$ gcc -o app app.o tpp.o -llttng-ust -ldl -L. -lemon ---- -- @@ -3574,7 +3742,7 @@ To run the instrumented application: -- [role="term"] ---- -./app +$ ./app ---- -- @@ -3605,7 +3773,7 @@ To build the application: -- [role="term"] ---- -gcc -c app.c +$ gcc -c app.c ---- -- @@ -3614,7 +3782,7 @@ gcc -c app.c -- [role="term"] ---- -gcc -Wl,--export-dynamic -o app app.o tpp.o \ +$ gcc -Wl,--export-dynamic -o app app.o tpp.o \ -llttng-ust -ldl ---- -- @@ -3630,7 +3798,7 @@ To build the instrumented user library: -- [role="term"] ---- -gcc -I. -fpic -c emon.c +$ gcc -I. -fpic -c emon.c ---- -- @@ -3639,7 +3807,7 @@ gcc -I. -fpic -c emon.c -- [role="term"] ---- -gcc -shared -o libemon.so emon.o +$ gcc -shared -o libemon.so emon.o ---- -- @@ -3650,7 +3818,7 @@ To run the application: -- [role="term"] ---- -./app +$ ./app ---- -- |==== @@ -3689,7 +3857,7 @@ object when you start the application. [role="term"] ---- -LD_PRELOAD=liblttng-ust-fork.so ./my-app +$ LD_PRELOAD=liblttng-ust-fork.so ./my-app ---- If your tracepoint provider package is @@ -3698,7 +3866,7 @@ shared objects in env:LD_PRELOAD: [role="term"] ---- -LD_PRELOAD=liblttng-ust-fork.so:/path/to/tp.so ./my-app +$ LD_PRELOAD=liblttng-ust-fork.so:/path/to/tp.so ./my-app ---- @@ -3712,7 +3880,7 @@ path:{liblttng-ust-fd.so} shared object when you start the application: [role="term"] ---- -LD_PRELOAD=liblttng-ust-fd.so ./my-app +$ LD_PRELOAD=liblttng-ust-fd.so ./my-app ---- Typical use cases include closing all the file descriptors after @@ -3730,7 +3898,7 @@ build an application on the command line: [role="term"] ---- -gcc -o my-app my-app.o tp.o $(pkg-config --cflags --libs lttng-ust) +$ gcc -o my-app my-app.o tp.o $(pkg-config --cflags --libs lttng-ust) ---- @@ -3755,7 +3923,7 @@ or LTTng packages: -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/urcu/userspace-rcu-latest-0.9.tar.bz2 && tar -xf userspace-rcu-latest-0.9.tar.bz2 && cd userspace-rcu-0.9.* && @@ -3782,7 +3950,7 @@ sudo ldconfig -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-ust/lttng-ust-latest-2.9.tar.bz2 && tar -xf lttng-ust-latest-2.9.tar.bz2 && cd lttng-ust-2.9.* && @@ -3807,7 +3975,7 @@ relevant 32-bit library paths, for example: [role="term"] ---- -LDFLAGS='-L/usr/lib/i386-linux-gnu -L/usr/lib32' +$ LDFLAGS='-L/usr/lib/i386-linux-gnu -L/usr/lib32' ---- ==== @@ -3817,12 +3985,14 @@ LDFLAGS='-L/usr/lib/i386-linux-gnu -L/usr/lib32' -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-tools/lttng-tools-latest-2.9.tar.bz2 && tar -xf lttng-tools-latest-2.9.tar.bz2 && cd lttng-tools-2.9.* && ./configure --libdir=/usr/local/lib32 CFLAGS=-m32 CXXFLAGS=-m32 \ - LDFLAGS='-L/usr/local/lib32 -L/usr/lib32' && + LDFLAGS='-L/usr/local/lib32 -L/usr/lib32' \ + --disable-bin-lttng --disable-bin-lttng-crash \ + --disable-bin-lttng-relayd --disable-bin-lttng-sessiond && make && cd src/bin/lttng-consumerd && sudo make install && @@ -3839,7 +4009,7 @@ sudo ldconfig -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-tools/lttng-tools-latest-2.9.tar.bz2 && tar -xf lttng-tools-latest-2.9.tar.bz2 && cd lttng-tools-2.9.* && @@ -3866,9 +4036,9 @@ instrumented 32-bit application: -- [role="term"] ---- -gcc -m32 -c -I. hello-tp.c -gcc -m32 -c hello.c -gcc -m32 -o hello hello.o hello-tp.o \ +$ gcc -m32 -c -I. hello-tp.c +$ gcc -m32 -c hello.c +$ gcc -m32 -o hello hello.o hello-tp.o \ -L/usr/lib32 -L/usr/local/lib32 \ -Wl,-rpath,/usr/lib32,-rpath,/usr/local/lib32 \ -llttng-ust -ldl @@ -3920,7 +4090,7 @@ To use `tracef()` in your application: -- [role="term"] ---- -gcc -o app app.c -llttng-ust +$ gcc -o app app.c -llttng-ust ---- -- @@ -3932,7 +4102,7 @@ To trace the events that `tracef()` calls emit: -- [role="term"] ---- -lttng enable-event --userspace 'lttng_ust_tracef:*' +$ lttng enable-event --userspace 'lttng_ust_tracef:*' ---- -- @@ -4007,7 +4177,7 @@ See man:lttng-ust(3) for a list of available log level names. -- [role="term"] ---- -gcc -o app app.c -llttng-ust +$ gcc -o app app.c -llttng-ust ---- -- @@ -4021,7 +4191,7 @@ _as severe as_ a specific log level: -- [role="term"] ---- -lttng enable-event --userspace 'lttng_ust_tracelog:*' +$ lttng enable-event --userspace 'lttng_ust_tracelog:*' --loglevel=TRACE_WARNING ---- -- @@ -4035,7 +4205,7 @@ _specific log level_: -- [role="term"] ---- -lttng enable-event --userspace 'lttng_ust_tracelog:*' +$ lttng enable-event --userspace 'lttng_ust_tracelog:*' --loglevel-only=TRACE_INFO ---- -- @@ -4074,7 +4244,7 @@ To use a user space tracing helper with any user application: -- [role="term"] ---- -LD_PRELOAD=liblttng-ust-libc-wrapper.so my-app +$ LD_PRELOAD=liblttng-ust-libc-wrapper.so my-app ---- -- + @@ -4083,7 +4253,7 @@ You can preload more than one helper: -- [role="term"] ---- -LD_PRELOAD=liblttng-ust-libc-wrapper.so:liblttng-ust-dl.so my-app +$ LD_PRELOAD=liblttng-ust-libc-wrapper.so:liblttng-ust-dl.so my-app ---- -- @@ -4326,7 +4496,7 @@ Build this example: [role="term"] ---- -javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar Test.java +$ javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar Test.java ---- <>, @@ -4335,16 +4505,16 @@ javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jar [role="term"] ---- -lttng create -lttng enable-event --jul jello -lttng start +$ lttng create +$ lttng enable-event --jul jello +$ lttng start ---- Run the compiled class: [role="term"] ---- -java -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar:. Test +$ java -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar:. Test ---- <> and inspect the @@ -4352,8 +4522,8 @@ recorded events: [role="term"] ---- -lttng stop -lttng view +$ lttng stop +$ lttng view ---- ==== @@ -4499,7 +4669,7 @@ file): [role="term"] ---- -javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-log4j.jar:$LOG4JPATH Test.java +$ javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-log4j.jar:$LOG4JPATH Test.java ---- <>, @@ -4508,16 +4678,16 @@ javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jar [role="term"] ---- -lttng create -lttng enable-event --log4j jello -lttng start +$ lttng create +$ lttng enable-event --log4j jello +$ lttng start ---- Run the compiled class: [role="term"] ---- -java -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-log4j.jar:$LOG4JPATH:. Test +$ java -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-log4j.jar:$LOG4JPATH:. Test ---- <> and inspect the @@ -4525,8 +4695,8 @@ recorded events: [role="term"] ---- -lttng stop -lttng view +$ lttng stop +$ lttng view ---- ==== @@ -4730,7 +4900,7 @@ Build this example: [role="term"] ---- -javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar Test.java +$ javac -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar Test.java ---- <> @@ -4739,8 +4909,8 @@ and <> matching the [role="term"] ---- -lttng create -lttng enable-event --jul jello +$ lttng create +$ lttng enable-event --jul jello ---- <> to the @@ -4748,22 +4918,22 @@ JUL channel: [role="term"] ---- -lttng add-context --jul --type='$app.myRetriever:intCtx' -lttng add-context --jul --type='$app.myRetriever:strContext' +$ lttng add-context --jul --type='$app.myRetriever:intCtx' +$ lttng add-context --jul --type='$app.myRetriever:strContext' ---- <>: [role="term"] ---- -lttng start +$ lttng start ---- Run the compiled class: [role="term"] ---- -java -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar:. Test +$ java -cp /usr/share/java/jarpath/lttng-ust-agent-common.jar:/usr/share/java/jarpath/lttng-ust-agent-jul.jar:. Test ---- <> and inspect the @@ -4771,8 +4941,8 @@ recorded events: [role="term"] ---- -lttng stop -lttng view +$ lttng stop +$ lttng view ---- ==== @@ -4858,16 +5028,16 @@ tracing>>: [role="term"] ---- -lttng create -lttng enable-event --python my-logger -lttng start +$ lttng create +$ lttng enable-event --python my-logger +$ lttng start ---- Run the Python script: [role="term"] ---- -python test.py +$ python test.py ---- <> and inspect the recorded @@ -4875,8 +5045,8 @@ events: [role="term"] ---- -lttng stop -lttng view +$ lttng stop +$ lttng view ---- ==== @@ -4947,7 +5117,7 @@ mostly to instrument shell scripts: [role="term"] ---- -echo "Some message, some $variable" > /proc/lttng-logger +$ echo "Some message, some $variable" > /proc/lttng-logger ---- Any event that the LTTng logger emits is named `lttng_logger` and @@ -4993,16 +5163,16 @@ df --human-readable --print-type / > /proc/lttng-logger [role="term"] ---- -lttng create -lttng enable-event --kernel lttng_logger -lttng start +$ lttng create +$ lttng enable-event --kernel lttng_logger +$ lttng start ---- Run the Bash script: [role="term"] ---- -bash test.bash +$ bash test.bash ---- <> and inspect the recorded @@ -5010,8 +5180,8 @@ events: [role="term"] ---- -lttng stop -lttng view +$ lttng stop +$ lttng view ---- ==== @@ -5082,7 +5252,7 @@ is your subsystem's name. -- [role="term"] ---- -cd $(mktemp -d) && +$ cd $(mktemp -d) && wget http://lttng.org/files/lttng-modules/lttng-modules-latest-2.9.tar.bz2 && tar -xf lttng-modules-latest-2.9.tar.bz2 && cd lttng-modules-2.9.* @@ -5174,12 +5344,12 @@ MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "." ---- -- -. Edit path:{probes/Makefile} and add your new kernel module object +. Edit path:{probes/KBuild} and add your new kernel module object next to the existing ones: + -- [source,make] -.path:{probes/Makefile} +.path:{probes/KBuild} ---- # ... @@ -5197,8 +5367,8 @@ obj-m += lttng-probe-my-subsys.o -- [role="term"] ---- -make KERNELDIR=/path/to/linux -sudo make modules_install +$ make KERNELDIR=/path/to/linux +# make modules_install && depmod -a ---- -- + @@ -5315,7 +5485,7 @@ module: ==== [role="term"] ---- -sudo lttng-sessiond --extra-kmod-probes=my_subsys,usb +# lttng-sessiond --extra-kmod-probes=my_subsys,usb ---- ==== -- @@ -5333,7 +5503,7 @@ To load _only_ a given custom probe kernel module: ==== [role="term"] ---- -sudo lttng-sessiond --kmod-probes=my_subsys,usb +# lttng-sessiond --kmod-probes=my_subsys,usb ---- ==== -- @@ -5345,7 +5515,7 @@ To confirm that a probe module is loaded: -- [role="term"] ---- -lsmod | grep lttng_probe_usb +$ lsmod | grep lttng_probe_usb ---- -- @@ -5356,7 +5526,7 @@ To unload the loaded probe modules: -- [role="term"] ---- -sudo pkill lttng-sessiond +# pkill lttng-sessiond ---- -- + @@ -5418,7 +5588,7 @@ To start a user session daemon: -- [role="term"] ---- -lttng-sessiond --daemonize +$ lttng-sessiond --daemonize ---- -- @@ -5429,7 +5599,7 @@ To start the root session daemon: -- [role="term"] ---- -sudo lttng-sessiond --daemonize +# lttng-sessiond --daemonize ---- -- @@ -5458,7 +5628,7 @@ To create a tracing session with a generated name: -- [role="term"] ---- -lttng create +$ lttng create ---- -- @@ -5472,7 +5642,7 @@ To create a tracing session with a specific name: -- [role="term"] ---- -lttng create my-session +$ lttng create my-session ---- -- + @@ -5492,7 +5662,7 @@ To output LTTng traces to a non-default location: -- [role="term"] ---- -lttng create --output=/tmp/some-directory my-session +$ lttng create my-session --output=/tmp/some-directory ---- -- @@ -5505,7 +5675,7 @@ To list all the existing tracing sessions for your Unix user: -- [role="term"] ---- -lttng list +$ lttng list ---- -- @@ -5537,7 +5707,7 @@ To change the current tracing session: -- [role="term"] ---- -lttng set-session new-session +$ lttng set-session new-session ---- -- + @@ -5555,7 +5725,7 @@ To destroy the current tracing session: -- [role="term"] ---- -lttng destroy +$ lttng destroy ---- -- @@ -5592,7 +5762,7 @@ To list the available instrumentation points: ==== [role="term"] ---- -lttng list --userspace +$ lttng list --userspace ---- ==== @@ -5600,7 +5770,7 @@ lttng list --userspace ==== [role="term"] ---- -lttng list --kernel --syscall +$ lttng list --kernel --syscall ---- ==== @@ -5704,7 +5874,7 @@ command-line options to create simple to more complex event rules. ==== [role="term"] ---- -lttng enable-event --kernel sched_switch +$ lttng enable-event --kernel sched_switch ---- ==== @@ -5712,7 +5882,7 @@ lttng enable-event --kernel sched_switch ==== [role="term"] ---- -lttng enable-event --kernel --syscall open,write,read,close +$ lttng enable-event --kernel --syscall open,write,read,close ---- ==== @@ -5720,18 +5890,18 @@ lttng enable-event --kernel --syscall open,write,read,close ==== [role="term"] ---- -lttng enable-event --kernel sched_switch --filter='prev_comm == "bash"' +$ lttng enable-event --kernel sched_switch --filter='prev_comm == "bash"' ---- [role="term"] ---- -lttng enable-event --kernel --all \ +$ lttng enable-event --kernel --all \ --filter='$ctx.tid == 1988 || $ctx.tid == 1534' ---- [role="term"] ---- -lttng enable-event --jul my_logger \ +$ lttng enable-event --jul my_logger \ --filter='$app.retriever:cur_msg_id > 3' ---- @@ -5743,7 +5913,7 @@ use man:lttng(1) from a shell. ==== [role="term"] ---- -lttng enable-event --userspace my_app:'*' --loglevel=TRACE_INFO +$ lttng enable-event --userspace my_app:'*' --loglevel=TRACE_INFO ---- IMPORTANT: Make sure to always quote the wildcard character when you @@ -5754,7 +5924,7 @@ use man:lttng(1) from a shell. ==== [role="term"] ---- -lttng enable-event --python my-app.'*' \ +$ lttng enable-event --python my-app.'*' \ --exclude='my-app.module,my-app.hello' ---- ==== @@ -5763,7 +5933,7 @@ lttng enable-event --python my-app.'*' \ ==== [role="term"] ---- -lttng enable-event --log4j --all --loglevel-only=LOG4J_WARN +$ lttng enable-event --log4j --all --loglevel-only=LOG4J_WARN ---- ==== @@ -5771,7 +5941,7 @@ lttng enable-event --log4j --all --loglevel-only=LOG4J_WARN ==== [role="term"] ---- -lttng enable-event --userspace my_app:my_tracepoint --channel=my-channel +$ lttng enable-event --userspace my_app:my_tracepoint --channel=my-channel ---- ==== @@ -5783,8 +5953,8 @@ rules: [role="term"] ---- -lttng enable-event --userspace my_app:my_tracepoint -lttng enable-event --userspace my_app:my_tracepoint \ +$ lttng enable-event --userspace my_app:my_tracepoint +$ lttng enable-event --userspace my_app:my_tracepoint \ --loglevel=TRACE_INFO ---- @@ -5808,7 +5978,7 @@ a _disabled_ event rule. ==== [role="term"] ---- -lttng disable-event --python my-logger +$ lttng disable-event --python my-logger ---- ==== @@ -5816,7 +5986,7 @@ lttng disable-event --python my-logger ==== [role="term"] ---- -lttng disable-event --jul '*' +$ lttng disable-event --jul '*' ---- ==== @@ -5829,7 +5999,7 @@ rules of a given channel. [role="term"] ---- -lttng disable-event --jul --all-events +$ lttng disable-event --jul --all-events ---- ==== @@ -5847,7 +6017,7 @@ parameters, its channels, event rules, and their attributes: -- [role="term"] ---- -lttng status +$ lttng status ---- -- + @@ -5859,7 +6029,7 @@ To get the status of any tracing session: -- [role="term"] ---- -lttng list my-session +$ lttng list my-session ---- -- + @@ -5881,7 +6051,7 @@ To start tracing in the current tracing session: -- [role="term"] ---- -lttng start +$ lttng start ---- -- @@ -5897,7 +6067,7 @@ To stop tracing in the current tracing session: -- [role="term"] ---- -lttng stop +$ lttng stop ---- -- + @@ -6022,7 +6192,7 @@ command-line options to create simple to more complex channels. ==== [role="term"] ---- -lttng enable-channel --kernel my-channel +$ lttng enable-channel --kernel my-channel ---- ==== @@ -6030,7 +6200,7 @@ lttng enable-channel --kernel my-channel ==== [role="term"] ---- -lttng enable-channel --userspace --num-subbuf=4 --subbuf-size=1M \ +$ lttng enable-channel --userspace --num-subbuf=4 --subbuf-size=1M \ --buffers-pid my-channel ---- ==== @@ -6039,7 +6209,7 @@ lttng enable-channel --userspace --num-subbuf=4 --subbuf-size=1M \ ==== [role="term"] ---- -lttng enable-channel --kernel --tracefile-count=8 \ +$ lttng enable-channel --kernel --tracefile-count=8 \ --tracefile-size=4194304 my-channel ---- ==== @@ -6048,7 +6218,7 @@ lttng enable-channel --kernel --tracefile-count=8 \ ==== [role="term"] ---- -lttng enable-channel --userspace --overwrite my-channel +$ lttng enable-channel --userspace --overwrite my-channel ---- ==== @@ -6057,8 +6227,8 @@ two different channels: [role="term"] ---- -lttng enable-event --userspace --channel=my-channel app:tp -lttng enable-event --userspace --channel=other-channel app:tp +$ lttng enable-event --userspace --channel=my-channel app:tp +$ lttng enable-event --userspace --channel=other-channel app:tp ---- If both channels are enabled, when a tracepoint named `app:tp` is @@ -6075,7 +6245,7 @@ previously, use the man:lttng-disable-channel(1) command. ==== [role="term"] ---- -lttng disable-channel --kernel my-channel +$ lttng disable-channel --kernel my-channel ---- ==== @@ -6123,7 +6293,7 @@ of the current tracing session. [role="term"] ---- -lttng add-context --userspace --type=vpid --type=perf:thread:cpu-cycles +$ lttng add-context --userspace --type=vpid --type=perf:thread:cpu-cycles ---- ==== @@ -6135,8 +6305,8 @@ man:perf-record(1). [role="term"] ---- -lttng add-context --userspace --type=perf:thread:raw:r0110:test -lttng add-context --kernel --type=perf:cpu:raw:r0013c:x86unhalted +$ lttng add-context --userspace --type=perf:thread:raw:r0110:test +$ lttng add-context --kernel --type=perf:cpu:raw:r0013c:x86unhalted ---- ==== @@ -6148,7 +6318,7 @@ tracing session. [role="term"] ---- -lttng add-context --kernel --channel=my-channel --type=tid +$ lttng add-context --kernel --channel=my-channel --type=tid ---- ==== @@ -6161,7 +6331,7 @@ in the channel named `my-channel`: [role="term"] ---- -lttng add-context --kernel --channel=my-channel \ +$ lttng add-context --kernel --channel=my-channel \ --type='$app:retriever:cur_msg_id' ---- @@ -6210,7 +6380,7 @@ tracks the specific PIDs. After: [role="term"] ---- -lttng track --pid=3,4,7,10,13 +$ lttng track --pid=3,4,7,10,13 ---- the whitelist is: @@ -6223,7 +6393,7 @@ You can add more PIDs to the whitelist afterwards: [role="term"] ---- -lttng track --pid=1,15,16 +$ lttng track --pid=1,15,16 ---- The result is: @@ -6237,7 +6407,7 @@ whitelist. Given the previous example, the following command: [role="term"] ---- -lttng untrack --pid=3,7,10,13 +$ lttng untrack --pid=3,7,10,13 ---- leads to this whitelist: @@ -6246,12 +6416,12 @@ leads to this whitelist: .PIDs 3, 7, 10, and 13 are removed from the whitelist. image::track-1-4-15-16.png[] -LTTng can track all possible PIDs again using the opt:track(1):--all -option: +LTTng can track all possible PIDs again using the +opt:lttng-track(1):--all option: [role="term"] ---- -lttng track --pid --all +$ lttng track --pid --all ---- The result is, again: @@ -6272,7 +6442,7 @@ man:lttng-untrack(1) command to clear the whitelist after you [role="term"] ---- -lttng untrack --pid --all +$ lttng untrack --pid --all ---- gives: @@ -6288,7 +6458,7 @@ specific PIDs, for example: [role="term"] ---- -lttng track --pid=6,11 +$ lttng track --pid=6,11 ---- Result: @@ -6326,7 +6496,7 @@ To save a given tracing session configuration: -- [role="term"] ---- -lttng save my-session +$ lttng save my-session ---- -- + @@ -6353,7 +6523,7 @@ To load a tracing session: -- [role="term"] ---- -lttng load my-session +$ lttng load my-session ---- -- + @@ -6381,7 +6551,7 @@ To send the trace data over the network: -- [role="term"] ---- -lttng-relayd +$ lttng-relayd ---- -- @@ -6391,7 +6561,7 @@ lttng-relayd -- [role="term"] ---- -lttng create my-session --set-url=net://remote-system +$ lttng create my-session --set-url=net://remote-system ---- -- + @@ -6400,7 +6570,7 @@ remote system. See man:lttng-create(1) for the exact URL format. . On the target system, use the man:lttng(1) command-line tool as usual. When tracing is active, the target's consumer daemon sends sub-buffers - to the relay daemon running on the remote system intead of flushing + to the relay daemon running on the remote system instead of flushing them to the local file system. The relay daemon writes the received packets to the local file system. @@ -6437,7 +6607,7 @@ To use LTTng live: -- [role="term"] ---- -lttng create --live my-session +$ lttng create my-session --live ---- -- + @@ -6449,7 +6619,8 @@ This spawns a local relay daemon. -- [role="term"] ---- -babeltrace --input-format=lttng-live net://localhost/host/hostname/my-session +$ babeltrace --input-format=lttng-live \ + net://localhost/host/hostname/my-session ---- -- + @@ -6467,7 +6638,7 @@ You can list the available live tracing sessions with Babeltrace: [role="term"] ---- -babeltrace --input-format=lttng-live net://localhost +$ babeltrace --input-format=lttng-live net://localhost ---- You can start the relay daemon on another system. In this case, you need @@ -6504,7 +6675,7 @@ To take a snapshot: -- [role="term"] ---- -lttng create --snapshot my-session +$ lttng create my-session --snapshot ---- -- + @@ -6527,7 +6698,7 @@ change before you actually take the snapshot. -- [role="term"] ---- -lttng snapshot record --name=my-first-snapshot +$ lttng snapshot record --name=my-first-snapshot ---- -- + @@ -6565,7 +6736,7 @@ XML machine interface output, for example: [role="term"] ---- -lttng --mi=xml enable-event --kernel --syscall open +$ lttng --mi=xml enable-event --kernel --syscall open ---- A schema definition (XSD) is @@ -6601,7 +6772,7 @@ To regenerate the metadata of an LTTng trace: -- [role="term"] ---- -lttng regenerate metadata +$ lttng regenerate metadata ---- -- @@ -6644,7 +6815,7 @@ create it in snapshot mode, before you take a snapshot: -- [role="term"] ---- -lttng regenerate statedump +$ lttng regenerate statedump ---- -- @@ -6653,7 +6824,7 @@ lttng regenerate statedump -- [role="term"] ---- -lttng stop +$ lttng stop ---- -- @@ -6662,7 +6833,7 @@ lttng stop -- [role="term"] ---- -lttng snapshot record --name=my-snapshot +$ lttng snapshot record --name=my-snapshot ---- -- @@ -6707,7 +6878,7 @@ trace data after a system crash: -- [role="term"] ---- -lttng create --shm-path=/path/to/shm +$ lttng create my-session --shm-path=/path/to/shm ---- -- @@ -6720,7 +6891,7 @@ lttng create --shm-path=/path/to/shm -- [role="term"] ---- -lttng-crash /path/to/shm +$ lttng-crash /path/to/shm ---- -- @@ -6735,7 +6906,7 @@ To convert the ring buffer files to LTTng trace files: -- [role="term"] ---- -lttng-crash --extract=/path/to/trace /path/to/shm +$ lttng-crash --extract=/path/to/trace /path/to/shm ---- -- @@ -7200,7 +7371,7 @@ event:: or a Linux kernel KProbe. + An event is said to _occur_ at a specific time. Different actions can -be taken upon the occurance of an event, like record the event's payload +be taken upon the occurrence of an event, like record the event's payload to a sub-buffer. <>::