[lttng-dev] decoding tracef msg string via babeltrace API

Jérémie Galarneau jeremie.galarneau at efficios.com
Tue Apr 9 13:02:06 EDT 2019


On Tue, 9 Apr 2019 at 04:36, Milian Wolff <milian.wolff at kdab.com> wrote:

> On Thursday, April 4, 2019 8:25:51 PM CEST Jérémie Galarneau wrote:
> > Hi Milian,
> >
> > I have pushed a fix [1] in the stable-1.5 branch that addresses the
> > issue you have encountered with using bt_ctf_get_field_list().
> > This makes it possible to consume a character sequence's content.
> >
> > The commit message contains an example to show how to essentially
> > perform what the 'ctf-text' format plug-in achieves by accessing the
> > internal string field.
> >
> > Let me know if that works for you and I'll release an updated version
> > of the 1.5 branch.
>
> Thank you, I'll try that out in the next days!
>
> But: why can't we make bt_ctf_get_string return the string for us? Why do
> we
> need to reinvent the wheel in consumers of the babeltrace API? You point
> out
>

Hi,

Strings, sequences and arrays are three different types in CTF.

bt_ctf_get_string() can only be used on CTF strings. In the babeltrace 1.x
API, those are expressed through 'bt_definition's that have a
'bt_declaration'
of type CTF_TYPE_STRING. It is not a general-purpose accessor to get
a field's content as a C-string.

Changing this in the 1.x release series goes against the design of the
API (dedicated functions per definition type) and would, arguably, be an
ABI breaking change.

As pointed out in the commit message, bt_ctf_get_char_array() is
a convenience function to access a character-array's contents as
a C-string. An equivalent function could be added for sequences.

Since you pointed-out a bug in the existing API, my priority was
in fixing that bug which prevented users from accessing the sequences'
contents at all in the "looks like a string" case. That fix can be
back-ported into existing releases and made available in a point-release.

Adding new APIs is an orthogonal concern. I'm not against a
convenience function that does what you want; but it won't be
shoe-horned into an existing one.

Jérémie



>
> Cheers
>


> that it's non-trivial to get the strings decoded properly, so I'd really
> appreciate if we get that code implemented once and then can leverage it
> everywhere.
>

> Generally, I don't understand why there's both, bt_ctf_get_string and
> bt_ctf_get_char_array in the first place....
>
-- 
> Milian Wolff | milian.wolff at kdab.com | Senior Software Engineer
> KDAB (Deutschland) GmbH, a KDAB Group company
> Tel: +49-30-521325470
> KDAB - The Qt, C++ and OpenGL Experts



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.lttng.org/pipermail/lttng-dev/attachments/20190409/58bc6ee2/attachment.html>


More information about the lttng-dev mailing list