Профилировщик, который присоединяется к запущенным процессам?

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

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

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

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

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

8
задан dsimcha 21 February 2011 в 21:49
поделиться