KCacheGrind. Показывать только функции из моего кода

Я хочу профилировать мой код. Итак, я делаю:

valgrind --tool=callgrind my_program [programm arguments]
kcachegrind callgrind.out.x

Теперь у меня есть kcachegrind окно как это:

введите описание изображения здесь

Есть много основных и библиотечных функций, но как я могу настроить valgrind или же kcachegrind отследить только функции есть в моем коде (которые, конечно, вызывают функции библиотеки)?

Ожидаемый результат примерно такой:

  time  number of calls            function_name()
4,52%  569854          CSim2Sim  my_function1(int argc, char* argv[])
3,52%  452158          CSim2Sim  my_function2(int argc, char* argv[])
3,52%  36569           CSim2Sim  my_function3(int argc, char* argv[])
1,52%  1258            CSim2Sim  my_function4(int argc, char* argv[])

10

Решение

Перейдите в View -> Grouping и выберите ELF Object. В соответствующем окне инструментов выберите объект ELF приложения / библиотеки, и он покажет только функции внутри них.

Вы не сможете получить желаемый результат, хотя. Вы не можете измерить время с помощью Valgrind, он только считает инструкции и может оценить количество циклов и пропуски кэша. И callgrind также не показывает полную сигнатуру функции, он всегда отбрасывает аргументы и отображает только имя функции.

4

Другие решения

Valgrind предоставить средство для подавления конкретной ошибки или ошибки из определенного объектного файла или из некоторой библиотеки. Проверь это ссылка на сайт.

Согласно этой инструкции вы можете подготовить файл поддержки (например, a.supp) и передать его valgrind

valgrind —tool = callgrind —suppressions = / path / to / a.supp my_program [аргументы программы]

Я не использовал kcachegrind, но я уверен, что он должен предоставить некоторые возможности для изменения параметра командной строки valgrind.

2

Самая близкая вещь к тому, что вы ищете, это, вероятно, группировка. На панели инструментов: Вид -> Группировка. Затем вы можете выбрать либо для исходного файла или для ELF-объекта. Первый даст вам список исходных файлов, где вы можете выбрать файлы, которые вы написали, второй даст вам список объектов, в основном, библиотек и объекта с именем вашего исполняемого файла: выберите его, и вы должны только просматривать список звонков, сделанных в вашем исходном коде.

1

когда вы находитесь на OS X вы можете попробовать profilingviewer, он может скрывать системные функции на основе настраиваемых пресетов.

введите описание изображения здесь

0
По вопросам рекламы [email protected]