2015-11-17 6 views
1

Я использовал инструмент valgrind - callgrind и kcachegrind для профилирования большого проекта и задавался вопросом, есть ли способ, который callgrind сообщает о статистике из всех функций (а не только самых дорогих функции).Сделать callgrind показать все вызовы функций в kcachegrind callgraph

Конкретно - Когда я визуализировал callgraph в kcachegrind, он включал в себя только те функции, которые довольно дороги, но мне было интересно, есть ли способ включить все функции из проекта в callgraph. Команда, используемая для создания профилирования информации приводится ниже:

valgrind --dsymutil=yes --tool=callgrind $EXE 

Я не уверен, если я должен давать какие-либо варианты VALGRIND или может быть скомпилировать приложение на другую оптимизации. Это может быть что-то тривиальное, но я не мог найти решение. Любые указатели на это высоко оценили.

Спасибо!

+0

Kcachegrind скроет функции с небольшим весом (некоторые ограничения могут быть изменены с помощью главного меню - настройки - как количество элементов в списках, а некоторые - с контекстным меню на вкладках графика). Вы также можете попробовать консольный инструмент 'callgrind_annotate', который не имеет ограничений. – osgx

ответ

2

Команда, которую я использую, это valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes $EXE, и насколько я видел, она включает в себя все функции в графе вызовов.

Надеюсь, это поможет.

4

enter image description here

Это произошло со мной вчера. Как показано на рисунке, я нашел в графе вызовов kcachegrind, есть меню правой кнопки мыши, в котором вы можете установить порог, над которым будет визуализироваться узел.

Существует также опция «нет минимума», однако ее нельзя выбрать. Я думаю, возможно, это потому, что, если каждая функция, независимо от того, насколько она тривиальна, занимает узел, график может быть слишком большим для обработки.

Я только что нашел, что сценарий gprof2dot может справиться с этим.
Сценарий может преобразовывать вывод callgrind в точку, который можно визуализировать как график. Сценарий имеет параметр -n PERCENTAGE, --node-thres=PERCENTAGE, чтобы исключить узлы ниже этого порогового значения [по умолчанию: 0,5]. Чтобы визуализировать все функции на графике, вы можете установить такой параметр, как -n 0.00001.

Я пробовал это, однако, поскольку сгенерированный граф слишком велик, программное обеспечение точки предупредило меня, что «граф слишком велик для растровых изображений каиро-рендеринга. Масштабирование по 0,328976 для соответствия». Но вы можете настроить выходной формат как eps, который может справиться с этим. Вы также можете изменить параметр, чтобы адаптировать свою цель.

Смежные вопросы