Dela via


Använda kodkartor för att felsöka dina program

Kodkartor i Visual Studio kan hjälpa dig att undvika att gå vilse i stora kodbaser, okänd kod eller äldre kod. När du till exempel felsöker kan du behöva titta på kod i många filer och projekt. Använd kodkartor för att navigera runt kodstycken och förstå relationerna mellan dem. På så sätt behöver du inte hålla reda på den här koden i huvudet eller rita ett separat diagram. När ditt arbete avbryts hjälper kodkartor därför till att uppdatera minnet om koden du arbetar med.

Kodkarta – Mappa relationer i kod

En grön pil visar var markören visas i redigeraren

Mer information om de kommandon och åtgärder som du kan använda när du arbetar med kodkartor finns i Bläddra och ordna om kodkartor.

Läs mer om felsökning i Visual Studio med felsökningsverktyget.

Anmärkning

För att skapa och redigera kodkartor behöver du Visual Studio Enterprise-utgåvan. I Visual Studio Community- och Professional-utgåvor kan du öppna diagram som har genererats i Enterprise-utgåvan, men du kan inte redigera dem.

Förstå problemet

Anta att det finns en bugg i ett ritningsprogram som du arbetar med. Om du vill återskapa felet öppnar du lösningen i Visual Studio och trycker på F5 för att börja felsöka.

När du ritar en linje och väljer Ångra min sista linje händer ingenting förrän du ritar nästa rad.

Kodkarta – Återskapa bugg

Så du börjar undersöka genom att söka Undo efter metoden. Du hittar den i PaintCanvas klassen.

Kodkarta – Hitta kod

Börja mappa koden

Börja nu mappa undo metoden och dess relationer. Från kodredigeraren lägger du till undo metoden och fälten som den refererar till till en ny kodkarta. När du skapar en ny karta kan det ta lite tid att indexera koden. Detta hjälper senare åtgärder att köras snabbare.

Kodkarta – Visa metod och relaterade fält

Tips/Råd

Den gröna markeringen visar de sista objekten som lades till på kartan. Den gröna pilen visar markörens position i koden. Pilar mellan objekt representerar olika relationer. Du kan få mer information om objekt på kartan genom att flytta musen över dem och undersöka knappbeskrivningarna.

Kodkarta – Visa knappbeskrivningar

Om du vill se koddefinitionen för varje fält dubbelklickar du på fältet på kartan eller väljer fältet och trycker på F12. Den gröna pilen flyttas mellan objekt på kartan. Markören i kodredigeraren flyttas också automatiskt.

Skärmbild av ett kodkartafönster med historikfältet markerat och ett kodredigeringsfönster där alla instanser av historik är markerade.

Skärmbild av ett kodkartafönster med fältet paintObjects markerat och ett kodredigeringsfönster där alla instanser av paintObjects är markerade.

Tips/Råd

Du kan också flytta den gröna pilen på kartan genom att flytta markören i kodredigeraren.

Förstå relationer mellan koddelar

Nu vill du veta vilken annan kod som interagerar med fälten history och paintObjects . Du kan lägga till alla metoder som refererar till dessa fält på kartan. Du kan göra detta från kartan eller från kodredigeraren.

Kodkarta – Hitta alla referenser

Öppna en kodkarta från kodredigeraren

Anmärkning

Om du lägger till objekt från ett projekt som delas mellan flera appar, till exempel Windows Phone eller Windows Store, visas alltid dessa objekt med det aktiva appprojektet på kartan. Om du ändrar kontexten till ett annat appprojekt ändras kontexten på kartan även för eventuella nyligen tillagda objekt från det delade projektet. Åtgärder som du utför med ett objekt på kartan gäller endast för objekt som delar samma kontext.

Ändra layouten för att ordna om flödet av relationer och göra kartan enklare att läsa. Du kan också flytta objekt runt kartan genom att dra dem.

Skärmbild av ett kodmappningsfönster med layoutmenyn öppen och kommandot Vänster till Rgiht markerat.

Tips/Råd

Inkrementell layout är aktiverat som standard. Detta ordnar om kartan så lite som möjligt när du lägger till nya objekt. Om du vill ordna om hela kartan varje gång du lägger till nya objekt inaktiverar du Inkrementell layout.

Skärmbild av ett kodkartfönster med relationspilarna mellan fälten som pekar från vänster till höger på skärmen.

Nu ska vi undersöka dessa metoder. Dubbelklicka på metoden PaintCanvas på kartan eller välj den här metoden och tryck på F12. Du får lära dig att den här metoden skapar history och paintObjects som tomma listor.

Skärmbild av ett kodkartafönster med metoden PaintCanvas markerad och en kodfragmentbild som visar namnet på PainCanvas-metoden markerat.

Upprepa nu samma steg för att undersöka metoddefinitionen clear . Du lär dig att clear utföra vissa uppgifter med paintObjects och history. Sedan anropas Repaint metoden.

Skärmbild av ett kodkartafönster med metoden Clear vald och en kodfragmentbild som visar koden för metoden Clear.

Granska nu metoddefinitionen addPaintObject . Den utför också vissa uppgifter med history och paintObjects. Den anropar också Repaint.

Skärmbild av ett kodkartafönster med metoden addPaintObject markerad och en kodfragmentbild som visar koden för metoden addPaintObject.

Hitta problemet genom att undersöka kartan

Det verkar som om alla metoder som ändrar history och paintObjects anropar Repaint. Ändå anropar inte undo metoden Repaint, även om undo ändrar samma fält. Så du tror att du kan åtgärda det här problemet genom att anropa Repaint från undo.

Kodkarta – Hitta metodanrop som saknas

Om du inte hade någon karta för att visa det här saknade anropet kan det ha varit svårare att hitta det här problemet, särskilt med mer komplex kod.

Dela din upptäckt och nästa steg

Innan du eller någon annan åtgärdar felet kan du göra anteckningar på kartan om problemet och hur du åtgärdar det.

Kodkarta – Kommentera och flagga objekt för uppföljning

Du kan till exempel lägga till kommentarer på kartan och flagga objekt med hjälp av färger.

Kodkarta – Kommenterade och flaggade objekt

Om du har Installerat Microsoft Outlook kan du skicka kartan via e-post till andra. Du kan också exportera kartan som en bild eller ett annat format.

Kodkarta – Dela, exportera, e-post

Åtgärda problemet och visa vad du gjorde

Du kan åtgärda felet genom att lägga till anropet för Repaint till undo.

Kodkarta – Lägg till metodanrop som saknas

För att bekräfta korrigeringen startar du om felsökningssessionen och försöker återskapa felet. Nu när du väljer Ångra min senaste strykning fungerar det som förväntat och bekräftar att du har gjort rätt korrigering.

Kodkarta – Bekräfta kodkorrigering

Du kan uppdatera kartan för att visa korrigeringen du har gjort.

Kodkarta – Uppdatera karta med metodanrop som saknas

Kartan visar nu en länk mellan ångra och Återställa målning.

Kodkarta – Uppdaterad karta med metodanrop

Anmärkning

När du uppdaterar kartan kan du se ett meddelande om att kodindexet som användes för att skapa kartan uppdaterades. Det innebär att någon har ändrat koden, vilket gör att kartan inte matchar den aktuella koden. Detta hindrar dig inte från att uppdatera kartan, men du kan behöva återskapa kartan för att bekräfta att den matchar koden.

Nu är du klar med utredningen. Du har hittat och åtgärdat problemet genom att mappa koden. Du har också en karta som hjälper dig att navigera runt koden, komma ihåg vad du har lärt dig och visar de steg du vidtog för att åtgärda problemet.