• Frank Ch. Eigler's avatar
    perf build-ids: Fall back to debuginfod query if debuginfo not found · c7a14fdc
    Frank Ch. Eigler authored
    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: default avatarJiri Olsa <jolsa@kernel.org>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Signed-off-by: default avatarFrank Ch. Eigler <fche@redhat.com>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c7a14fdc
build-id.c 20.7 KB