it-swarm.com.de

Tool zur Visualisierung des Codeflusses (C / C ++)

Haben Sie Vorschläge für Tools, die Ihnen 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?

70
Dprado

SourceInsight und nderstand for C++ sind die besten Tools für die C/C++ - Codeanalyse, einschließlich Flussdiagrammen.

28
aku

Die Profilerstellungssoftware gibt Ihnen eine Vorstellung davon, welche Funktionen aufgerufen wurden.

Wenn Sie Linux verwenden können, versuchen Sie KCachegrind

9
Thorsten79

Ich persönlich benutze den Debugger. Führen Sie den Code durch und sehen Sie, was er tut und wohin er geht.

Sie können es jedoch durch einige Dokumentationsgeneratoren ausführen, die (manchmal) helfen. Ein gutes Beispiel ist Sauerstoff .

8
gbjbaanb

Doxygen kann sehr gut Diagramme aus Code ohne Markup generieren, wenn Sie die Option EXTRACT_ALL aktivieren. Sie müssen GraphViz installiert haben, um Diagramme mit der Einstellung HAVE_DOT zu erstellen. Ich finde, es installiert zu haben und das Feld DOT_PATH leer zu lassen, funktioniert unter Windows einwandfrei, aber unter OS/X muss weiterhin direkt auf die Position des Punktwerkzeugs gezeigt werden.

Es gibt einen ausgezeichneten Code Spelunking Artikel in der ACM-Warteschlange, in dem mehr über die Verwendung von Sauerstoff und DTrace gesprochen wird.

8
Andy Dent

KScope, das auf dem Dienstprogramm cscope basiert, wenn Sie unter Linux (KDE) arbeiten. Das Beste, was ich jemals benutzt habe (und das ich die ganze Zeit benutzt habe), um in ein riesiges Stück ungewohnten Codes zu stöbern, den ich irgendwie modifizieren muss oder die API, die ich für meine Bedürfnisse verwenden soll. Zu seinen Merkmalen gehört die Querverweisdatenbank, die auf vielfältige Weise durchsucht werden kann: Sie können alle Verweise auf ein Symbol, seine globale Definition, Aufrufen/Aufrufen einer Funktion und vieles mehr finden. Es hat sogar eine eingebaute IDE und die Fähigkeit, einen Aufruf-Graphen anzuzeigen.

5
dekkard

Doxygen gibt Ihnen Klassenbeziehungsdiagramme, wenn Sie graphviz verwenden, auch wenn Sie nicht speziell darauf vorbereitet sind.

4
Douglas Mayle

Es gibt einige Tools wie Egypt http://www.gson.org/egypt/egypt.html , die jedoch nur funktionieren, wenn Sie mit der erwarteten GCC-Version übereinstimmen, die zum Kompilieren des Codes und der genauen Version von verwendet wurde der Callgraph-Generator. Gleiches 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, den Sie aus dem Programm kcachegrind folgen können).

3
OldMan

Ich habe vor einiger Zeit Borland Together verwendet und es hat gute Arbeit geleistet, Modelle aus Code zu generieren. Ich glaube, es wird sogar Sequenzdiagramme aus Code generieren. Denken Sie daran, wenn Ihr Code ein Durcheinander ist, wird auch Ihr Modell. Und wie ich mich erinnere, ist es nicht billig, aber manchmal kann man etwas Besonderes fangen.

1
Craig Tyler

Ich benutze persönlich Visual Studio-Debugger-Tools.

Es kommt mit der "Anrufer-Grafik" -Funktion, mit der Sie Dinge in kleinen Kästchen visualisieren können. Auch der Call Stack und die üblichen Uhrfunktionen sind normalerweise alles, was ich brauche

1
Eric

Es gibt auch AspectBrowser , was mit Eclipse 3.4.0 nicht sehr gut funktioniert

1
user23787

try AQtime , Es handelt sich um ein Profiling-Tool, das alle aufgerufenen Funktionen anzeigt (und die dafür benötigte Zeit). Sie können den Start- und Endpunkt für die Analyse festlegen. Sie haben eine 30-Tage-Testversion.

1
rec

ich habe ein Tool namens Visustin ausprobiert, das grafisch nicht sehr gut ist, aber das tut, was es sagt: Flowchart from Code. http://www.aivosto.com/visustin.html

1
rjdthegreat

Rational Quantify präsentiert auch ein Nice-Aufrufdiagramm.

1
QBziZ

doxygen ist ein kostenloses Tool zur Dokumentenerstellung (ähnlich wie Javadoc), mit dem auch Beziehungsdiagramme erstellt werden können.

0
luke

Doxygen, das Gute daran ist, dass Sie wissen, dass Ihr Code in Bezug auf die zyklische Abhängigkeit von Klassen hässlich/gut ist. Du wirst also gezwungen sein, deinen Code neu zu faktorisieren, obwohl es dir vielleicht nicht gefällt :-)

0
rptony

Slickedit eignet sich hervorragend zum Navigieren in großen Codeblöcken, die Sie nicht kennen. Mit der Tags-Funktion können Sie mit dem Code auf funktionaler Basis umgehen, ohne sich mit der Datei befassen zu müssen, in der er sich befindet.

Wenn Sie zu einer Methode, Klasse oder Variablen gelangen, die Sie nicht verstehen, drücken Sie einfach die Taste, um zu diesem Code zu wechseln, ihn zu überprüfen und dann die Pop-Tag-Funktion zu aktivieren. (diese sind an Tastatureingaben gebunden, daher geht es sehr schnell)

Sie können auch Suchreferenzen verwenden, um zu sehen, wo diese Funktion/Variable verwendet wird.

Spart viel Zeit, da Sie nicht herausfinden müssen, in welcher Datei sich etwas befindet.

0
boatcoder