blob: b4cae4a676c4b27bf579a068171df5db7940e7c5 [file] [view] [edit]
# 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.
```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.
```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.
```none
llvm-locstats --compare file1.out file1.withentryvals.out
```
```{image} locstats-compare.png
:align: center
```
## SEE ALSO
{manpage}`llvm-dwarfdump(1)`