Этот вопрос, возможно, нуждается в разъяснении, чтобы решить, между тем, что в настоящее время 2 ответа. Зависит от того, что вам нужно:
1) Вам нужно знать, сколько раз каждая функция вызывается в прямом списке/графическом формате функций, соответствующих # вызовам. Это может привести к неоднозначным/неубедительным результатам, если ваш код не является процедурным (т. Е. Функции, вызывающие другие функции в структуре ветвления без двусмысленности того, что вызывает то, что). Это базовая функция gprof, которая требует перекомпиляции с флагом -pg.
2) Вам нужен список функций в том порядке, в котором они были вызваны, это зависит от вашей программы, которая является наилучшей/выполнимой опцией: a) Если ваша программа запускается и завершается без ошибок времени выполнения, вы можете использовать gprof для этой цели. b) Опция ELSE выше с использованием dbg с регистрацией и точкой останова - это вариант слева, который я узнал, прочитав это.
3) Вам нужно знать не только порядок, но, например, аргументы функции для каждого вызова. Моя текущая работа - это моделирование в физике переноса частиц, поэтому это было бы полезно для отслеживания, когда происходят аномальные результаты ... т. Е. Когда передаваемые аргументы перестают иметь смысл.Я полагаю, один из способов сделать это будет вариацией на тему того, что предприятие была Россия, за исключением использования следующий:
(GDB) Информация ARGS
Logging результатов этой команды с каждой точкой излома (заданный при каждом вызове функции) дает аргументы текущей функции.
С помощью любого инструмента: http://stackoverflow.com/questions/311840/tool-to-trace-local-function-calls-in-linux?lq=1 –
Возможный дубликат [Сделать GDB контроль печати потока функций, как они называются] (http://stackoverflow.com/questions/311948/make-gdb-print-control-flow-of-functions-as-they-are-) – jww
https://balau82.wordpress.com/2010/10/06/trace-and-profile-function-calls-with-gcc/ –