Gewusst wie: Generieren von Abhängigkeitsdiagrammen für C- und C++-Code

Sie können mit diesem Visual Studio 2010 Feature Pack die Organisation und die Beziehungen in C und C++ visuell darstellen, indem Sie in Visual Studio 2010 Ultimate Abhängigkeitsdiagramme generieren. Anhand dieser Diagramme können Sie Abhängigkeiten im Quellcode, zwischen Binärdateien sowie zwischen Quelldateien und Headerdateien untersuchen, interpretieren und verwalten. Sie können z. B. Abhängigkeiten zwischen Binärdateien, Namespaces und Klassen visuell darstellen. Ein Diagramm stellt Codeelemente und deren Beziehungen als Satz von Knoten dar, die durch Links bzw. Ränder verbunden sind. Weitere Informationen finden Sie unter Visual Studio Feature Packs.

Wichtig

Sie müssen Visual Studio 2010 Feature Pack installieren, um diese Funktion verwenden zu können.

Damit diese Aufgabe mit Visual C- oder Visual C++-Projekten ausgeführt werden kann, muss Visual C# mit Visual Studio installiert sein.

Beachten Sie die folgenden Aspekte, wenn Sie Diagramme für C und C++-Code generieren:

  • Wenn Sie eine Projektmappe öffnen, die C- und C++-Projekte enthält, könnte die Aktualisierung der IntelliSense-Suchdatenbank etwas Zeit beanspruchen. Während dieser Zeit sind die Befehle zum Generieren von Abhängigkeitsdiagrammen für Quelldateien und Headerdateien nicht verfügbar.

    Tipp

    Bevor Sie ein Abhängigkeitsdiagramm für diese Dateien generieren, warten Sie, bis die IntelliSense-Datenbank die Aktualisierungen beendet hat. Sie können den Status dieser Aktualisierungen in der Visual Studio-Statusleiste überwachen. Weitere Informationen zu Meldungen, die angezeigt werden, weil bestimmte IntelliSense-Einstellungen deaktiviert sind, finden Sie unter Problembehandlung.

  • Der Begriff "Assembly" wird verwendet, um in der Benutzeroberfläche auf "Binärdateien" zu verweisen. Um beispielsweise Abhängigkeiten zwischen allen Binärdateien in der Projektmappe zu sehen, zeigen Sie im Menü Architektur auf Abhängigkeitsdiagramm generieren, und klicken Sie dann auf Nach Assembly.

    Tipp

    In den Diagrammen werden Abhängigkeiten für Binärdateien nur auf Binärdateiebene dargestellt. Abhängigkeiten innerhalb derselben Binärdatei, z. B. Methodenaufrufe und Verweistypen, werden nicht angezeigt.

  • Der Standardname des generierten Diagrammdokuments für C und C++-Code ist "AssemblyDependenciesN.dgml", wobei N die Versionsnummer des Dokuments ist. Sie können dieses Dokument jedoch jederzeit umbenennen.

  • Sie können ein Abhängigkeitsdiagramm für die ganze Visual Studio-Projektmappe oder für bestimmte Elemente generieren.

    Tipp

    Bei einer sehr großen Projektmappe kann die Analyse aller Dateien zum Generieren eines Abhängigkeitsdiagramms etwas Zeit beanspruchen. Es könnte auch eine Ausnahme wegen nicht ausreichendem Arbeitsspeicher ausgelöst werden. Reduzieren Sie in diesem Fall den Bereich der Projektmappe, oder verwenden Sie den Architektur-Explorer, um bestimmte Elemente und Beziehungen auszuwählen, bevor Sie das Diagramm generieren.

  • Gehen Sie zum Generieren eines Abhängigkeitsdiagramms für C- und C++-Code genauso vor wie für .NET-Code. Weitere Informationen finden Sie unter Gewusst wie: Generieren von Abhängigkeitsdiagrammen für .NET-Code.

Informationen zu Problemen, die beim Generieren von Abhängigkeitsdiagrammen für C oder C++-Code auftreten können, finden Sie unter Problembehandlung.

Anzeigen der Abhängigkeiten zwischen Quelldateien und Headerdateien

Sie können Abhängigkeiten zwischen C und C++-Quelldateien und Headerdateien visuell darstellen. Sie können den folgenden Bereich von Abhängigkeiten zur Visualisierung auswählen:

Abhängigkeitsdiagramm für systemeigenen Code

Abhängigkeitsdiagramm für eingeschlossene Dateien in einem C++-Projekt

  • Alle Quelldateien und Headerdateien in der Projektmappe

  • Die gerade geöffnete Datei sowie alle Quelldateien der obersten Ebene und Headerdateien

Darzustellende Abhängigkeiten

Schritte

Alle Quelldateien und Headerdateien in der Projektmappe

Zeigen Sie im Menü Architektur auf Abhängigkeitsdiagramm generieren, und klicken Sie dann auf By Included File (Nach eingeschlossener Datei).

HinweisHinweis
Wenn Sie diesen Befehl zum ersten Mal ausführen, muss Visual Studio die Projektdateien C oder C++ analysieren.Dieser Vorgang kann einige Zeit in Anspruch nehmen.Klicken Sie im angezeigten Meldungsfeld auf Abbrechen, um die Diagrammgenerierung abzubrechen.

Die gerade geöffnete Datei sowie alle Quelldateien der obersten Ebene und Headerdateien

TippTipp
Verwenden Sie zum Anzeigen von Abhängigkeiten auf zusätzlichen Ebenen den Umgebungsübersichtsmodus auf der Diagrammsymbolleiste, und wählen Sie hier die Ebene der Abhängigkeiten aus, die Sie sehen möchten.Weitere Informationen finden Sie unter Gewusst wie: Durchsuchen von und Navigieren in Diagrammdokumenten.
  1. Öffnen Sie eine Quelldatei oder eine Headerdatei.

    Die Datei wird im Code-Editor-Fenster geöffnet.

  2. Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Datei, und klicken Sie dann auf Generate Graph for Included Files (Diagramm für eingeschlossene Dateien generieren).

Abhängigkeitsdiagramm der ersten Ebene für H-Datei

Abhängigkeitsdiagramm für eine Headerdatei mit Quelldateien der obersten Ebene und Headerdateien

Problembehandlung

Die folgenden Probleme könnten auftreten, wenn Sie Abhängigkeitsdiagramme für C oder C++-Code generieren:

Problem

Mögliche Ursache

Lösung

Visual Studio reagiert nicht mehr, wenn Sie versuchen, im Menü Architektur ein Abhängigkeitsdiagramm zu generieren.

Die Programmdatenbankdatei (.pdb) ist möglicherweise beschädigt.

In einer PDB-Datei werden Debuginformationen gespeichert, z. B. Typ, Methode und Quelldateiinformationen.

Weitere Informationen finden Sie unter Programmdatenbankdateien (C++).

Erstellen Sie die Projektmappe neu, und versuchen Sie es dann erneut.

Bestimmte Einstellungen für die IntelliSense-Suchdatenbank sind deaktiviert.

Bestimmte IntelliSense-Einstellungen sind im Dialogfeld Optionen von Visual Studio möglicherweise deaktiviert.

Aktivieren Sie die Einstellungen, um sie verfügbar zu machen.

Weitere Informationen finden Sie unter Erweitert, C/C++, Text-Editor, Dialogfeld "Optionen".

Die Meldung Unbekannte Methode wird in einem Methodenknoten angezeigt.

Dieses Problem tritt auf, da der Name der Methode nicht aufgelöst werden kann.

Die Binärdatei weist möglicherweise keine Basisverschiebungstabelle auf.

Aktivieren Sie die Option /FIXED:NO im Linker.

Weitere Informationen finden Sie unter /FIXED (Feste Basisadresse).

Nur Binärdateien werden unterstützt, die auf x86-Architekturen ausgeführt werden.

Die Programmdatenbankdatei (.pdb) wird möglicherweise nicht erstellt.

In einer PDB-Datei werden Debuginformationen gespeichert, z. B. Typ, Methode und Quelldateiinformationen.

Weitere Informationen finden Sie unter Programmdatenbankdateien (C++).

Aktivieren Sie die Option /DEBUG im Linker.

Weitere Informationen finden Sie unter /DEBUG (Debuginfo generieren).

Die PDB-Datei kann an den erwarteten Speicherorten nicht geöffnet oder gefunden werden.

Stellen Sie sicher, dass die PDB-Datei an den erwarteten Speicherorten vorhanden ist.

Debuginformationen wurden aus der PDB-Datei entfernt.

Wenn die Option /PDBSTRIPED im Linker verwendet wurde, schließen Sie stattdessen die vollständige PDB-Datei ein.

Weitere Informationen finden Sie unter /PDBSTRIPPED (Private Symbole entfernen).

Der Aufrufer ist keine Funktion und ist entweder ein Thunk in der Binärdatei oder ein Zeiger im Datenabschnitt.

Wenn der Aufrufer ein Thunk ist, versuchen Sie, den Thunk mithilfe von _declspec(dllimport) zu vermeiden.

Weitere Informationen finden Sie unter:

Siehe auch

Konzepte

Visualisieren von vorhandenem Code

Weitere Ressourcen

Gewusst wie: Durchsuchen von und Navigieren in Diagrammdokumenten

Gewusst wie: Untersuchen von Code mit Abhängigkeitsdiagrammen

Gewusst wie: Bearbeiten und Anpassen von Diagrammdokumenten