[ktap] Re: [PATCH 1/2] userspace: add options to print sdt notes and symbols from DSO.

  • From: Azat Khuzhin <a3at.mail@xxxxxxxxx>
  • To: Jovi Zhangwei <jovi.zhangwei@xxxxxxxxx>
  • Date: Sun, 17 Nov 2013 17:32:03 +0400

On Sun, Nov 17, 2013 at 5:24 PM, Jovi Zhangwei <jovi.zhangwei@xxxxxxxxx> wrote:
> On Sun, Nov 17, 2013 at 5:16 AM, Azat Khuzhin <a3at.mail@xxxxxxxxx> wrote:
>> Examples:
>> ./ktap -F ./ktap # print symbols
>> ./ktap -M ./ktap # print sdt markers
>>
>> Don't available without libelf.
>>
>> Signed-off-by: Azat Khuzhin <a3at.mail@xxxxxxxxx>
>> ---
>> v2: make it more pretty
>>
>>  userspace/main.c | 28 ++++++++++++++++++++++++++++
>>  1 file changed, 28 insertions(+)
>>
>> diff --git a/userspace/main.c b/userspace/main.c
>> index 658c608..4761a1b 100644
>> --- a/userspace/main.c
>> +++ b/userspace/main.c
>> @@ -39,6 +39,7 @@
>>  #include "../interpreter/kp_obj.h"
>>  #include "../interpreter/kp_str.h"
>>  #include "../interpreter/kp_tab.h"
>> +#include "symbol.h"
>>
>>
>>  /*******************************************************************/
>> @@ -348,6 +349,10 @@ static void usage(const char *msg_fmt, ...)
>>  "  -v             : enable verbose mode\n"
>>  "  -s             : simple event tracing\n"
>>  "  -b             : list byte codes\n"
>> +#ifndef NO_LIBELF
>> +"  -F             : list available functions from DSO\n"
>> +"  -M             : list available sdt notes from DSO\n"
>> +#endif
>>  "  file           : program read from script file\n"
>>  "  -- cmd [args]  : workload to tracing\n");
>>
>> @@ -465,6 +470,14 @@ static const char *script_file;
>>  static int script_args_start;
>>  static int script_args_end;
>>
>> +#ifndef NO_LIBELF
>> +static int print_symbol(const char *name, vaddr_t addr, void *arg)
>> +{
>> +       printf("%s (0x%lx)\n", name, addr);
>> +       return 0;
>> +}
>> +#endif
>
> It should better to output the result like this:
>
> #./ktap -F /lib64/libc.so.6
>
> probe:/lib64/libc.so.6:symbol1
> probe:/lib64/libc.so.6:symbol2
> probe:/lib64/libc.so.6:symbol3
> ...
>
> #./ktap -M /lib64/libc.so.6
>
> sdt:/lib64/libc.so.6:set_jmp
> sdt:/lib64/libc.so.6:long_jmp
> sdt:/lib64/libc.so.6:lll_futex_wake

I added this options, to avoid dependency from readelf/nm.
But for now I think, it will be better to use output of this options
for copy-pasting.

I will update the patch.
Thank you.

> ...
>
> I think this can indicate user how to trace those symbols
> and sdt notes in direct way, perhaps user can copy-paste
> it in simple enough way.
>
> (In similar way, we also need to output all tracepoints
>  in future, that's not urgent now)
>
> Jovi.



-- 
Respectfully
Azat Khuzhin

Other related posts: