perf annotate: Add --type-stat option for debugging
The --type-stat option is to be used with --data-type and to print
detailed failure reasons for the data type annotation.
$ perf annotate --data-type --type-stat
Annotate data type stats:
total 294, ok 116 (39.5%), bad 178 (60.5%)
-----------------------------------------------------------
30 : no_sym
40 : no_insn_ops
33 : no_mem_ops
63 : no_var
4 : no_typeinfo
8 : bad_offset
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo 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>
Cc: linux-toolchains@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Link: https://lore.kernel.org/r/20231213001323.718046-17-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
227ad32385
commit
61a9741e9f
@@ -70,6 +70,37 @@ struct annotated_data_type {
|
||||
|
||||
extern struct annotated_data_type unknown_type;
|
||||
|
||||
/**
|
||||
* struct annotated_data_stat - Debug statistics
|
||||
* @total: Total number of entry
|
||||
* @no_sym: No symbol or map found
|
||||
* @no_insn: Failed to get disasm line
|
||||
* @no_insn_ops: The instruction has no operands
|
||||
* @no_mem_ops: The instruction has no memory operands
|
||||
* @no_reg: Failed to extract a register from the operand
|
||||
* @no_dbginfo: The binary has no debug information
|
||||
* @no_cuinfo: Failed to find a compile_unit
|
||||
* @no_var: Failed to find a matching variable
|
||||
* @no_typeinfo: Failed to get a type info for the variable
|
||||
* @invalid_size: Failed to get a size info of the type
|
||||
* @bad_offset: The access offset is out of the type
|
||||
*/
|
||||
struct annotated_data_stat {
|
||||
int total;
|
||||
int no_sym;
|
||||
int no_insn;
|
||||
int no_insn_ops;
|
||||
int no_mem_ops;
|
||||
int no_reg;
|
||||
int no_dbginfo;
|
||||
int no_cuinfo;
|
||||
int no_var;
|
||||
int no_typeinfo;
|
||||
int invalid_size;
|
||||
int bad_offset;
|
||||
};
|
||||
extern struct annotated_data_stat ann_data_stat;
|
||||
|
||||
#ifdef HAVE_DWARF_SUPPORT
|
||||
|
||||
/* Returns data type at the location (ip, reg, offset) */
|
||||
|
||||
Reference in New Issue
Block a user