[lttng-dev] [RELEASE] LTTng-UST 2.8.0 (Linux user-space tracer)

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Fri May 20 20:24:23 UTC 2016


Hi,

This is the end of the release candidate cycle for LTTng 2.8, with
the announcement of the 2.8.0 stable version!

LTTng-UST, the Linux Trace Toolkit Next Generation Userspace Tracer,
is a low-overhead application tracer. The library "liblttng-ust" enables
tracing of applications and libraries.

The "Isseki Nicho" LTTng release name is a microbrew beer, following
our usual theme.

Its description:

The result of a collaboration between "Dieu du Ciel!" and Nagano-based
"Shiga Kogen", Isseki Nicho is a strong Imperial Dark Saison offering a
rich roasted malt flavor combined with a complex fruity finish typical
of Saison yeasts.

Here are the new major features included in this release:

--- Shared object base address dump for mapping event to source code ---

If a user takes a UST trace and enables the "ip" and "vpid" contexts,
and the binaries with debug information are available, it is now
possible to infer the location in the source code (dubbed "source
callsite") for UST trace events.

Those contexts can be enabled by lttng using the following command:

$ lttng add-context -u -t ip -t vpid

In order to capture the load addresses of shared objects loaded
with dlopen(), the application should be launched with:

$ LD_PRELOAD="liblttng-ust-dl.so" <path/to/executable>

There is currently a pull request open against Babeltrace
(http://diamon.org/babeltrace) to add the mapping event to
source code feature needed with this LTTng-UST feature:

https://github.com/efficios/babeltrace/pull/30

Here is the produced Babeltrace output with this feature:
    [...]
    [19:53:41.648394410] (+0.000022616) colossus my_provider:my_first_tracepoint: { cpu_id = 2 }, { ip = 0x7F75AEDFB4D4, debug_info = { func = "foo", source_loc = "/home/efficios/example/libhello.c:7" }, vpid = 25577 }, { my_string_field = "hello, tracer", my_integer_field = 42 }
    [19:53:41.648423786] (+0.000029376) colossus my_provider:my_first_tracepoint: { cpu_id = 2 }, { ip = 0x7F75AEDFB5A6, debug_info = { func = "bar", source_loc = "/home/efficios/example/libhello.c:13" }, vpid = 25577 }, { my_string_field = "recoltes et semailles", my_integer_field = 57 }
    [19:53:41.648435726] (+0.000011940) colossus my_provider:my_other_tracepoint: { cpu_id = 2 }, { ip = 0x7F75AEDFB66B, debug_info = { func = "baz", source_loc = "/home/efficios/example/libhello.c:20" }, vpid = 25577 }, { some_field = 1729 }
    [...]

The Trace Compass project master branch currently supports
this mapping event to source code feature. It even allows
to directly open the associated source files with a "goto
source code" action. For more info, visit http://tracecompass.org .


--- Java Application Contexts ---

This new feature allows dynamic application contexts to be both saved
to a trace and used as an event filtering criterion.

An example showing how to define and populate Application Contexts is
provided as part of LTTng-UST's examples.

https://github.com/lttng/lttng-ust/blob/master/doc/examples/java-jul/ApplicationContextExample.java

Application contexts can be added to a channel by using, for example:
$ lttng add-context --jul -t '$app.retriever_name:context_name'

They can also be used to filter events:
$ lttng enable-event --jul my_application_event --filter
'$app.retriever_name:context_name > 52'

See the lttng-enable-event(1) and lttng-add-context(1) man pages for
more information.


Project website: http://lttng.org
Documentation: http://lttng.org/docs
Download link: http://lttng.org/download

Changelog:
2016-05-20 (Bike-to-Work Day) lttng-ust 2.8.0
        * Print DBG() message about compiler weak hidden symbol behavior
        * test: add test for gcc issue with weak hidden symbol on powerpc
        * Restrict Java context retriever names to a set of valid characters
        * Fix: Correctly compute Java agent list loggers response size
        * Add support for aarch64_be
        * Fix: Fix synchronization of LTTngAgent#dispose
        * Fix: Verify number of bytes contained in sessiond agent commands
        * Fix: Avoid potential null dereference with log4j loggers
        * Specify UTF-8 encoding for all Java agent commands
        * Fix: merge tap tests stdout and stderr
        * Documentation: ring buffer: SWITCH_FLUSH can be used when active
        * Fix: unchecked return value in trace_clock_read64_monotonic
        * Fix: portability: no arith on void pointer
        * Fix: add "has_build_id" and "has_debug_link" fields to debuginfo events
        * Fix: initialize build id and debug link flags to 0
        * Tests: Add tap-driver.sh for automake < 1.12
        * Tests: Replace prove by autotools tap runner
        * bootstrap: Standardize on autoreconf -vi
        * Harmonize bootstrap script across projects
        * lttng-ust(3): order environment variables
        * lttng-ust(3): fix syntax of env. variables section
        * lttng-ust(3): document $LTTNG_HOME
        * Fix: Java agent should use LTTNG_HOME
        * Fix: examples make distcheck failure
        * Cleanup: add static for internal symbols
        * Cleanup: Remove unused max() macros from ring_buffer_frontend.c
        * Use min_t/max_t macros in lttng-ust-elf.c
        * Tests: update ust-elf tests to reflect correct memsz computation
        * Fix: erroneous computation of ELF in-memory size
        * Make code and man pages share the same default values
        * Fix: remove NULL check of nonnull parameter in dlclose
        * Fix: endianness of integers received by filter

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list