Този въпрос може да се нуждае от пояснение, за да решите между това, което в момента са 2 отговора. Зависи от какво имате нужда:
1) Трябва да знаете колко пъти се извиква всяка функция в прав списък/графичен формат на функции, съпоставени с # извиквания. Това може да доведе до двусмислени/неубедителни резултати, ако вашият код не е процедурен (т.е. функции, извикващи други функции в разклонена структура без неяснота какво извиква какво). Това е основна функционалност на gprof, която изисква повторно компилиране с -pg флаг.
2) Имате нужда от списък с функции в реда, в който са били извикани, това зависи от вашата програма коя е най-добрата/осъществима опция: a) АКО вашата програма се изпълнява и прекратява без грешки по време на изпълнение, можете да използвате gprof за тази цел. b) Опцията ELSE по-горе, използвайки dbg с точки за регистриране и прекъсване, е останалата опция, която научих, след като прочетох това.
3) Трябва да знаете не само реда, но, например, и аргументите на функцията за всяко повикване. Текущата ми работа е симулации във физиката на транспорта на частици, така че това АБСОЛЮТНО би било полезно за проследяване откъде идват аномалните резултати... т.е. когато аргументите, които се предават, спрат да имат смисъл. Предполагам, че един от начините да направите това е вариант на това, което е направил Employed Russian, с изключение на използването на следното:
(gdb) информационни аргументи
Регистрирането на резултатите от тази команда с всяка точка на прекъсване (зададена при всяко извикване на функция) дава аргументите на текущата функция.
person
opetrenko
schedule
02.09.2013