2013-07-11 2 views
-1

Я хочу использовать Shiny на базе большого кода на основе кода C++, но я бы предпочел не добавлять необходимые PROFILE_FUNC() звонки в мой источник. Я считаю, что достаточно легко написать скрипт, который для каждого исходного файла, regex-ищет определения функций, добавляет вызов макроса сразу после открытия скобки и передает результат в g ​​++; но это кажется ужасно очевидным случаем для кода исходного кода, поэтому мне трудно поверить, что никто не придумал лучшего решения.Простая C++ исходная аппаратура?

К сожалению, поиск по окрестностям Я мог найти только ссылки на инструменты LLVM/clang и нечетный исследовательский инструмент, которые выглядят как чрезмерно сложные решения для моей сравнительно простой проблемы. На самом деле, кажется, нет простого способа выполнить простые автоматические изменения кода для кода C/C++ непосредственно перед компиляцией.

Это так? Или я чего-то не хватает?

Обновление: Я забыл упомянуть об этом «C++ code base» - это родное приложение, которое я портирую на Android. Поэтому я не могу использовать ни gprof (который недоступен на Android), Valgrind (для которого требуется более старая версия NDK, чем то, что я использую), ни android-ndk-profiler (который предназначен для динамических библиотек, загружаемых в Android Activities , либо Java, либо native, а не простые исполняемые файлы). Отсюда мой взгляд на Блестящий.

Обновление 2: Несмотря на предыдущие претензии, мне удалось до build Valgrind on Android NDK r8e, поэтому я решил использовать его вместо Shiny. Однако я все еще думаю, что исходный вопрос верен: нет ли простого инструмента для выполнения простых изменений времени компиляции исходных файлов C/C++ - своего рода макропроцессор на стероидах?

+0

дргоГо доступен на андроид - с источником платформы - например, на Mac OS /prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6/bin/arm-eabi-gprof – gheese

+0

Инструмент посмертного gprof, да. Но без gprof lib для ссылки на исполняемый файл и создания дампа профиля, что хорошего в нем? – xperroni

ответ

0

Вы можете рассмотреть gprof или valgrind. Если память используется, gprof использует инструментальные средства, а valgrind - профилировщик на основе выборки. Ни один из них не требует комментировать исходный код.

+0

Проблема в том, что этот код на самом деле является родным приложением на C++, которое я переношу на Android. Насколько я знаю, gprof недоступен под Android, а Valgrind требует NDK r6 (я использую r8e). – xperroni

0

Вы можете использовать андроид НКА профилировщик профиль C/C++ кода Подробнее здесь

http://code.google.com/p/android-ndk-profiler/

используется дргиМ для анализа результатов

+0

К сожалению, профилировщик android ndk позволяет вам профилировать собственные * библиотеки *, а не простые исполняемые файлы. См. Подробности здесь: http://code.google.com/p/android-ndk-profiler/issues/detail?id=1&can=1&q=executable – xperroni

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