To pytanie może wymagać wyjaśnienia, aby zdecydować, jakie są obecnie 2 odpowiedzi. Zależy, czego potrzebujesz:
1) Musisz wiedzieć, ile razy każda funkcja jest wywoływana w prostym formacie lista/wykresu funkcji zgodnych z # zaproszeń. Może to prowadzić do niejednoznacznych/niejednoznacznych rezultatów, jeśli twój kod nie jest proceduralny (tj. Funkcje wywołujące inne funkcje w strukturze rozgałęzienia bez niejasności tego, co wywołuje co). Jest to podstawowa funkcjonalność gprof, która wymaga ponownej kompilacji z flagą -pg.
2) Potrzebujesz listy funkcji w kolejności, w jakiej zostały wywołane, zależy to od twojego programu, który jest najlepszą/możliwą opcją: a) JEŻELI twój program działa i kończy się bez błędów środowiska wykonawczego, możesz użyć gprof w tym celu. b) powyżej, stosując opcję ELSE DBG z logowaniem i złamać punktów jest pozostały opcja, że dowiedziałem się po przeczytaniu tego.
3) Trzeba wiedzieć nie tylko porządek, ale na przykład, argumenty funkcji dla każdego połączenia, jak również. Moja obecna praca jest symulacje fizyki transportu cząstek, więc to absolutnie być przydatne w tropieniu gdzie anomalne wyniki pochodzą z ... to znaczy, gdy argumenty uzyskiwanie przekazywane wokół zatrzymać sensu.Wyobrażam sobie jeden sposób, aby to zrobić, będzie to wariacja na temat tego, co Zatrudniony zrobił rosyjski wyjątkiem stosując następujący:
(gdb) Informacje args
Logging wyniki tego polecenia z każdego punktu krytycznego (ustawione przy każdym wywołaniu funkcji) podaje argumenty bieżącej funkcji.
Za pomocą dowolnego narzędzia: http://stackoverflow.com/questions/311840/tool-to-trace-local-function-calls-in-linux?lq=1 –
Możliwy duplikat funkcji [Make GDB print control function funkcji, jak się je nazywa] (http://stackoverflow.com/questions/311948/make-gdb-print-control-flow-of-functions-as-they-are- o nazwie) – jww
https://balau82.wordpress.com/2010/10/06/trace-and-profile-function-calls-w-gcc/ –