Haben Sie Vorschläge für Tools, die das Verständnis von C/C++-Code erleichtern? Wir haben gerade ein großes Stück Software geerbt, das von anderen geschrieben wurde, und wir müssen uns schnell damit vertraut machen. Irgendwelche Ratschläge zu Tools, die diese Aufgabe vereinfachen könnten?
Tool zur Visualisierung des Codeflusses (C/C++) [closed]
SourceInsight und Verstehe für C++ sind die besten Tools, die Sie für die Analyse von C/C++-Code bekommen können, einschließlich Flussdiagrammen.
-
Ich möchte wissen, ob es Tools für Linux gibt?
– Yongqiang Zhou
19. April 2014 um 7:14 Uhr
-
CppDepend(cppdepend.com) generiert Anrufgraphen, Abhängigkeitsgraphen mit vielen interessanten Funktionen und funktioniert auch für Linux.
– James vom CppDepend-Team
12. Juli 2017 um 17:06 Uhr
Thorsten79
Profiling-Software gibt Ihnen Aufschluss darüber, welche Funktionen aufgerufen wurden.
Wenn Sie Linux verwenden können, versuchen Sie es KCachegrind
Andy Dent
Sauerstoff ist sehr gut darin, Diagramme aus Code zu generieren, ohne Markup anzuwenden, wenn Sie die Option EXTRACT_ALL aktivieren. Du brauchst GraphViz installiert, um Diagramme zu erhalten, die mit der Einstellung HAVE_DOT generiert wurden. Ich finde, dass es unter Windows gut funktioniert, wenn es installiert ist und den DOT_PATH leer lässt, aber unter OS / X muss immer direkt auf den Speicherort des Punktwerkzeugs verwiesen werden.
Es gibt eine ausgezeichnete Code-Spelunking Artikel in der ACM-Warteschlange, in dem mehr über die Verwendung von Doxygen und DTrace gesprochen wird.
gbjbaanb
Ich persönlich verwende den Debugger. Führen Sie den Code durch und sehen Sie, was er tut und wohin er führt.
Sie können es jedoch durch einige Dokumentationsgeneratoren ausführen, die (manchmal) helfen. Ein gutes Beispiel ist Sauerstoff.
KScope baut auf dem cscope-Dienstprogramm auf, wenn Sie Linux (KDE) verwenden. Das Beste, was ich je benutzt habe (und die ganze Zeit benutze), um mich in ein riesiges Stück unbekannten Codes zu vertiefen, den ich irgendwie modifizieren muss oder welche API ich für meine Bedürfnisse verwenden soll. Zu seinen Funktionen gehört die Querverweisdatenbank, die auf vielfältige Weise durchsucht werden kann: Sie können alle Referenzen eines Symbols finden, seine globale Definition, Aufrufer/Aufgerufene einer Funktion finden und vieles mehr. Es verfügt sogar über eine integrierte IDE und die Möglichkeit, ein Anrufdiagramm anzuzeigen.
Douglas Mayle
Sauerstoff gibt Ihnen Klassenbeziehungsdiagramme, wenn Sie graphviz verwenden, auch wenn Sie sich nicht speziell darauf vorbereitet haben.
Alter Mann
Es gibt einige Tools wie Ägypten http://www.gson.org/egypt/egypt.html das funktioniert, aber nur, wenn Sie mit der erwarteten GCC-Version übereinstimmen, die zum Kompilieren des Codes und der genauen Version des Callgraph-Generators verwendet wird. Dasselbe gilt für Codeviz http://www.csn.ul.ie/~mel/projects/codeviz/
Eine andere Option ist valgrind, das im Cachegrind-Modus verwendet wird (es generiert eine Art Callgraph, dem Sie vom kcachegrind-Programm folgen können.
@casperOne: warum ist das “nicht konstruktiv”?! Es ist für jeden nützlich … und konstruktiv!
– Libellen
31. August 2012 um 14:30 Uhr
@arnaud Fragen zur Einkaufsliste sind nicht konstruktiv. blog.stackoverflow.com/2010/11/qa-is-hard-lets-go-shopping
– casperOne
31. August 2012 um 14:31 Uhr
@casperOne: Der von Ihnen erwähnte Artikel beschreibt Fragen zu Empfehlungen für den Kauf von Hardware und so weiter. Definitiv abzulehnende Fragen. In diesem Fall geht es um Werkzeuge und Techniken zur Lösung eines bestimmten Problems, nämlich um das Verständnis von großem Code zu unterstützen. Ich persönlich finde die Brücke zwischen den beiden ziemlich groß.
– Libellen
31. August 2012 um 14:39 Uhr
grok2.com/code_comprehension.html
– Ciro Santilli OurBigBook.com
4. Juli 2015 um 5:56 Uhr
Denn das ist Stack Overflow. Hier ist jede Frage entweder nicht konstruktiv, dumm oder als Duplikat geschlossen. Und jeder kann Ihre Beiträge bearbeiten, um ihre Bedeutung vollständig zu ändern, damit sie die Frage beantworten können, die Sie nie gestellt haben, und leichter einige Punkte erhalten.
– SasQ
30. April 2019 um 18:16 Uhr