Ich versuche, die genaue Anzahl der Funktionsaufrufe zu einer meiner implementierten C-Funktion in meinem Code zu finden. Das Projekt enthält mehrere C-Dateien. Was ist die einfachste Lösung, um herauszufinden, wie oft eine Funktion während der Ausführung des Programms aufgerufen wird? Insbesondere interessiert mich, wie oft eine bestimmte Funktion eine andere Funktion aufruft. Zum Beispiel habe ich eine C-Datei wie:Zählen der Anzahl der Funktionsaufrufe in einer ausführbaren Datei
//file1.c
int main(){
foo1();
return 0;
}
und andere C-Dateien wie:
//file2.c
void foo1(){
foo2();
...
foo2();
}
und
//file3.c
void foo2(){
foo3();
foo3();
foo3();
}
Jetzt habe ich meine letzte ausführbare a.out
und wollen wissen, wie viele mal foo3()
heißt innerhalb foo1()
. BTW, ich kompiliere und laufe mein Projekt unter Linux.
'foo3' aus anderen Funktionen aufgerufen? –
Wenn Sie dies innerhalb von foo3 wissen möchten, können Sie eine statische Variable innerhalb von foo3 deklarieren, die foo3 bei jedem Aufruf erhöht (eine statische Variable, die innerhalb einer Funktion deklariert ist, wird automatisch auf Null initialisiert und behält ihren Wert von einem Aufruf zum nächsten) . Andernfalls, wenn Sie dies von irgendwo im Programm wissen müssen, deklarieren Sie eine globale Variable, die foo3 bei jedem Aufruf erhöht. –
Müssen Sie das programmieren oder können Sie ein externes Tool dafür verwenden? –