Použití map kódu k ladění aplikací

Mapy kódu v sadě Visual Studio vám můžou pomoct vyhnout se ztrátě ve velkých základech kódu, neznámém kódu nebo starším kódu. Když například ladíte, budete se muset podívat na kód v mnoha souborech a projektech. Pomocí map kódu můžete procházet části kódu a porozumět vztahům mezi nimi. Tímto způsobem nemusíte sledovat tento kód v hlavě ani kreslit samostatný diagram. Takže když dojde k přerušení vaší práce, mapy kódu pomáhají aktualizovat paměť o kódu, na kterém pracujete.

Code map - Map relationships in code

Zelená šipka ukazuje, kde se v editoru zobrazuje kurzor.

Podrobnosti o příkazech a akcích, které můžete použít při práci s mapami kódu, najdete v tématu Procházení a změna uspořádání map kódu.

Přečtěte si další informace o ladění v sadě Visual Studio pomocí nástroje ladicího programu.

Poznámka:

K vytváření a úpravám map kódu potřebujete edici Visual Studio Enterprise. V edicích Visual Studio Community a Professional můžete otevřít diagramy vygenerované v edici Enterprise, ale nemůžete je upravovat.

Pochopení problému

Předpokládejme, že je chyba v programu kreslení, na kterém právě pracujete. Pokud chcete chybu reprodukovat, otevřete řešení v sadě Visual Studio a stisknutím klávesy F5 spusťte ladění.

Když nakreslíte čáru a zvolíte Zpět poslední tah, nic se nestane, dokud nenakreslíte další čáru.

Code map - Repro bug

Začnete tedy hledat metodu Undo . Najdete ho PaintCanvas ve třídě.

Code map - Find code

Spuštění mapování kódu

Teď začněte mapovat metodu undo a její relace. V editoru kódu přidáte metodu undo a pole, která odkazuje na novou mapu kódu. Když vytvoříte nové mapování, může zaindexování kódu trvat nějakou dobu. To pomáhá rychlejšímu běhu pozdějších operací.

Code map - Show method and related fields

Tip

Zelené zvýraznění zobrazí poslední položky, které byly přidány do mapy. Zelená šipka zobrazuje pozici kurzoru v kódu. Šipky mezi položkami představují různé vztahy. Další informace o položkách na mapě získáte tak, že na ně přesunete myš a prozkoumáte jejich popisy.

Code map - Show tooltips

Pokud chcete zobrazit definici kódu pro každé pole, poklikejte na pole na mapě nebo vyberte pole a stiskněte klávesu F12. Zelená šipka se přesune mezi položkami na mapě. Kurzor v editoru kódu se také přesune automaticky.

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.

Tip

Zelenou šipku na mapě můžete také přesunout přesunutím kurzoru v editoru kódu.

Pochopení vztahů mezi částmi kódu

Teď chcete vědět, který jiný kód s těmito history poli paintObjects komunikuje. Můžete do mapy přidat všechny metody, které odkazují na tato pole. Můžete to udělat z mapy nebo editoru kódu.

Code map - Find all references

Open a code map from the code editor

Poznámka:

Pokud přidáte položky z projektu, který je sdílený napříč více aplikacemi, jako je Windows Telefon nebo Windows Store, zobrazí se tyto položky vždy s aktuálně aktivním projektem aplikace na mapě. Pokud tedy změníte kontext na jiný projekt aplikace, kontext na mapě se také změní pro všechny nově přidané položky ze sdíleného projektu. Operace, které provádíte s položkou na mapě, se vztahují pouze na ty položky, které sdílejí stejný kontext.

Změňte rozložení a uspořádejte tak tok vztahů a usnadněte čtení z mapy. Položky kolem mapy lze také přesunout přetažením.

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

Tip

Ve výchozím nastavení je přírůstkové rozložení zapnuté. To při přidání nových položek mění uspořádání mapy co nejméně. Pokud chcete změnit uspořádání celé mapy při každém přidání nových položek, vypněte přírůstkové rozložení.

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

Podívejme se na tyto metody. Na mapě poklikejte na metodu Malování Canvas nebo vyberte tuto metodu a stiskněte klávesu F12. Zjistíte, že tato metoda vytvoří history a paintObjects jako prázdné seznamy.

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

Teď opakujte stejný postup a prozkoumejte definici clear metody. Zjistíte, že clear provádí některé úlohy s paintObjects a history. Potom volá metodu Repaint .

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

Teď prozkoumejte definici addPaintObject metody. Provádí také některé úlohy s history a paintObjects. Volá také Repaint.

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

Nalezení příčiny problému prozkoumáním mapy

Zdá se, že všechny metody, které upravují history a paintObjects volají Repaint. undo Metoda však nevolá Repaint, i když undo upraví stejná pole. Takže si myslíte, že můžete tento problém vyřešit voláním Repaint z undo.

Code map - Find missing method call

Pokud by nebyla nastavena mapa k zobrazení tohoto chybějícího volání, mohlo by být nalezení tohoto problému obtížnější, zejména u složitějšího kódu.

Sdílení zjištění a další kroky

Předtím, než vy nebo někdo jiný tuto chybu vyřeší, si můžete dělat na mapě poznámky o problému a způsobu jeho řešení.

Code map - Comment and flag items for followup

Můžete například přidat komentáře do mapy a označit položky pomocí barev.

Code map - Commented and flagged items

Pokud máte nainstalovanou aplikaci Microsoft Outlook, můžete mapu e-mailem odeslat ostatním. Mapu taky můžete exportovat jako obrázek nebo jiný formát.

Code map - Share, export, mail

Vyřešení problému a zobrazení provedené činnosti

Chcete-li tuto chybu opravit, přidáte volání Repaint do undo.

Code map - Add missing method call

Chcete-li potvrdit svou opravu, restartujte relaci ladění a zkuste chybu reprodukovat. Když teď zvolíte Zpět, bude poslední tah fungovat tak, jak očekáváte, a potvrdíte, že jste udělali správnou opravu.

Code map - Confirm code fix

Můžete aktualizovat mapu, aby zobrazovala provedené opravy.

Code map - Update map with missing method call

Mapa teď zobrazuje odkaz mezi vrácením zpět a překreslením.

Code map - Updated map with method call

Poznámka:

Při aktualizaci mapy se může zobrazit zpráva, že byl aktualizován index kódu použitý k vytvoření mapy. To znamená, že někdo změnil kód, což způsobilo, že se vaše mapa neshoduje s aktuálním kódem. To vám nezabrání v aktualizaci mapy, ale chcete-li ověřit, že mapa odpovídá kódu, pravděpodobně ji budete muset znovu vytvořit.

Teď jste s vyšetřováním hotovi. Úspěšně jste našli a opravili problém pomocí mapování kódu. Máte k dispozici také mapu, která usnadňuje navigaci v rámci kódu, zapamatuje si, co jste se naučili, a zobrazí kroky, které jste provedli v zájmu vyřešení problému.