Я пишу pintool, собирающий метрики в подмножестве подпрограмм приложений (некоторые из них генерируются компилятором). Цель состоит в том, чтобы получить время выполнения этих подпрограмм.
Ниже приведен набор попыток, которые я уже дал:
- Конечно, делать это с помощью булавки — плохая идея из-за накладных расходов на виртуальную машину.
- Параметр gcc -finstrument-functions не распространяется на генерируемые им функции OpenMP.
- LD_PRELOAD не работает со статически связанными функциями OpenMP.
- Возможно, если бы pin позволял выгружать статически инструментированную сборку, мы могли бы избежать накладных расходов на виртуальную среду, но, насколько я знаю, это невозможно.
- Я знаю об инструментальном инструменте Maqao, который не использует виртуальную среду, но я хочу избежать использования слишком большого количества фреймворков или перевода моего pintool в скрипт maqao lua.
Я предполагаю, что у меня осталась ручная бинарная инструментация, но если у кого-то есть лучшее решение, помощь будет оценена по достоинству.