2010-08-30 1 views
1

Я спросил в другой теме, как профилировать мои вещи, и люди дали мне много хороших ответов, за исключением того, что, когда я пытался использовать несколько бесплатных профилировщиков, в том числе AMD Codeanalyst, например, они поддерживают только формат Microsoft PDB и MingW не может их генерировать.Хороший бесплатный профайлер, который поддерживает MingW32, пожалуйста?

Итак, какой профайлер может помочь мне профилировать многопоточное приложение с помощью сценариев Lua и скомпилировано с помощью MingW?

EDIT: gprof - это дерьмо, тент, который говорит, почему я его не хочу, прямо на месте ... Если я получу все функции, которые он зажжет как хлопотные, НИКАКИЕ из них не связаны с проблемой что у меня есть (есть определенное действие, которое вызывает значительное замедление, и я не могу понять, почему, и gprof тоже не может это понять)

+0

Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебник или другой ресурс вне сайта, не относятся к теме для переполнения стека, поскольку они склонны привлекать упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. – cybermonkey

ответ

4

Если вы не хотите использовать gprof, I'm not surprised.

Мне потребовалось некоторое время, чтобы выяснить, как это сделать под GDB, но вот что я делаю. Получите приложение и измените фокус на окно вывода приложения, даже если это только DOS-бокс. Затем я нажимаю клавишу Control-Break (пока она медленная). Затем GDB останавливается, и я делаю info нитки, и он рассказывает мне, какие темы там, как правило, 1 и 2. Я переключаюсь на поток, который я хочу, например thread 2. Затем я делаю bt, чтобы увидеть трассировку стека. Это говорит мне точно, что он делал, когда я нажимал Control-Break. Я делаю это несколько раз, например 10 или 20, и если есть проблема с производительностью, независимо от того, что она есть, она появляется на нескольких образцах стека. Чем медленнее он делает программу, тем меньше образцов я должен выполнить, прежде чем я ее увижу.

Полный анализ того, как и почему он работает, см. Эту ссылку.

P.S. Я также делаю ручка SIGINT остановка печати nopass, когда я запускаю GDB.

+1

Я предлагаю ** нить применить все bt **, чтобы отобразить все следы стека. – Loomchild

2

gprof не так ли?

Я думал, что MingW предоставил версию gprof для этого.

+0

Он обеспечивает gprof. – RBerteig

0

Если вы хотите просмотреть Lua-скрипты, я бы предложил использовать LuaProfiler: http://luaprofiler.luaforge.net/manual.html. Он работает очень хорошо.

Я бы настоятельно рекомендовал внедрить какие-то таймеры или собственный профилировщик, чтобы получить простой инструмент для профилирования. Очень простой - просто вывести время, когда попадаются определенные моменты в вашем коде, вывести их в текстовый файл, а затем написать простой сценарий lua или python для анализа файла и фильтрации интересной информации.

Я использовал эту (или несколько более сложную) версию профилирования для большинства моих хобби-проектов, и это оказалось очень полезным.

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

  • Нет связанных вопросов^_^