• Namhyung Kim's avatar
    perf annotate-data: Add debug messages · 90429524
    Namhyung Kim authored
    Add a new debug option "type-profile" to enable the detailed info during
    the type analysis especially for instruction tracking.  You can use this
    before the command name like 'report' or 'annotate'.
    
      $ perf --debug type-profile annotate --data-type
    
    Committer testing:
    
    First get some memory events:
    
      $ perf mem record ls
    
    Then, without data-type profiling debug:
    
      $ perf annotate --data-type | head
      Annotate type: 'struct rtld_global' in /usr/lib64/ld-linux-x86-64.so.2 (1 samples):
      ============================================================================
          samples     offset       size  field
                1          0       4336  struct rtld_global	 {
                0          0          0      struct link_namespaces*	_dl_ns;
                0       2560          8      size_t	_dl_nns;
                0       2568         40      __rtld_lock_recursive_t	_dl_load_lock {
                0       2568         40          pthread_mutex_t	mutex {
                0       2568         40              struct __pthread_mutex_s	__data {
                0       2568          4                  int	__lock;
      $
    
    And with only data-type profiling:
    
      $ perf --debug type-profile annotate --data-type | head
      -----------------------------------------------------------
      find_data_type_die [1e67] for reg13873052 (PC) offset=0x150e2 in dl_main
      CU die offset: 0x29cd3
      found PC-rel by addr=0x34020 offset=0x20
      -----------------------------------------------------------
      find_data_type_die [2e] for reg12 offset=0 in __GI___readdir64
      CU die offset: 0x137a45
      frame base: cfa=1 fbreg=-1
      found "__futex" in scope=2/2 (die: 0x137ad5) 0(reg12) type=int (die:2a)
      -----------------------------------------------------------
      find_data_type_die [52] for reg5 offset=0 in __memmove_avx_unaligned_erms
      CU die offset: 0x1124ed
      no variable found
      Annotate type: 'struct rtld_global' in /usr/lib64/ld-linux-x86-64.so.2 (1 samples):
      ============================================================================
          samples     offset       size  field
                1          0       4336  struct rtld_global	 {
                0          0          0      struct link_namespaces*	_dl_ns;
                0       2560          8      size_t	_dl_nns;
                0       2568         40      __rtld_lock_recursive_t	_dl_load_lock {
                0       2568         40          pthread_mutex_t	mutex {
                0       2568         40              struct __pthread_mutex_s	__data {
                0       2568          4                  int	__lock;
      $
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20240319055115.4063940-9-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    90429524
annotate-data.c 14.2 KB