Я хочу использовать блестящий на большой базе кода C ++, но я бы не стал добавлять необходимые PROFILE_FUNC()
звонки на мой источник. Я полагаю, что достаточно просто написать скрипт, который для каждого исходного файла, regex-ищет определения функций, добавляет вызов макроса сразу после открывающей скобки и передает результат в g ++; но это кажется совершенно очевидным случаем инструментального обеспечения исходного кода, поэтому мне трудно поверить, что никто не придумал лучшего решения.
К сожалению, при поиске вокруг я смог найти только ссылки на инструментарий LLVM / clang и странный инструмент исследования, которые выглядят как слишком сложные решения моей сравнительно простой проблемы. На самом деле, кажется, нет простого способа выполнить простое автоматическое редактирование кода в коде C / C ++ непосредственно перед компиляцией.
Это так? Или я что-то упустил?
Обновить: Я забыл упомянуть, что «база кода C ++» является родным приложением, которое я портирую на Android. Поэтому я не могу использовать ни gprof (который недоступен в Android), ни Valgrind (который требует более старой версии NDK, чем то, что я использую), ни android-ndk-profiler (который предназначен для динамических библиотек, загружаемых операциями Android). или Java или нативные, не простые исполняемые файлы). Отсюда мой взгляд на сияние.
Обновление 2: Несмотря на предыдущие заявления, мне действительно удалось Сборка Valgrind на Android NDK r8e, поэтому я решил использовать его вместо Shiny. Тем не менее, я все еще думаю, что оригинальный вопрос верен: нет ли какого-либо простого инструмента для осуществления простых изменений во время компиляции в исходных файлах C / C ++ — своего рода макрос-препроцессор на стероидах?
Вы можете рассмотреть дргоЕ или же Valgrind. Если память служит, gprof использует инструментарий, а valgrind является профилировщиком на основе выборки. Ни один из них не требует аннотирования исходного кода.
Вы можете использовать Android ndk Profiler для профилирования кода C / C ++
Больше информации здесь
http://code.google.com/p/android-ndk-profiler/
Вы используете gprof для анализа результатов