[lttng-dev] linking of tracepoint probes

Gerlando Falauto gerlando.falauto at keymile.com
Wed May 21 04:57:36 EDT 2014


Hi Jérémie,

On 05/20/2014 06:34 PM, Jérémie Galarneau wrote:
> On Tue, May 20, 2014 at 12:09 PM, Gerlando Falauto
> <gerlando.falauto at keymile.com> wrote:
>> Hi,
>>
>> I played a bit more and came to the following conclusion:
>>
>> - if I compile the application statically (so the tracepoint calls as well
>> as their providers are linked with the main executable), tracepoints work
>> but tracef() doesn't
>>
>
> You need to enable the DEBUG log level. See the USAGE WITH TRACEF
> section of the lttng-ust man page.

I do enable it. See from my first email:

lttng enable-event -u -a --loglevel=TRACE_DEBUG

Really, in both cases what I do at userspace level is exactly the same.
The only difference is in how I compile and link the application.
And I can get either tracef() or tracepoints to work, but never both at 
the same time.

Thank you,
Gerlando

>
> Jérémie
>
>> - if I compile and link the tracepoints, as well as the tracepoint calls,
>> within a shared library, tracef() works but the tracepoint doesn't
>>
>> - if I change the above setting and recompile without cleaning first, I end
>> up with the following message:
>>
>> LTTng-UST: Error (-17) while registering tracepoint probe. Duplicate
>> registration of tracepoint probes having the same name is not allowed.
>> Aborted
>>
>> So this means I'm doing something wrong with linking and/or libraries.
>> As if I had the same symbol defined in two different places and one would
>> win over the other according to how I'm compiling.
>> Since I really have no clue how this whole machinery works, could someone
>> please shed some light on this topic?
>>
>> Thank you!
>> Gerlando
>>
>> On 05/16/2014 10:14 AM, Gerlando Falauto wrote:
>>>
>>> Hi,
>>>
>>> following up on my own mail:
>>>
>>> On 05/15/2014 07:39 PM, Gerlando Falauto wrote:
>>> [...]
>>>
>>>> If I put an additional tracef() call exactly where my tracepoint is
>>>> located, this gets traced without a problem. So the infrastructure
>>>> should be all working in my opinion.
>>>
>>>
>>> I repeated my test by compiling the same tracepoint provider directly on
>>> the target, and linking it to a no-brainer main(), whose body simply
>>> calls tracepoint() and tracef(). And I now get the opposite result!
>>>
>>> Now tracepoint() requests are perfectly recorded, whereas tracef() is
>>> nowhere to be seen.
>>>
>>> Any hints?
>>> Thank you!
>>> Gerlando
>>
>>
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
>
>




More information about the lttng-dev mailing list