1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
llvm-locstats - calculate statistics on DWARF debug location
============================================================
.. program:: llvm-locstats
SYNOPSIS
--------
:program:`llvm-locstats` [*options*] [*filename*]
DESCRIPTION
-----------
:program:`llvm-locstats` works like a wrapper around :program:`llvm-dwarfdump`.
It parses :program:`llvm-dwarfdump` statistics regarding debug location by
pretty printing it in a more human readable way.
The line 0% shows the number and the percentage of DIEs with no location
information, but the line 100% shows the information for DIEs where there is
location information in all code section bytes (where the variable or parameter
is in the scope). The line [50%,60%) shows the number and the percentage of DIEs
where the location information is between 50 and 60 percentage of its scope
covered.
OPTIONS
-------
.. option:: --only-variables
calculate the location statistics only for local variables
.. option:: --only-formal-parameters
calculate the location statistics only for formal parameters
.. option:: --ignore-debug-entry-values
ignore the location statistics on locations containing the
debug entry values DWARF operation
.. option:: --draw-plot
make histogram of location buckets generated (requires
matplotlib)
.. option:: --compare
compare the debug location coverage on two files provided, and draw
a plot showing the difference (requires matplotlib)
EXIT STATUS
-----------
:program:`llvm-locstats` returns 0 if the input file were parsed
successfully. Otherwise, it returns 1.
EXAMPLE 1
--------------
Pretty print the location coverage on the standard output.
.. code-block:: none
llvm-locstats a.out
=================================================
Debug Location Statistics
=================================================
cov% samples percentage(~)
-------------------------------------------------
0% 1 16%
(0%,10%) 0 0%
[10%,20%) 0 0%
[20%,30%) 0 0%
[30%,40%) 0 0%
[40%,50%) 0 0%
[50%,60%) 1 16%
[60%,70%) 0 0%
[70%,80%) 0 0%
[80%,90%) 1 16%
[90%,100%) 0 0%
100% 3 50%
=================================================
-the number of debug variables processed: 6
-PC ranges covered: 81%
-------------------------------------------------
-total availability: 83%
=================================================
EXAMPLE 2
--------------
Generate a plot as an image file.
.. code-block:: none
llvm-locstats --draw-plot file1.out
.. image:: locstats-draw-plot.png
:align: center
EXAMPLE 3
--------------
Generate a plot as an image file showing the difference in the debug location
coverage.
.. code-block:: none
llvm-locstats --compare file1.out file1.withentryvals.out
.. image:: locstats-compare.png
:align: center
SEE ALSO
--------
:manpage:`llvm-dwarfdump(1)`
|