Я работаю над проектом, в котором мне нужно найти, какие функции вызываются в различных программах Linux (написанных на C) при определенных входных данных. Мой текущий подход заключался в том, чтобы скомпилировать программу с -pg (опция профилирования), запустить ее и найти, какие функции вызываются при обработке вывода gprof. В выходном файле отображаются только функции, которые вызываются хотя бы один раз.
Очевидная проблема заключается в том, что только один процесс может записывать в выходной файл gprof. Если программа разветвляет несколько процессов, я не получаю результатов профилирования от других процессов.
Есть ли способ заставить gprof создавать выходной файл для каждого процесса (может быть, помечен pid)? В руководстве предлагается изменить каждый процесс в другой каталог, но я не хочу изменять исходный код для этого. Есть ли другой инструмент для Linux, который может помочь?