2009-04-29 12 views
3

Ist es möglich, Visual Studio zu erhalten, alle Typinformation bei dem Kompilieren von C++ auszugeben? GCC hat GCC-XML und ich frage mich, ob es für VS2008 etwas Ähnliches gibt.C++ Geben Sie Informationen von VS2008 ein

Dank

BEN

+0

ich es klar, dass gemacht haben sollte ich nicht RTTI verwenden. – Ben

Antwort

2

eine Reihe von Lösungen für dieses Problem sind;

  1. gibt es natürlich die XML-Dokumentation.
  2. Sie können die zugeschrieben Quellenausgabe unter „C/C++“ aktivieren -> Ausgabedateien „Zugeschrieben Quelle expand“ und auch verschiedene Ebenen der Ausgabeanzeigen Assembler.

    Leider sind diese Verfahren recht aufwendig und unstrukturierte (das heißt manuelle Cracken von Syntax).

  3. RTTI wird durch-Standard für alle C/C++ Projekte aktiviert. Dies ist der Vorreiter von C# 's Reflexion, können Sie es verwenden, um sehr gut structured und genaue Informationen zu extrahieren.
  4. Name Mangling, kann vorhanden sein, auch wenn RTTI nicht verfügbar ist. C++ - Binärdateien können sich auf diese gepackte Formulierung der ursprünglichen Code-Verlangsamung verlassen, um Laufzeit-Polymorphismus oder andere OO'Ness-Templates zu ermöglichen;). Wie auch immer, auch wenn die Namensverfälschung nicht gut dokumentiert ist, gibt es einen API-Aufruf im Debug-SDK und sogar sogar in der Windows-Win32-APi, der die entstellte Darstellung für Sie "verzieren" wird. Sie müssen dann möglicherweise das nicht dekorierte Format konvertieren, in jedem Fall ist es an dieser Stelle ziemlich trivial.
  5. PDB-Dateien können Sie das DIA SDK verwenden, um von Ihnen kompilierte PDBs abzufragen. Es gibt mehrere Ausführlichkeitsstufen (öffentlich oder privat) in den Informationen, die in PDBs enthalten sind, aber es ist normalerweise mehr als genug.
  6. Betrachten Sie den New-Gen-Compiler, Phoenix, von MSR, hat es beeindruckende binäre/Quelle introspektive Fähigkeiten.
  7. CodeDom, können Sie die MSVC SDK und domänenspezifische Sprache (DSL) -Bibliotheken verwenden, um Ihren eigenen Code-Parser relativ einfach zu schreiben.
  8. Es gibt tatsächlich mehrere andere Automatisierungs-und Nicht-DSL-APIs in MSVC können Sie verwenden, um etwas zu erreichen, vielleicht nicht so umfassend, aber das hängt von Ihren Bedürfnissen ab. Wie auch immer, die meisten Beispiele und Informationen, die Sie über diese anderen APIs finden können, würden in BASIC geschrieben werden. Wenn Sie also VB nicht kennen (ich werde jedes Mal, wenn ich VB-Code anschauen muss, wirklich ratlos), kann Ihre Millage variieren.
  9. ich könnte weitermachen ....;), aber ich bin gut mit 9.
+0

Ben: Fehlende RTTI, mit welchen anderen Einschränkungen arbeiten Sie? Haben Sie das DIA SDK getestet? Dia2dump.c kommt mit Visual Studio. – RandomNickName42

+0

Ich untersuche immer noch alle diese Möglichkeiten (danke für so viele fantastische Ideen!). – Ben

+0

Ben: Sehen Sie sich dieses kürzlich veröffentlichte Mingw-Projekt an. "MinGW: Ein nativer Windows-Port der GNU Compiler Collection (GCC) mit frei verteilbaren Importbibliotheken und Headerdateien zum Erstellen nativer Windows-Anwendungen. Enthält Erweiterungen für die MSVC-Laufzeit zur Unterstützung der C99-Funktionalität." Die Source Navigator-Entwicklung Team hat eine Windows kompatible MinGW kompilierbare Version veröffentlicht, die NG4 heißt. http://developer.berlios.de/project/showfiles.php?group_id=8334. Es hat möglicherweise eine bessere Kompatibilität zu Windows-Header als gccxml Ports tun. – RandomNickName42

Verwandte Themen