• F
    perf build-ids: Fall back to debuginfod query if debuginfo not found · c7a14fdc
    Frank Ch. Eigler 提交于
    During a perf-record, use the -ldebuginfod API to query a debuginfod
    server, should the debug data not be found in the usual system
    locations.  If successful, the usual $HOME/.debug dir is populated.
    
    Tested with:
    
      $ find .
      .
      ./ctags-debuginfo-5.8-26.fc31.x86_64.rpm
      ./usr
      ./usr/lib
      ./usr/lib/debug
      ./usr/lib/debug/.build-id
      ./usr/lib/debug/.build-id/ca
      ./usr/lib/debug/.build-id/ca/46f6ae6a0cee57d85abc1d461c49074248908d
      ./usr/lib/debug/.build-id/ca/46f6ae6a0cee57d85abc1d461c49074248908d.debug
      ./usr/lib/debug/usr
      ./usr/lib/debug/usr/bin
      ./usr/lib/debug/usr/bin/ctags-5.8-26.fc31.x86_64.debug
    
      $ debuginfod  -F .
      ...
    
      $ rm -rf ~/.debug/ ; mkdir ~/.debug
    
      $ perf record make tags
        BUILD:   Doing 'make -j8' parallel build
        GEN      tags
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.107 MB perf.data (1483 samples) ]
    
      $ find ~/.debug | grep ctags
      /home/jolsa/.debug/usr/bin/ctags
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d/elf
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d/probes
    
      $ rm -rf ~/.debug/ ; mkdir ~/.debug
    
      $ DEBUGINFOD_URLS=http://localhost:8002 perf record make tags
        BUILD:   Doing 'make -j8' parallel build
        GEN      tags
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.108 MB perf.data (1531 samples) ]
    
      $ find ~/.debug | grep ctag
      /home/jolsa/.debug/usr/bin/ctags
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d/debug
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d/elf
      /home/jolsa/.debug/usr/bin/ctags/ca46f6ae6a0cee57d85abc1d461c49074248908d/probes
    
    Note the 'debug' file is created in the last run.
    
    Note that currently the debuginfo data are downloaded only on record path,
    we still need add this support to perf build-id/report.. and test ;-)
    Tested-by: NJiri Olsa <jolsa@kernel.org>
    Signed-off-by: NJiri Olsa <jolsa@kernel.org>
    Signed-off-by: NFrank Ch. Eigler <fche@redhat.com>
    Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    c7a14fdc
Makefile 9.4 KB