Компиляция с помощью -pg
инструментов вашего кода, чтобы gprof
отображала подробную информацию, см. руководство gprof, 9.1 Реализация профилирования
Профилирование работает, изменяя способ компиляции каждой функции в вашей программе, так что при ее вызове она будет хранить некоторую информацию о том, откуда она была вызвана. Исходя из этого, профилировщик может выяснить, какая функция вызвала его, и может подсчитать, сколько раз он был вызван. Это изменение выполняется компилятором, когда ваша программа компилируется с параметром -pg
, который заставляет каждую функцию вызывать mcount
(или _mcount
, или __mcount
, в зависимости от ОС и компилятора) в качестве одной из своих первых операций.
Подпрограмма mcount
, включенная в библиотеку профилирования, отвечает за запись в таблицу графа вызовов в памяти как своей родительской процедуры (дочерней), так и ее родительской родительской процедуры. Обычно это делается путем изучения кадра стека, чтобы найти как адрес дочернего элемента, так и адрес возврата в исходном родительском элементе. Поскольку это очень машинно-зависимая операция, сама mcount
обычно представляет собой короткую подпрограмму-заглушку на языке ассемблера, которая извлекает требуемую информацию, а затем вызывает __mcount_internal
(обычную функцию C) с двумя аргументами - frompc
и selfpc
. __mcount_internal
отвечает за поддержание графа вызовов в памяти, в котором записываются frompc
, selfpc
и количество проходов каждой из этих дуг вызовов.
...
Обратите внимание, что с таким инструментальным профилировщиком вы профилируете тот же код, который вы бы скомпилировали в выпуске, без инструментария профилирования. Есть накладные расходы, связанные с самим кодом инструментария. Кроме того, код инструментария может изменять использование кэша инструкций и данных.
В отличие от инструментального профилировщика, профилировщик выборки, такой как Intel VTune работает с неинструментированным кодом, проверяя счетчик программы целевой программы через регулярные промежутки времени, используя прерывания операционной системы. Он также может запрашивать специальные регистры ЦП, чтобы вы могли лучше понять, что происходит.
См. Также Инструменты профилировщика против выборки
person
Gregory Pakosz
schedule
03.09.2011