Clarify probe registration documentation/errors
[lttng-ust.git] / doc / man / lttng-ust.3
index 49b3b5d57aa2a52dddd9ca4cb4d9926c2cc8a0c5..0de6b6a1e9e1d1bccee7bce37e964cb25d15e62a 100644 (file)
@@ -148,6 +148,84 @@ TRACEPOINT_EVENT(
                ctf_float(double, doublefield, doublearg)
        )
 )
+
+There can be an arbitrary number of tracepoint providers within an
+application, but they must each have their own provider name. Duplicate
+provider names are not allowed.
+
+.fi
+
+.SH "ASSIGNING LOGLEVEL TO EVENTS"
+
+.nf
+
+Optionally, a loglevel can be assigned to a TRACEPOINT_EVENT using the
+following construct:
+
+       TRACEPOINT_LOGLEVEL(< [com_company_]project[_component] >,
+               < event >, < loglevel_name >)
+
+ The first field is the provider name, the second field is the name of
+the tracepoint, and the third field is the loglevel name.  A
+TRACEPOINT_EVENT should be declared prior to the the TRACEPOINT_LOGLEVEL
+for a given tracepoint name. The TRACEPOINT_PROVIDER must be already
+declared before declaring a TRACEPOINT_LOGLEVEL.
+
+The loglevels go from 0 to 14. Higher numbers imply the most verbosity
+(higher event throughput expected.
+  
+Loglevels 0 through 6, and loglevel 14, match syslog(3) loglevels
+semantic. Loglevels 7 through 13 offer more fine-grained selection of
+debug information.
+  
+   TRACE_EMERG           0
+   system is unusable
+  
+   TRACE_ALERT           1
+   action must be taken immediately
+  
+   TRACE_CRIT            2
+   critical conditions
+  
+   TRACE_ERR             3
+   error conditions
+  
+   TRACE_WARNING         4
+   warning conditions
+  
+   TRACE_NOTICE          5
+   normal, but significant, condition
+  
+   TRACE_INFO            6
+   informational message
+  
+   TRACE_DEBUG_SYSTEM    7
+   debug information with system-level scope (set of programs)
+  
+   TRACE_DEBUG_PROGRAM   8
+   debug information with program-level scope (set of processes)
+  
+   TRACE_DEBUG_PROCESS   9
+   debug information with process-level scope (set of modules)
+  
+   TRACE_DEBUG_MODULE    10
+   debug information with module (executable/library) scope (set of
+   units)
+  
+   TRACE_DEBUG_UNIT      11
+   debug information with compilation unit scope (set of functions)
+  
+   TRACE_DEBUG_FUNCTION  12
+   debug information with function-level scope
+  
+   TRACE_DEBUG_LINE      13
+   debug information with line-level scope (TRACEPOINT_EVENT default)
+  
+   TRACE_DEBUG           14
+   debug-level message (trace_printf default)
+
+See lttng(1) for information on how to use LTTng-UST loglevels.
+
 .fi
 
 .SH "ADDING TRACEPOINTS TO YOUR CODE"
@@ -178,13 +256,13 @@ carefully:
        directly or through a static library (.a):
     - Into exactly one object of your application: define
       "TRACEPOINT_DEFINE" and include the tracepoint provider.
-    - Use "-I." for the compilation unit containing the tracepoint
+    - Use "\-I." for the compilation unit containing the tracepoint
       provider include (e.g. tp.c).
-    - Link application with "-ldl".
+    - Link application with "\-ldl".
     - If building the provider directly into the application,
-      link the application with "-llttng-ust".
+      link the application with "\-llttng-ust".
     - If building a static library for the provider, link the static
-      library with "-lllttng-ust".
+      library with "\-llttng-ust".
     - Include the tracepoint provider header into all C files using
       the provider.
     - Example:
@@ -198,9 +276,9 @@ carefully:
       provider header.
     - Include the tracepoint provider header into all instrumented C
       files that use the provider.
-    - Compile the tracepoint provider with "-I.".
-    - Link the tracepoint provider with "-llttng-ust".
-    - Link application with "-ldl".
+    - Compile the tracepoint provider with "\-I.".
+    - Link the tracepoint provider with "\-llttng-ust".
+    - Link application with "\-ldl".
     - Set a LD_PRELOAD environment to preload the tracepoint provider
       shared object before starting the application when tracing is
       needed.
@@ -211,9 +289,23 @@ carefully:
     way libc lazily resolves Thread-Local Storage (TLS) symbols when a
     library is dlopen'd, linking the tracepoint probe or liblttng-ust
     with dlopen() is discouraged. They should be linked with the
-    application using "-llibname" or loaded with LD_PRELOAD.
+    application using "\-llibname" or loaded with LD_PRELOAD.
   - Enable instrumentation and control tracing with the "lttng" command
     from lttng-tools. See lttng-tools doc/quickstart.txt.
+  - Note for C++ support: although an application instrumented with
+    tracepoints can be compiled with g++, tracepoint probes should be
+    compiled with gcc (only tested with gcc so far).
+
+.fi
+
+.SH "USING LTTNG UST WITH DAEMONS"
+
+.nf
+Some extra care is needed when using liblttng-ust with daemon
+applications that call fork(), clone(), or BSD rfork() without a
+following exec() family system call. The library "liblttng-ust-fork.so"
+needs to be preloaded for the application (launch with e.g.
+LD_PRELOAD=liblttng-ust-fork.so appname).
 
 .fi
 
@@ -229,7 +321,7 @@ specify how long the applications should wait for sessiond
 "registration done" command before proceeding to execute the main
 program. The default is 3000ms (3 seconds). The timeout value is
 specified in milliseconds. The value 0 means "don't wait". The value
--1 means "wait forever". Setting this environment variable to 0 is
+\-1 means "wait forever". Setting this environment variable to 0 is
 recommended for applications with time constraints on the process
 startup time.
 .PP
@@ -239,10 +331,23 @@ startup time.
 .PP
 lttng-gen-tp(1), lttng(1), babeltrace(1), lttng-sessiond(8)
 .PP
+
+.SH "COMPATIBILITY"
+
+.PP
+Older lttng-ust libraries reject more recent, and incompatible, probe
+providers. Newer lttng-ust librairies accept older probe providers, even
+though some newer features might not be available with those providers.
+.PP
+
 .SH "BUGS"
 
 .PP
-No knows bugs at this point.
+LTTng-UST 2.0 and 2.1 lttng-ust libraries do not check for probe
+provider version compatibility. This can lead to out-of-bound accesses
+when using a more recent probe provider with an older lttng-ust library.
+These error only trigger when tracing is active. This issue has been
+fixed in LTTng-UST 2.2.
 
 If you encounter any issues or usability problem, please report it on
 our mailing list <lttng-dev@lists.lttng.org> to help improve this
This page took 0.024994 seconds and 4 git commands to generate.