lttng_ust_tracef - Man Page

LTTng-UST printf(3)-like interface

Synopsis

#include <lttng/tracef.h>
#define lttng_ust_tracef(fmt, ...)
#define lttng_ust_vtracef(fmt, ap)

Link with:

Description

The LTTng-UST lttng_ust_tracef() and lttng_ust_vtracef() API allows you to trace your application with the help of simple printf(3)-like and vprintf(3)-like macros.

The fmt argument is passed directly as the fmt parameter of vasprintf(3), as well as:

For lttng_ust_tracef()

The optional parameters following fmt.

For lttng_ust_vtracef()

The ap parameter as the ap parameter of vasprintf(3) (va_list type).

To use lttng_ust_tracef() or lttng_ust_vtracef(), include <lttng/tracef.h> where you need it, and link your application with liblttng-ust and liblttng-ust-common. See the Example section below for a complete usage example.

Once your application is instrumented with lttng_ust_tracef() and/or lttng_ust_vtracef() calls and ready to run, use lttng-enable-event(1) to enable the lttng_ust_tracef:* event.

The lttng_ust_tracef() and lttng_ust_vtracef() events contain a single field, named msg, which is the formatted string output.

If you need to attach a specific log level to a lttng_ust_tracef()/lttng_ust_vtracef() call, use lttng_ust_tracelog(3) and lttng_ust_vtracelog(3) instead.

See also the Limitations section below for important limitations to consider when using lttng_ust_tracef() or lttng_ust_vtracef().

Example

Here’s a usage example of lttng_ust_tracef():

#include <stdlib.h>
#include <lttng/tracef.h>

int main(void)
{
    int i;

    for (i = 0; i < 25; i++) {
        lttng_ust_tracef("my message: %s, this integer: %d",
                         "a message", i);
    }

    return EXIT_SUCCESS;
}

This C source file, saved as app.c, can be compiled into a program like this:

$ cc -o app app.c -llttng-ust -llttng-ust-common

You can create an LTTng tracing session, enable the lttng_ust_tracef() events, and start the created tracing session like this:

$ lttng create my-session
$ lttng enable-event --userspace 'lttng_ust_tracef:*'
$ lttng start

Next, start the program to be traced:

$ ./app

Finally, stop the tracing session, and inspect the recorded events:

$ lttng stop
$ lttng view

Limitations

The lttng_ust_tracef() and lttng_ust_vtracef() utility macros were developed to make user space tracing super simple, albeit with notable disadvantages compared to custom, full-fledged tracepoint providers:

Thus, lttng_ust_tracef()/lttng_ust_vtracef() are useful for quick prototyping and debugging, but should not be considered for any permanent/serious application instrumentation.

lttng_ust_vtracef() does not have a STAP_PROBEV() call, because STAP_PROBEV() does not support va_list. If you need it, you should emit this call yourself.

See lttng-ust(3) to learn more about custom tracepoint providers.

Bugs

If you encounter any issue or usability problem, please report it on the LTTng bug tracker <https://bugs.lttng.org/projects/lttng-ust>.

Resources

Copyrights

This macro is part of the LTTng-UST project.

This macro is distributed under the GNU Lesser General Public License, version 2.1 <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html>. See the for more details.

Thanks

Thanks to Ericsson for funding this work, providing real-life use cases, and testing.

Special thanks to Michel Dagenais and the DORSAL laboratory <http://www.dorsal.polymtl.ca/> at École Polytechnique de Montréal for the LTTng journey.

Authors

LTTng-UST was originally written by Mathieu Desnoyers, with additional contributions from various other people. It is currently maintained by Mathieu Desnoyers <mailto:mathieu.desnoyers@efficios.com>.

See Also

lttng_ust_tracelog(3), lttng_ust_vtracelog(3), lttng-ust(3), lttng(1), printf(3)

Referenced By

lttng-ust(3), lttng_ust_tracelog(3), tracef(3).

The man page lttng_ust_vtracef(3) is an alias of lttng_ust_tracef(3).

01/10/2024 LTTng 2.13.7 LTTng Manual