Verwenden von Code Maps zum Debuggen von Anwendungen

Gilt für:yes Visual Studio Visual Studio nofür Mac noVisual Studio Code

Codezuordnungen in Visual Studio können Ihnen helfen, in großen Codebasen, nicht vertrauten Code oder Legacycode verloren zu gehen. Wenn Sie beispielsweise debuggen, müssen Sie möglicherweise Code in vielen Dateien und Projekten anzeigen. Mithilfe von Code Maps können Sie in Codeabschnitten navigieren und Beziehungen zwischen ihnen verstehen. Auf diese Weise müssen Sie die den Code nicht gedanklich nachvollziehen oder ein separates Diagramm zeichnen. Wenn Sie die Arbeit unterbrechen müssen, können Code Maps Ihnen helfen, sich den Code wieder ins Gedächtnis zu rufen, an dem Sie arbeiten.

Code map - Map relationships in code

Ein grüner Pfeil zeigt, wo der Cursor im Editor angezeigt wird.

Details zu den Befehlen und Aktionen, die Sie beim Arbeiten mit Codezuordnungen verwenden können, finden Sie unter Durchsuchen und Neuanordnen von Codezuordnungen.

Erfahren Sie mehr über das Debuggen in Visual Studio mit dem Debuggertool.

Hinweis

Zum Erstellen und Bearbeiten von Codezuordnungen benötigen Sie Visual Studio Enterprise Edition. In Visual Studio Community- und Professional-Editionen können Sie Diagramme öffnen, die in der Enterprise-Edition generiert wurden, aber Sie können sie nicht bearbeiten.

Das Problem verstehen

Nehmen Sie an, in einem Zeichenprogramm, an dem Sie arbeiten, liegt ein Fehler vor. Um den Fehler zu reproduzieren, öffnen Sie die Lösung in Visual Studio, und drücken Sie F5 , um das Debuggen zu starten.

Wenn Sie eine Linie zeichnen und meinen letzten Strich rückgängig machen, geschieht nichts, bis Sie die nächste Zeile zeichnen.

Code map - Repro bug

Daher beginnen Sie mit der Untersuchung, indem Sie nach der Undo-Methode suchen. Sie finden diese in der PaintCanvas-Klasse.

Code map - Find code

Die Codezuordnung starten

Nun beginnen Sie mit dem Mapping der undo-Methode und ihrer Beziehungen. Fügen Sie im Code-Editor die undo-Methode und die Felder, auf die sie verweist, zu einer neuen Code Map hinzu. Wenn Sie eine neue Zuordnung erstellen, kann es einige Zeit dauern, den Code zu indizieren. Aufgrund der Indizierung können spätere Vorgänge schneller ausgeführt werden.

Code map - Show method and related fields

Tipp

Die letzten zur Zuordnung hinzugefügten Elemente werden grün hervorgehoben. Der grüne Pfeil zeigt die Position des Cursors im Code. Pfeile zwischen Elementen stellen verschiedene Beziehungen dar. Weitere Informationen zu Elementen in der Map enthalten die entsprechenden QuickInfos. Fahren Sie zur Anzeige einfach mit dem Mauszeiger über das Element.

Code map - Show tooltips

Um die Codedefinition für jedes Feld anzuzeigen, doppelklicken Sie auf das Feld auf der Karte, oder wählen Sie das Feld aus, und drücken Sie F12. Der grüne Pfeil wird zwischen den Elementen in der Zuordnung verschoben. Der Cursor im Code-Editor wird automatisch ebenfalls bewegt.

Screenshot of a code map window with the history field selected and a code editor window where all instances of history are highlighted.

Screenshot of a code map window with the paintObjects field selected and a code editor window where all instances of paintObjects are highlighted.

Tipp

Sie können den grünen Pfeil in der Zuordnung auch verschieben, indem Sie den Cursor im Code-Editor bewegen.

Beziehungen zwischen Teilen des Codes verstehen

Nun möchten Sie wissen, in welchem anderen Code die Felder history und paintObjects verwendet werden. Sie können der Zuordnung alle Methoden hinzufügen, die auf diese Felder verweisen. Dies kann von der Map oder vom Code-Editor aus erfolgen.

Code map - Find all references

Open a code map from the code editor

Hinweis

Wenn Sie Elemente aus einem Projekt hinzufügen, das von mehreren Apps wie Windows Phone oder Windows Store gemeinsam genutzt wird, werden diese Elemente immer mit dem derzeit aktiven App-Projekt in der Map angezeigt. Wenn Sie also den Kontext auf ein anderes App-Projekt ändern, ändert sich auch der Kontext auf der Map für alle neu hinzugefügte Elemente aus dem freigegebenen Projekt. Vorgänge, die Sie mit einem Element in der Zuordnung ausführen, gelten nur für solche Elemente, die denselben Kontext gemeinsam verwenden.

Ändern Sie das Layout, um den Ablauf der Beziehungen neu anzuordnen und die Zuordnung besser lesbar zu machen. Sie können Elemente in der Zuordnung auch verschieben, indem Sie sie an andere Positionen ziehen.

Screenshot of a code map window with the Layout menu open and the Left to Rgiht command selected.

Tipp

Standardmäßig ist das inkrementelle Layout aktiviert. Dadurch wird die Zuordnung so wenig wie möglich neu angeordnet, wenn Sie neue Elemente hinzufügen. Wenn Sie die gesamte Karte jedes Mal neu anordnen möchten, deaktivieren Sie das inkrementelle Layout.

Screenshot of a code map window with the relationshiop arrows between the fields pointing from left to right.

Überprüfen Sie diese Methoden. Doppelklicken Sie auf der Karte auf die PaintCanvas-Methode , oder wählen Sie diese Methode aus, und drücken Sie F12. Sie erfahren, dass history und paintObjects von dieser Methode als leere Listen erstellt werden.

Screenshot of a code map window with the PaintCanvas method selected and a code snippet image showing the PainCanvas method name highlighted.

Wiederholen Sie nun die gleichen Schritte, um die Definition der clear-Methode zu überprüfen. Sie erfahren, dass in clear einige Aufgaben mit paintObjects und history ausgeführt werden. Anschließend wird die Repaint-Methode aufgerufen.

Screenshot of a code map window with the Clear method selected and a code snippet image showing the code for the Clear method.

Überprüfen Sie nun die Definition der addPaintObject-Methode. Darin werden ebenfalls einige Aufgaben mit history und paintObjects ausgeführt. Auch darin wird Repaint aufgerufen.

Screenshot of a code map window with the addPaintObject method selected and a code snippet image showing the code for the addPaintObject method.

Das Problem durch Prüfen der Zuordnung suchen

Anscheinend wird von allen Methoden, die history und paintObjects ändern, Repaint aufgerufen. Von der undo-Methode wird Repaint jedoch nicht aufgerufen, obwohl von undo die gleichen Felder geändert werden. Daher denken Sie, dass Sie dieses Problem beheben können, indem Sie Repaint von undo aus aufrufen.

Code map - Find missing method call

Wenn Sie keine Zuordnung zur Verfügung gehabt hätten, in der dieser fehlende Aufruf angezeigt wird, wäre es möglicherweise schwieriger gewesen, dieses Problem zu finden, insbesondere bei komplexerem Code.

Ergebnisse freigeben und nächste Schritte

Bevor Sie oder jemand anderes diesen Fehler behebt, können Sie in der Zuordnung Notizen zu dem Problem und dessen Behebung erstellen.

Code map - Comment and flag items for followup

Sie können der Zuordnung beispielsweise Kommentare hinzufügen und Elemente mit Farben kennzeichnen.

Code map - Commented and flagged items

Wenn Microsoft Outlook installiert ist, können Sie die Zuordnung per E-Mail an andere senden. Sie können die Zuordnung auch als Bild oder in einem anderen Format exportieren.

Code map - Share, export, mail

Das Problem beheben und zeigen, was Sie getan haben

Fügen Sie den Aufruf von Repaint zu undo hinzu, um diesen Fehler zu beheben.

Code map - Add missing method call

Starten Sie die Debugsitzung neu, und versuchen Sie, den Fehler zu reproduzieren, um sicherzustellen, dass der Fehler behoben ist. Nun funktioniert die Auswahl meiner letzten Striche wie erwartet und bestätigt, dass Sie die richtige Korrektur vorgenommen haben.

Code map - Confirm code fix

Sie können die Zuordnung aktualisieren, damit die Ihre Korrektur angezeigt wird.

Code map - Update map with missing method call

Ihre Karte zeigt nun einen Link zwischen rückgängig und Repaint an.

Code map - Updated map with method call

Hinweis

Wenn Sie die Zuordnung aktualisieren, wird möglicherweise eine Meldung angezeigt, die besagt, dass der zum Erstellen der Zuordnung verwendete Codeindex aktualisiert wurde. Dies bedeutet, dass jemand den Code geändert hat, was dazu führt, dass die Zuordnung nicht mit dem aktuellen Code übereinstimmt. Das hindert Sie nicht daran, die Zuordnung zu aktualisieren. Sie müssen jedoch möglicherweise die Zuordnung neu erstellen, um sicherzustellen, dass sie dem Code entspricht.

Jetzt sind Sie mit Ihrer Untersuchung fertig. Sie haben das Problem gefunden und erfolgreich korrigiert, indem Sie den Code zugeordnet haben. Außerdem verfügen Sie über eine Zuordnung, anhand der Sie im Code navigieren, sich an das Gelernte erinnern und die Schritte zur Behebung des Problems anzeigen können.

Weitere Informationen