호출 계층 구조 보기View call hierarchy

코드의 호출 계층 구조를 보면 선택한 메서드, 속성 또는 생성자에 대한 모든 호출과 때때로 이러한 항목에서의 모든 호출을 탐색할 수 있습니다.By viewing the call hierarchy for your code, you can navigate all calls to, and sometimes from, a selected method, property, or constructor. 이렇게 하면 코드가 흐르는 방식을 더 잘 이해하고 코드에 대한 변경 내용의 영향을 평가할 수 있습니다.This enables you to better understand how code flows, and to evaluate the effects of changes to code. 메서드 호출의 복합 체인과 코드에 대한 추가적인 진입점을 보기 위해 여러 수준의 코드를 검토할 수 있습니다.You can examine several levels of code to view complex chains of method calls and additional entry points to the code. 이렇게 하면 모든 가능한 실행 경로를 탐색할 수 있습니다.This enables you to explore all possible execution paths.

Visual Studio에서 디자인 타임에 호출 계층 구조를 볼 수 있습니다.In Visual Studio, you can view a call hierarchy at design time. 이는 런타임 호출 스택을 보기 위해 중단점을 설정하고 디버거를 시작할 필요가 없음을 의미합니다.This means you don't have to set a breakpoint and start the debugger to view the run-time call stack.

호출 계층 구조 창 사용Use the Call Hierarchy window

호출 계층 구조 창을 표시하려면 코드 편집기에서 메서드, 속성 또는 생성자 호출의 이름을 마우스 오른쪽 단추로 클릭한 다음, 호출 계층 구조 보기를 선택합니다.To display the Call Hierarchy window, right-click in the code editor on the name of a method, property, or constructor call, and then select View Call Hierarchy.

트리 뷰 창의 호출 계층 구조 창에 멤버 이름이 나타납니다.The member name appears in a tree view pane in the Call Hierarchy window. 멤버 노드를 확장하는 경우 호출 대상 ‘멤버 이름’ 및 C++의 경우 호출 시작 ‘멤버 이름’ 하위 노드가 나타납니다.If you expand the member node, Calls To member name, and for C++, Calls From member name, subnodes appear.

C++ 코드의 경우 다음과 같이 멤버 대상 호출과 멤버 시작 호출을 모두 볼 수 있습니다.For C++ code, you can see calls both to and from a member:

Visual Studio의 C++ 코드에 대한 호출 계층 구조

C# 및 Visual Basic 코드의 경우 다음과 같이 멤버 대상 호출을 볼 수 있지만 멤버 시작 호출을 볼 수 없습니다.For C# and Visual Basic code, you can see calls to a member, but not calls from:

Visual Studio의 C# 코드에 대한 호출 계층 구조

  • 호출 대상 노드를 확장할 경우 선택한 멤버를 호출하는 모든 멤버가 표시됩니다.If you expand the Calls To node, all members that call the selected member are displayed.

  • C++의 경우 호출 시작 노드를 확장할 경우 선택한 멤버가 호출하는 모든 멤버가 표시됩니다.For C++, f you expand the Calls From node, all members that are called by the selected member are displayed.

그런 다음, 각 호출 멤버를 확장하여 해당 호출 대상 및 C++의 경우 호출 시작 노드를 볼 수 있습니다.You can then expand each calling member to see its Calls To, and for C++, Calls From nodes. 이렇게 하면 다음 이미지에 나와 있는 것처럼 호출자 스택을 탐색할 수 있습니다.This enables you to navigate into the stack of callers, as shown in the following image:

여러 수준이 확장된 호출 계층 구조 창

가상 또는 추상으로 정의된 멤버의 경우 메서드 이름 재정의 노드가 표시됩니다.For members that are defined as either virtual or abstract, an Overrides method name node appears. 인터페이스 멤버의 경우 메서드 이름 구현 노드가 표시됩니다.For interface members, an Implements method name node appears. 이러한 확장 가능한 노드는 호출 대상호출 시작 노드와 같은 수준에서 표시됩니다.These expandable nodes appear at the same level as the Calls To and Calls From nodes.

도구 모음의 검색 범위에는 내 솔루션, 현재 프로젝트현재 문서에 대한 선택 사항이 포함되어 있습니다.The Search Scope box on the toolbar contains choices for My Solution, Current Project, and Current Document.

호출 계층 구조 트리 뷰 창에서 자식 멤버를 선택할 경우:When you select a child member in the Call Hierarchy tree view pane:

  • 호출 계층 구조 세부 정보 창은 상위 멤버에서 호출되는 해당 자식 멤버에 코드의 모든 라인을 표시합니다.The Call Hierarchy details pane displays all lines of code in which that child member is called from the parent member.

  • 코드 정의 창이 열려 있는 경우 선택한 멤버에 대한 코드가 표시됩니다(C++에만 해당).The Code Definition window, if open, displays the code for the selected member (C++ only). 이 창에 대한 자세한 내용은 코드 구조 보기를 참조하세요.For more information about this window, see View the structure of code.

참고

호출 계층 구조 기능은 메서드가 이벤트 처리기로 추가되거나 대리자에 할당되는 위치가 포함된 메서드 그룹 참조를 찾지 않습니다.The Call Hierarchy feature does not find method group references, which includes places where a method is added as an event handler or is assigned to a delegate. 메서드에 대한 모든 참조를 찾으려면 모든 참조 찾기 명령을 사용할 수 있습니다.To find all references to a method, you can use the Find All References command.

바로 가기 메뉴 항목Shortcut menu items

다음 표는 트리 뷰 창에서 노드를 마우스 오른쪽 단추로 클릭할 때 사용할 수 있는 여러 가지 바로 가기 메뉴 옵션을 설명합니다.The following table describes several shortcut menu options that are available when you right-click a node in the tree view pane.

상황에 맞는 메뉴 항목Context Menu Item 설명Description
새 루트로 추가Add As New Root 선택한 노드를 새 루트 노드로 트리 뷰 창에 추가합니다.Adds the selected node to the tree view pane as a new root node. 이를 통해 특정 하위 트리에 집중할 수 있습니다.This enables you to focus your attention on a specific subtree.
루트 제거Remove Root 트리 뷰 창에서 선택한 루트 노드를 제거합니다.Removes the selected root node from the tree view pane. 이 옵션은 루트 노드에서만 사용할 수 있습니다.This option is available only from a root node.

또한 루트 제거 도구 모음 단추를 선택하여 선택한 루트 노드를 제거할 수도 있습니다.You can also use the Remove Root toolbar button to remove the selected root node.
정의로 이동Go To Definition 선택한 노드에서 정의로 이동 명령을 실행합니다.Runs the Go To Definition command on the selected node. 멤버 호출 또는 가변 정의에 대한 원래 정의로 이동합니다.This navigates to the original definition for a member call or variable definition.

정의로 이동 명령을 실행하려면 선택한 노드를 두 번 클릭 하거나 선택한 노드에서 F12 키를 누를 수 있습니다.To run the Go To Definition command, you can also double-click the selected node or press F12 on the selected node.
모든 참조 찾기Find All References 선택한 노드에서 모든 참조 찾기 명령을 실행합니다.Runs the Find All References command on the selected node. 그러면 클래스 또는 멤버를 참조하는 프로젝트에서 모든 코드 줄을 찾습니다.This finds all the lines of code in your project that reference a class or member.

또한 SHIFT+F12를 사용하여 선택한 노드에서 모든 참조 찾기 명령을 실행할 수도 있습니다.You can also use SHIFT+F12 to run the Find All References command on the selected node.
복사Copy 선택한 노드(하위 노드 제외)의 내용을 복사합니다.Copies the contents of the selected node (but not its subnodes).
새로 고침Refresh 선택한 노드를 축소한 다음 다시 확장하면 현재 정보가 표시됩니다.Collapses the selected node so that re-expanding it displays current information.