Профилирование g ++ приложения на MacOSX? - PullRequest
7 голосов
/ 16 февраля 2010

Мой стандартный способ профилирования в Linux:

1) compile with g++ -pg
2) run prog
3) gprof

Очевидно, что gprof работает на MacOSX 10.5, и я должен использовать Shark. Все учебники, которые я нашел в Shark, включают XCode (тогда как моя сборка сделана с Makefiels и g ++).

Может кто-нибудь опубликовать пошаговые инструкции по использованию shark в приложении, созданном на g ++? Скажите что-то вроде:

int main() { while(1); }

g++ blah.cpp -o blah; do I need to give it more command line arguments?

how do I use shark here?

1 Ответ

3 голосов
/ 16 февраля 2010

Инструментальное профилирование, такое как gprof, не особенно полезно, если только вы действительно не хотите знать о графах вызовов и количестве вызовов функций. Гораздо более полезным для анализа производительности является профилировщик выборки, и для этого инструмент Apple Shark (часть CHUD) является одним из лучших.

Вам действительно не нужно использовать XCode для создания приложения для профилирования под Shark - у меня есть инструменты командной строки, созданные с помощью Make-файлов, которые я постоянно профилирую с Shark. Вы можете либо автоматически запускать Shark из своего кода (для этого есть несколько разных API), либо использовать инструмент командной строки chudRemoteCtrl (man chudRemoteCtrl), или вы можете просто настроить параметры запуска в Shark, чтобы путь к исполняемому файлу, рабочий каталог, аргументы командной строки и т. д. Убедитесь, что вы создали приложение с -g, чтобы Shark могла отображать исходный код, а не разобранный объектный код.

Конфигурация Shark для инструмента командной строки http://www.freeimagehosting.net/uploads/386737a1fa.jpg

...