LTTNG-UST-DL(3)
π LTTNG-UST-DL(3) π
okay so you found the LTTNG-UST-DL(3) page, and yes bestie it's from the LTTng Manual β but don't stress, this one's actually kind of iconic once you get it. it's the dynamic linker tracing helper, and it's about to make dlopen/dlclose your whole personality π
πΈ NAME πΈ
lttng-ust-dl β dynamic linker tracing (an LTTng-UST helper, iykyk)
β¨ SYNOPSIS β¨
so like, you just preload liblttng-ust-dl.so when you launch your app. that's it. that's the whole move:
$ LD_PRELOAD=liblttng-ust-dl.so my-app
π DESCRIPTION π
when liblttng-ust-dl.so gets preloaded before a given application even starts, it makes every single call to dlopen(3) and dlclose(3) inside that application get traced with LTTng-UST (peep lttng-ust(3) for the deets).
and if you wanna learn more about how to control LTTng tracing sessions, go look at lttng(1). it's giving documentation, it's giving control panel π«Ά
β οΈ Important β pls read this one, fr fr this LTTng-UST helper can also emit shared library load/unload events (see "Shared library load/unload tracking" inlttng-ust(3)). you should NOT use the event records generated by this helper (they're prefixed withlttng_ust_dl:) to track the loading and unloading of shared libraries, especially in situations where a dynamically loaded library loads its own dependencies. instead: do preloadliblttng-ust-dl.so, yes, but use the shared library load/unload event records β those are way more reliable β for your tracking analysis. trust. π₯
π¦ the LTTng-UST events you get π¦
here's everything available when you use this library. no gatekeeping π
lttng_ust_dl:dlopen
emitted when dlopen(3) is called. main character event honestly.
fields:
baddrβ base address of loaded library.memszβ size of loaded library in memory.flagsβ flags passed todlopen(3).pathβ path to loaded library file.has_build_idβ whether or not the loaded library has a build ID. if this field is1, you can expect that anlttng_ust_dl:build_idevent record follows this one (not necessarily immediately after).has_debug_linkβ whether or not the loaded library has debug link information. if this field is1, you can expect that anlttng_ust_dl:debug_linkevent record follows this one (not necessarily immediately after).
lttng_ust_dl:dlmopen
emitted when dlmopen(3) is called. namespace edition β¨
fields:
baddrβ base address of loaded library.memszβ size of loaded library in memory.nsidβ ID of the namespace in which the library is loaded (as passed todlmopen(3)).flagsβ flags passed todlmopen(3).pathβ path to loaded library file.has_build_idβ whether or not the loaded library has a build ID. if this field is1, you can expect that anlttng_ust_dl:build_idevent record follows this one (not necessarily immediately after).has_debug_linkβ whether or not the loaded library has debug link information. if this field is1, you can expect that anlttng_ust_dl:debug_linkevent record follows this one (not necessarily immediately after).
lttng_ust_dl:dlclose
emitted when dlclose(3) is called. the goodbye event π
fields:
baddrβ base address of loaded library.
lttng_ust_dl:debug_link
emitted when debug link information is found when loading a library with dlopen(3). if you want the lore, see Debugging Information in Separate Files at https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html β it explains debug links way better than I ever could π§
fields:
baddrβ base address of loaded library.filenameβ debug link file name.crcβ debug link file's CRC.
lttng_ust_dl:build_id
emitted when a build ID is found when loading a library with dlopen(3). same deal β see Debugging Information in Separate Files at https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html for more about build IDs π
fields:
baddrβ base address of loaded library.build_idβ build ID.
π BUGS π
if you run into any issue or usability problem, pls report it on the LTTng bug tracker: https://bugs.lttng.org/projects/lttng-ust β they genuinely wanna know, no cap π
π RESOURCES π
- LTTng project website β
http://lttng.org - LTTng documentation β
http://lttng.org/docs - Git repositories β
http://git.lttng.org - GitHub organization β
http://github.com/lttng - Continuous integration β
http://ci.lttng.org - Mailing list for support and development β
http://lists.lttng.org, hit uplttng-dev@lists.lttng.org - IRC channel β
irc://irc.oftc.net/lttng:#lttngonirc.oftc.net
π COPYRIGHTS π
this library is part of the LTTng-UST project. π«Ά
it's 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 COPYING file at https://github.com/lttng/lttng-ust/blob/v2.16/COPYING for more details.
β THANKS β
thanks to Ericsson for funding this work, providing real-life use cases, and testing β absolute legends, periodt π
special thanks to Michel Dagenais and the DORSAL laboratory at Γcole Polytechnique de MontrΓ©al (http://www.dorsal.polymtl.ca/) for the LTTng journey πΈ
π AUTHORS π
Okay bestie, gather round, because this is the origin story and it ate.
LTTng-UST was originally written by Mathieu Desnoyers, with additional contributions from various other people. Iconic behavior, honestly β one main character and a whole supporting cast showing up to help. π«Ά
It is currently maintained by Mathieu Desnoyers <mathieu.desnoyers@efficios.com>. That's the person to hit up, no cap. π
π SEE ALSO π
Go read these next, bestie, they're literally the rest of the lore:
lttng-ust(3)β the big one, the parent page, the moment β¨dlopen(3)β for when you wanna understand the dynamic-loader side of things π¦lttng(1)β the command-line tool itself, the actual vibe π
fr fr, if you're still confused after this page, those three will have your back. iykyk π
Okay that's the whole page, we made it to the end together, I'm so proud of you π₯Ήπ
This beauty is from LTTng 2.16.0, dated 08/27/2026 β screenshot it, frame it, put it on your wall, it's giving heirloom. πβ
π¦ where this page comes from
- arch rolling: lttng-ust 2.16.0-1 Β· LGPL-2.1-only AND MIT AND GPL-2.0-only AND BSD-3-Clause AND BSD-2-Clause AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms