Zobrazení hierarchie volání

Zobrazením hierarchie volání pro váš kód můžete procházet všechna volání a někdy také z vybrané metody, vlastnosti nebo konstruktoru. To vám umožní lépe pochopit, jak toky kódu a vyhodnotit účinky změn kódu. Můžete prozkoumat několik úrovní kódu a zobrazit složité řetězy volání metod a další vstupní body kódu. Díky tomu můžete prozkoumat všechny možné cesty provádění.

V sadě Visual Studio můžete zobrazit hierarchii volání v době návrhu. To znamená, že nemusíte nastavovat zarážku a spouštět ladicí program pro zobrazení zásobníku volání za běhu.

Použití okna Hierarchie volání

Pokud chcete zobrazit okno Hierarchie volání, klikněte pravým tlačítkem myši v editoru kódu na název metody, vlastnosti nebo volání konstruktoru a pak vyberte Zobrazit hierarchii volání.

Název člena se zobrazí v podokně stromového zobrazení v okně Hierarchie volání. Pokud rozbalíte členský uzel, název člena Volání doa pro C++, zobrazí se pod uzly znázvu člena.

U kódu jazyka C++ můžete vidět explicitní volání členů i z člena:

Call Hierarchy for C++ code in Visual Studio

Poznámka:

V kódu jazyka C++ mohou být členské funkce volána implicitně, například konstruktor nebo metoda převodu typu; tato implicitní volání nemusí být nutně zahrnuta do seznamu.

Pro kód jazyka C# a Visual Basic můžete zobrazit volání člena, ale ne volání z:

Call Hierarchy for C# code in Visual Studio

  • Pokud rozbalíte uzel Volání do , zobrazí se všichni členové, kteří volají vybraného člena.

  • U jazyka C++ rozbalíte uzel Volání z uzlu, zobrazí se všechny členy, které (explicitně) volají vybraný člen.

Každý volající člen pak můžete rozbalit, aby viděl jeho volání do a pro C++ volání z uzlů. Díky tomu můžete přejít do zásobníku volajících, jak je znázorněno na následujícím obrázku:

Call Hierarchy window with multiple levels expanded

U členů, které jsou definovány jako virtuální nebo abstraktní, se zobrazí uzel názvu metody Overrides. Pro členy rozhraní se zobrazí uzel názvu metody Implements. Tyto rozbalitelné uzly se zobrazují na stejné úrovni jako volání a volání z uzlů.

Pole Obor vyhledávání na panelu nástrojů obsahuje možnosti Moje řešení, Aktuální projekt a Aktuální dokument.

Když v podokně stromového zobrazení hierarchie volání vyberete podřízeného člena:

  • V podokně podrobností hierarchie volání se zobrazí všechny řádky kódu, ve kterých je tento podřízený člen volán z nadřazeného člena.

  • V okně Definice kódu (pokud je otevřeno) se zobrazí kód pro vybraného člena (pouze C++). Další informace o tomto okně naleznete v tématu Zobrazení struktury kódu.

Poznámka:

Funkce Hierarchie volání nenajde odkazy na skupinu metod, která zahrnuje místa, kde je metoda přidána jako obslužná rutina události nebo je přiřazena delegátovi. Pokud chcete najít všechny odkazy na metodu, můžete použít příkaz Najít všechny odkazy .

Položky místní nabídky

Následující tabulka popisuje několik možností místní nabídky, které jsou k dispozici, když kliknete pravým tlačítkem myši na uzel v podokně stromového zobrazení.

Položka místní nabídky Popis
Přidat jako nový kořen Přidá vybraný uzel do podokna stromového zobrazení jako nový kořenový uzel. Díky tomu se můžete zaměřit na konkrétní podstrom.
Odebrat kořen Odebere vybraný kořenový uzel z podokna stromového zobrazení. Tato možnost je dostupná pouze z kořenového uzlu.

K odebrání vybraného kořenového uzlu můžete použít také tlačítko Odebrat kořenový panel nástrojů.
Přejít na definici Spustí na vybraném uzlu příkaz Přejít na definici. Tím přejdete na původní definici volání člena nebo definice proměnné.

Pokud chcete spustit příkaz Přejít na definici, můžete také poklikáním na vybraný uzel nebo stisknutím klávesy F12 na vybraném uzlu.
Najít všechny odkazy Spustí příkaz Najít všechny odkazy na vybraném uzlu. Tím se najde všechny řádky kódu v projektu, které odkazují na třídu nebo člena.

Pomocí shift+F12 můžete také spustit příkaz Najít všechny odkazy na vybraném uzlu.
Kopírování Zkopíruje obsah vybraného uzlu (ale ne jeho dílčí uzly).
Aktualizovat Sbalí vybraný uzel, aby se znovu rozbalily aktuální informace.