| # 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)` | |