On 06-06-24 15:43, Byron Hawkins wrote:
For the purposes of studying dead-code elimination in LLVM, I'd like to
generate a simple list of all the functions that are ever called by the
target program. There's no need for any timing or frequency reports or
backtraces or any other details. So far, the best solution I can find is
to filter callgrind output like this:
grep -E "^c?fn" callgrind/output.raw | cut -d " " -f 2- | grep -Ev
"^0x|^c?fn"
It doesn't seem highly reliable, since I'm just picking out entries by
sort of guessing, then checking the results with gdb (setting a
breakpoint on every symbol not encountered by callgrind). All target
programs are trivial unit tests with rigid, deterministic behavior, but
it would still be nicer to have a more formally defined approach for
extracting a precise set of function symbols for which invocation was
observed during the execution. Thanks in advance for any suggestions.
There are various ways to get the function names. I usually use a train
of commands like
awk '/^fn=.* .*/{print $2}' callgrind.out.3727 | sort | uniq -c | sort -n
(only printing the first field with the fn name from awk so not getting
the full arg list).
A+
Paul
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users