2013-02-09 13 views
5

Ich bin auf der Suche nach einer Möglichkeit, die Symboltabelle eines C-Programms zu erhalten. Ich bin auf der Suche nach globalen und lokalen Variablen und deren Umfang, etc.Extrahieren Symboltabelle mit Clang

Hat Clang eine Option oder API, um diese Informationen auszugeben? Oder ein anderes Compiler-Framework, das dies einfach macht.

Antwort

1

Ich bin sicher, Clang verfügt über eine Reihe von Schnittstellen für den Zugriff auf Symboltabelleninformationen. Mein Verständnis ist, dass es nicht viel Dokumentation gibt, also müssen Sie nur den Quellcode untersuchen.

GCCXML tut dies für Top-Level-Definitionen. Es wird nicht über den Inhalt von Funktionen berichtet (z. B. werden Sie wahrscheinlich keine Einheimischen erhalten). Sie erhalten XML und danach sind Sie alleine.

Unser DMS Software Reengineering Toolkit bietet vollständige Parser für eine Vielzahl von C-Dialekten und erstellt Symboltabellen. Wenn Sie sie löschen möchten, bieten die [gut dokumentierten IMHO] Symboltabellen-APIs einfache Mittel zum Auflisten der Mitglieder. Normalerweise wollen Leute tun etwas mit solchen Informationen, wie zum Beispiel Code generieren oder ändern. DMS bietet eine umfangreiche Infrastruktur, um anspruchsvollere Analysen (einschließlich oder durch diese Symboltabellenstruktur) zu unterstützen und/oder den Code zu modifizieren.