Ich suche nach einer Möglichkeit zu überprüfen, ob mein C-Projekt, das zu einem ELF kompiliert, unbenutzte Funktionen hat, und suchen Sie sie. Das sind Funktionen, die deklariert sind, aber nirgends in meinem Code aufgerufen werden.Ermitteln von nicht verwendeten Funktionen in C
Die Lösung kann einer der folgenden sein:
- Ein Dienstprogramm, das durch meine .c-Dateien geht, sie
- Ein Dienstprogramm zu analysieren, die durch meine kompilierte ELF-Datei geht, die Symbole hat, ist es statisch Analyse
- Ein Weg, um nicht verwendete Funktionen in gcc zu warnen (und -Wunused-Funktionen tun nicht, dass für globale Funktionen)
Die Lösung kann man nicht sein:
- Löschen von nicht verwendeten Funktionen in der Kompilierung, ohne zu wissen, welche Funktionen in der Laufzeit gelöscht wurden
- die ELF-Datei analysieren, da nicht jede Funktion wird in jedem Lauf wie
gprof
(einige Funktionen Tage dauern, bis sie aufgerufen werden werden aufgerufen, aber im Code-Fluss können Sie sehen, dass sie schließlich aufgerufen werden) - Ein Dienstprogramm, das tot Code innerhalb Funktionen entdeckt (dh Code nach einer Rückkehr von der Funktion), anstatt ungenutzt Funktionen
Danke
Eine hässliche Idee: Verketten Sie alle Ihre Code-Dateien vorübergehend in einer Datei, machen Sie alle Ihre Funktionen in dieser Datei statisch. Der Compiler wird Ihnen die unbenutzten mitteilen. Aber wahrscheinlich möchten Sie etwas schöner ... –
Vorschlag: die vorverarbeiteten Quellen können vielleicht ein besseres Thema der Analyse sein. – peterh
Verwenden Sie einen Compiler/Linker, der nicht referenzierte Funktionen entfernt und eine Liste dieser Funktionen ausgibt. –