On 2020-01-31 6:17 p.m., Maxime Roussin-Bélanger wrote:
>> On 2020-01-31 4:55 p.m., Maxime Roussin-Belanger wrote:
>> > vtracef accepts a va_list argument to simplify tracing
>> > functions which use a va_list
>> >
>> > Here's an example from wpa_supplicant that I wanted to
>> > trace:
>> >
>> > void wpa_debug(int level, const char* fmt, ...) {
>> >
>> > va_list ap;
>> > va_start(ap, fmt);
>> >
>> > ...
>> > // The call I want to easily trace with vtracef
>> > vprintf(fmt, ap);
>> >
>> > ...
>> > va_end(ap);
>> > }
>> >
>> > wpa_debug is used a fair amount and it would be annoying to
>> > replace all the wpa_debug calls with tracef.
>> >
>> > With vtracef, it simplifies the find and replace effort by
>> > only changing it at one place.
>>
>> The shortcoming, as you mentiond on IRC, is that it doesn't support SDT
>> integration. The tracef
>> macro call has a `STAP_PROBEV` call, but it doesn't seem possible to use
>> that here. The number
>> of arguments in a va_list is known at runtime (in fact it's not really known
>> by the va_list itself),
>> whereas STAP_PROBEV wants to know the number of arguments at compile time.
>>
>> I think it would still be useful to have vtracef, for the use case explained
>> above, but have it
>> documented that it is not integrated with the stap probes (unless somebody
>> has a magic idea that
>> would make it work). But that will be for the maintainer to decide.
>
> Where would that be? In the man page? If so it would be the first time
> editing/creating a man page.
> It seems fairly simple, but I probably need some guidance on where to start.
I think it would make sense for tracef and vtracef to be documented in the same
man page, a bit like
printf and vprintf are documented in the same man page. Looking at how it's
done for printf/vprintf,
the vprintf man page is a symlink to printf's man page:
$ ls -l /usr/share/man/man3/printf.3.gz
-rw-r--r-- 1 root root 9.3K Feb 2 2018 /usr/share/man/man3/printf.3.gz
$ ls -l /usr/share/man/man3/vfprintf.3.gz
lrwxrwxrwx 1 root root 11 Feb 2 2018 /usr/share/man/man3/vfprintf.3.gz ->
printf.3.gz
So I suppose we could do the same. It will juste require a bit of
automake/Makefile magic.
The tracef man page doesn't mention its stap probe integration, but it probably
should. And then
it would be the place (maybe in the LIMITATIONS section) to say that vtracef
doesn't integrate a
stap probe.
>>
>> Note that if the feature is accepted, it will require at least a man page
>> update. An update in
>> doc/examples/demo-tracef/demo-tracef.c would also be nice, to have an
>> example of how it can be used.
>
> Looking at the example, maybe I should create another file demo-vtracef.c?
As you wish, I think either would be fine.
Simon
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev