Ich benutze Ubuntu 10.04 und studiere die Programmierung von Kernel-Objekten.Wie visualisiert man ein Diagramm von C-Strukturen, die zueinander gehören/zeigen?
Ich bin auf einige ziemlich komplizierte Strukturen gestoßen, die ich schwer zu lesen habe, also dachte ich, ich würde versuchen, ein Werkzeug zu finden, das mir helfen kann, sie zu visualisieren.
Das Einzige, was ich bisher finden konnte, ist VCG, die eine C Struct Visualization Example hat, die wie folgt aussieht:
, die wie etwas aussieht ich verwenden möchten.
Die erste Sache ist, dass das letzte VCG für Ubuntu verpackt vcg (1.30debian-6) in hardy ist - aber das .deb-Paket kann in Ubuntu Lucid ohne Probleme heruntergeladen und installiert werden.
Allerdings scheint dieses Paket nur ein VCG Zuschauer (ähnlich wie vcgviewer, würde ich raten). Die vcgviewer Seite Anmerkungen:
To generate compiler graph data with newest gcc compilers use:
gcc -g -da -dv -fdump-tree-original-raw -fdump-tree-all-all
Also, anscheinend würde ich diese Schalter zusammen mit gcc
verwenden, um beim Kompilieren, .vcg Graph-Dateien aus der C-Quelle zu erzeugen.
Das Problem ist jedoch, dass ich ein Kernel-Modul baue, das nur auf die Linux-Header verweist - da ich versuche, so viel wie möglich die Neukompilierung des gesamten Kernels zu vermeiden. Und es scheint, sobald ich versuche, -fdump-tree-...
Schalter in diesem Kontext zu verwenden (Kernel-Modul), gcc
möchte mit dem Kompilieren des Rests des Kernels auch beginnen! (und offensichtlich versagt, sowohl in der Zusammenstellung und die Erzeugung von .vcg Graphen - wie ich die Kernelquellen nicht haben, headers nur)
Also meine Frage ist - ist es ein Werkzeug, das wäre produzieren .vcg- oder .dot-Graphen von Strukturen - einfach eine einfache Text-Header-Datei als Eingabe verwenden? (es würde alle Abhängigkeiten nicht auflösen müssen - einfach diejenigen, die in Header-Dateien in demselben Verzeichnis)
EDIT: es ist eigentlich nicht so wichtig für mich, dass das Backend ist .vcg oder .dot insbesondere erwähnte ich sie nur weil ich sie bisher gefunden habe; jede Art von Software, die ähnliche Struktur Visualisierung, unabhängig von Backend ermöglichen würde, ist willkommen :)
PS: Beachten Sie, dass VCG Zuschauer zum Betrachten .vcg Graphen nicht verwenden möchten, können Sie die .vcg konvertieren Format in ein .dot-Format und verwenden Sie stattdessen graphviz
für die Visualisierung. Was für mich funktionierte, ist graph-easy - search.cpan.org für - das zuerst in Ubuntu mit Maverick Edition gepackt wurde, wie libgraph-easy-perl () aber die .deb-Datei kann - wieder - heruntergeladen und ohne Probleme installiert werden in Lucid). libgraph-easy-perl
installiert einen graph-easy
Skript, das dann wie Dinge zu tun erlaubt:
graph-easy test.vcg --as_dot | dot -Tpng -o test.vcg.png
Siehe auch „[graphviz-interest] VCG files“ und „Diego Novillo - Re: can't find VCG viewer“ für eine anderen VcG-zu-Punkt-Skript (, die leider nicht für mich arbeiten).
Hallo Bart, vielen Dank für Ihre Antwort! Diese SO-Seite: [Open-Source-Tool zur Visualisierung von C/C++ - Header-Datei-Abhängigkeiten? - Stack Overflow] (http://stackoverflow.com/questions/1190597/open-source-tool-to-visualize-cc-header-file-dependencies) hat eine nette, schnelle Einleitung zu doxygen - aber es scheint, dass es erfordert etwas rummachen :) Auch meine Frage bearbeitet, so ist klar, dass ich nicht unbedingt 'dot' oder ein bestimmtes Backend benötige; Jede Möglichkeit, Strukturen basierend auf Quelldateien zu visualisieren, würde ausreichen. Prost! – sdaau
@sdaau: Leistungsfähige Tools benötigen immer etwas Arbeit, damit sie genau das tun, was Sie wollen, vor allem, wenn es nicht die Standardanwendung ist, für die sie entwickelt wurden. Doxygen verwendet dot intern, aber seine Ausgabe sind direkt sichtbare Bilddateien. –
Hi Bart - nur um zu erwähnen: Ich stimme völlig zu: brauche etwas Arbeit! Ich war nur herumwandern, wenn es Alternativen gibt, die möglicherweise besser für die Aufgabe geeignet sind :) ... Danke für den Kommentar - Prost! – sdaau