LTTng-UST alternative to LD_PRELOAD
A message that is not in the archive (sent off-list or not yet received): 1339945703.2599.21.camel@DellE5500
Quoted 18 lines · Lars
Hello,
I have recently started to use LTTng-UST and am using
LD_PRELOADto make it possilbe to execute instrumented code on systems without LTTng-UST installed.To define
LD_PRELOADhowever affects too much. For instance all forked processes also get the library loaded. This can be fixed by removing the library from theLD_PRELOADvariable early in the main function. This looks odd and required some explaining in comments.Also, in my case, the instrumented program is started with a "wrapper" program which I can not alter. This wrapper also gets the library loaded.
As an alternative to using
LD_PRELOADI would like to use an explicit function, like;
Quoted 8 lines
int traceload(char const* library_path);that is called early in main (instead of the
LD_PRELOADenvironment manipulation) and loads the library with dlopen if it exists.I have already tried this (of course) and it almost works already. The tracepoints becomes visible but I get no trace data written. So I think a really small modification is needed.
Another alternative would be to implement an lttng-backend for latrace ( see: http://people.redhat.com/jolsa/latrace/index.shtml ).
Library calls from the following headers are supported as of version 0.5.11:
ctype.h dlfcn.h getopt.h ioctl.h libintl.h locale.h mman.h netdb.h pwd.h signal.h stat.h stdlib.h sysdeps term.h time.h unistd.h wait.h dirent.h fcntl.h inet.h latrace.h libio.h misc.h ncurses.h pthread.h resource.h socket.h stdio.h string.h syslog.h termios.h typedefs.h utmp.h
So if we let latrace optionally emit lttng events for call enter and exit we would instantly get support for tracing for _any_ library call.
--
Paul
Signature · 7 lines
Paul Woegerer | SW Development Engineer Mentor Embedded(tm) | Prinz Eugen Straße 72/2/4, Vienna, 1040 Austria P 43.1.535991320 Nucleus® | Linux® | Android(tm) | Services | UI | Multi-OS Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.
Quoted 11 lines · * Lars ([email protected]) wrote:
Hello,
I have recently started to use LTTng-UST and am using
LD_PRELOADto make it possilbe to execute instrumented code on systems without LTTng-UST installed.To define
LD_PRELOADhowever affects too much. For instance all forked processes also get the library loaded. This can be fixed by removing the library from theLD_PRELOADvariable early in the main function. This looks odd and required some explaining in comments.
good point. LD_PRELOAD was originally the only way we allowed lttng-ust to be loaded, because during the rc phase of the lttng-ust 2.0 development, we had issues with dlopening liblttng-ust. This has been fixed within the rc stages though, so we could go for a dlopen approach now.
Quoted 9 lines
Also, in my case, the instrumented program is started with a "wrapper" program which I can not alter. This wrapper also gets the library loaded.
As an alternative to using
LD_PRELOADI would like to use an explicit function, like;int traceload(char const* library_path);
or maybe:
int lttng_ust_dlopen(const char *library_path);
?
Quoted 2 lines
that is called early in main (instead of the
LD_PRELOADenvironment manipulation) and loads the library with dlopen if it exists.
yep, makes sense.
Quoted 6 lines
I have already tried this (of course) and it almost works already. The tracepoints becomes visible but I get no trace data written. So I think a really small modification is needed.
Is anything like this planned?
if you can provide a patch, I'd be glad to review & merge it.
Quoted 2 lines
Or can anybody give me a hint on what is missing?
Try running your app with the env. var LTTNG_UST_DEBUG=1 set. It might provide helpful info. If you still have problems, please post your patch as RFC along with specific test programs so we can look at the behavior.
Thanks,
Mathieu
Quoted 13 lines
I checked the mailing list a couple of months back but did not find anything.
Best Regards,
Lars Ekman_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com