• Dima Kogan's avatar
    perf script perl: Perl scripts now get a backtrace, like the python ones · f7380c12
    Dima Kogan authored
    We have some infrastructure to use perl or python to analyze logs
    generated by perf.  Prior to this patch, only the python tools had
    access to backtrace information.  This patch makes this information
    available to perl scripts as well.  Example:
    
      Let's look at malloc() calls made by the seq utility.  First we
      create a probe point:
    
          $ perf probe -x /lib/x86_64-linux-gnu/libc.so.6 malloc
          Added new events:
          ...
    
      Now we run seq, while monitoring malloc() calls with perf
    
          $ perf record --call-graph=dwarf -e probe_libc:malloc seq 5
          1
          2
          3
          4
          5
          [ perf record: Woken up 1 times to write data ]
          [ perf record: Captured and wrote 0.064 MB perf.data (6 samples) ]
    
      We can use perf to look at its log to see the malloc calls and the backtrace
    
          $ perf script
          seq 14195 [000] 1927993.748254: probe_libc:malloc: (7f9ff8edd320) bytes=0x22
                      7f9ff8edd320 malloc (/lib/x86_64-linux-gnu/libc-2.22.so)
                      7f9ff8e8eab0 set_binding_values.part.0 (/lib/x86_64-linux-gnu/libc-2.22.so)
                      7f9ff8e8eda1 __bindtextdomain (/lib/x86_64-linux-gnu/libc-2.22.so)
                            401b22 main (/usr/bin/seq)
                      7f9ff8e82610 __libc_start_main (/lib/x86_64-linux-gnu/libc-2.22.so)
                            402799 _start (/usr/bin/seq)
          ...
    
      We can also use the scripting facilities.  We create a skeleton perl
      script that simply prints out the events
    
          $ perf script -g perl
          generated Perl script: perf-script.pl
    
      We can then use this script to see the malloc() calls with a
      backtrace.  Prior to this patch, the backtrace was not available to
      the perl scripts.
    
          $ perf script -s perf-script.pl
          probe_libc::malloc  0 1927993.748254260  14195 seq   __probe_ip=140325052863264, bytes=34
                  [7f9ff8edd320] malloc
                  [7f9ff8e8eab0] set_binding_values.part.0
                  [7f9ff8e8eda1] __bindtextdomain
                  [401b22] main
                  [7f9ff8e82610] __libc_start_main
                  [402799] _start
          ...
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Link: http://lkml.kernel.org/r/87mvphzld0.fsf@secretsauce.netSigned-off-by: default avatarDima Kogan <dima@secretsauce.net>
    f7380c12
trace-event-perl.c 17.7 KB