Профилировщик, который присоединяется к запущенным процессам? - PullRequest
8 голосов
/ 22 февраля 2011

Мне нужен хороший профилировщик как для Windows, так и для Linux (они не обязательно должны быть одинаковыми; отдельные рекомендации для каждой ОС подходят), который можно подключить к уже запущенному процессу, который не был скомпилирован ни в одном «специальном» и предоставьте мне статистику о том, в каких функциях процесс проводит большую часть своего времени. У меня есть какой-то давно работающий научный код, и я хочу получить снимки того, где он проводит большую часть своего времени на разных этапах выполнения, и возможность получить результаты без необходимости запуска всей программы от начала до конца .

Компилятор, который я использую (Digital Mars D), поставляется с профилировщиком инструментов. Это слишком медленно для работ, которые я выполняю. Так как меня интересует только выявление основных узких мест, я хочу что-то быстрое и простое в использовании, даже если это только приблизительно точно. В идеале он также должен иметь возможность профилировать все потоки одновременно и дать мне сводный отчет.

В Linux я использовал GDB в качестве профилировщика выборки для бедного человека (несколько раз останавливал мое приложение и смотрел, в какой функции он находится). По сути, я ищу более автоматизированную версию.

Последнее требование: в Linux его должно быть легко установить без привилегий root, так как я собираюсь запустить его на сервере, к которому у меня нет доступа root.

Редактировать: Хотя код был написан на D, модель компиляции D и т. Д. Достаточно похожа на C, поэтому инструменты, написанные для C, должны нормально работать.

Ответы [ 5 ]

18 голосов
/ 22 февраля 2011

Если у вас довольно свежее ядро, вы можете использовать perf:

perf record -p <pid> -g

... затем perf report как только вы соберете достаточно образцов.

3 голосов
/ 22 февраля 2011

Вы ищете опрофиль:

http://oprofile.sourceforge.net/

2 голосов
/ 22 февраля 2011

Я не пробовал, но xProf был написан специально для D. Это статистический профилировщик.

2 голосов
/ 22 февраля 2011

Для Linux попробуйте Zoom . Кроме того, для грубой работы lsstack полезно для поиска узких мест.

0 голосов
/ 24 февраля 2018

Windows Performance Recorder (WPR) и Windows Performance Analyzer (WPA) являются лучшими инструментами профилирования для Windows 8 и выше. Xperf действительно хорошо работает в Windows 7.

...