On Monday, September 12, 2016 3:03:04 PM CEST Mathieu Desnoyers wrote: > ----- On Sep 6, 2016, at 3:00 PM, Milian Wolff [email protected] wrote: > > Hey all, > > > > where can I find more documentation on how to use sdt.h to add static > > tracepoints to user-land applications? If this is not the right place to > > ask, please refer to to elsewhere. > > Hi Milian,
Hey Mathieu, > LTTng-UST offers a "tracepoint" instrumentation facility, which can > optionally emit "sdt.h" probe points too for compatibility with SystemTAP. > > > I plan to upstream a collection of tracepoints to Qt, and possibly > > elsewhere. One problem I'm having right now is figuring out how to > > "design" the tracepoints such that they have minimal overhead. > > The main question here would be: do you want your instrumentation to be > usable with LTTng-UST ? If yes, then you want the tracepoint instrumentation > facility. Else, if you only plan on using SystemTAP, you can use sdt.h > instrumentation. > > > So my questions: > My answers will be about lttng-ust tracepoints. Thanks for the clarifications! Are the LTTNG-UST tracepoints also "zero- overhead" like the SystemTap once, i.e. put into a separate section and "only" one nop is added when tracing is disabled? I could not find such an information anywhere yet. > > What data types can I use for trace point arguments? > > See http://lttng.org/docs/#doc-c-application > > > Can I pass UTF16 strings? Do they need to be null-terminated? > > You should convert them to UTF8. > > A ctf_string() needs to be null-terminated. A ctf_sequence_text() is > not required to be null-terminated. See > http://lttng.org/docs/#doc-liblttng-ust-tp-fields This sounds like tracing would then incur a huge runtime overhead, when I need to convert all my UTF-16 strings to UTF-8. How does one deal with that? Looking at the API documentation, using ctf_array instead with ushort as C type sounds like a better approach. In a custom babeltrace consumer script, I could then convert it to UTF8 offline, if needed. The advantage here is that I have "zero" overhead while tracing, which is crucial for me to get the tracepoints accepted upstream in Qt, without hiding them behind a compiler switch. > > Can I pass structs? Or do I need to pass each member as an individual > > argument? > > You can pass pointers to structures to the tracepoint() call from your > application source code, and then you need to express each individual > field you want to serialize into the trace within the TP_FIELDS() macro. > Ref. http://lttng.org/docs/#doc-liblttng-ust-tp-fields Thank you. Bye -- Milian Wolff | [email protected] | Software Engineer KDAB (Deutschland) GmbH&Co KG, a KDAB Group company Tel: +49-30-521325470 KDAB - The Qt Experts
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ lttng-dev mailing list [email protected] https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
