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