다음을 통해 공유


호출 계층 구조 보기

코드에 대한 호출 계층 구조를 보면 선택한 메서드, 속성 또는 생성자에 대한 모든 호출을 탐색할 수 있습니다. 이렇게 하면 코드가 흐르는 방식을 더 잘 이해하고 코드 변경의 영향을 평가할 수 있습니다. 여러 수준의 코드를 검사하여 메서드 호출의 복잡한 체인과 코드에 대한 추가 진입점을 볼 수 있습니다. 이렇게 하면 가능한 모든 실행 경로를 탐색할 수 있습니다.

Visual Studio에서는 디자인 타임에 호출 계층 구조를 볼 수 있습니다. 즉, 중단점을 설정하고 디버거를 시작하여 런타임 호출 스택을 볼 필요가 없습니다.

호출 계층 구조 창 사용

호출 계층 구조 창을 표시하려면 메서드, 속성 또는 생성자 호출의 이름에 대한 코드 편집기를 마우스 오른쪽 단추로 클릭한 다음 호출 계층 구조 보기를 선택합니다.

멤버 이름은 호출 계층 구조 창의 트리 뷰 창에 나타납니다. 멤버 노드, 멤버이름 호출 및 C++의 경우 멤버 이름에서 호출을 확장하면 하위 노드가 나타납니다.

C++ 코드의 경우 멤버와 멤버의 명시적 호출을 모두 볼 수 있습니다.

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

비고

C++ 코드에서 멤버 함수는 생성자 또는 형식 변환 메서드와 같이 암시적으로 호출될 수 있습니다. 이러한 암시적 호출이 반드시 목록에 포함되지는 않습니다.

C# 및 Visual Basic 코드의 경우 멤버에 대한 호출을 볼 수 있지만 다음의 호출은 볼 수 없습니다.

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

  • 호출 노드를 확장하면 선택한 멤버를 호출하는 모든 멤버가 표시됩니다.

  • C++의 경우 f 노드에서 호출 을 확장하면 선택한 멤버가 호출하는 모든 멤버가 표시됩니다.

그런 다음 각 호출 멤버를 확장하여 호출 대상 및 C++의 경우 노드에서 호출 을 볼 수 있습니다. 이렇게 하면 다음 이미지와 같이 호출자 스택으로 이동할 수 있습니다.

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

가상 또는 추상으로 정의된 멤버의 경우 재정의 메서드 이름 노드가 나타납니다. 인터페이스 멤버의 경우 Implements 메서드 이름 노드가 나타납니다. 이러한 확장 가능한 노드는 호출호출 노드와 동일한 수준에 표시됩니다.

도구 모음의 검색 범위 상자에는 내 솔루션, 현재 프로젝트현재 문서에 대한 선택 항목이 포함되어 있습니다.

호출 계층 구조 트리 뷰 창에서 자식 멤버를 선택하는 경우:

  • 호출 계층 정보 창에는 부모 멤버에서 해당 자식 멤버가 호출되는 모든 코드 줄이 표시됩니다.

  • 코드 정의 창이 열리면 선택한 멤버에 대한 코드가 표시됩니다(C++에만 해당). 이 창에 대한 자세한 내용은 코드 구조 보기를 참조하세요.

비고

호출 계층 구조 기능은 메서드가 이벤트 처리기로 추가되거나 대리자에 할당된 위치를 포함하는 메서드 그룹 참조를 찾을 수 없습니다. 메서드에 대한 모든 참조를 찾으려면 모든 참조 찾기 명령을 사용할 수 있습니다.

바로 가기 메뉴 항목

다음 표에서는 트리 뷰 창에서 노드를 마우스 오른쪽 단추로 클릭할 때 사용할 수 있는 몇 가지 바로 가기 메뉴 옵션을 설명합니다.

상황에 맞는 메뉴 항목 설명
새 루트로 추가 선택한 노드를 트리 뷰 창에 새 루트 노드로 추가합니다. 이렇게 하면 특정 하위 트리에 주의를 집중할 수 있습니다.
루트 제거 트리 뷰 창에서 선택한 루트 노드를 제거합니다. 이 옵션은 루트 노드에서만 사용할 수 있습니다.

루트 제거 도구 모음 단추를 사용하여 선택한 루트 노드를 제거할 수도 있습니다.
정의로 이동 선택한 노드에서 정의로 이동 명령을 실행합니다. 멤버 호출 또는 변수 정의에 대한 원래 정의로 이동합니다.

정의로 이동 명령을 실행하려면 선택한 노드를 두 번 클릭하거나 선택한 노드에서 F12 키를 누를 수도 있습니다.
모든 참조 찾기 선택한 노드에서 모든 참조 찾기 명령을 실행합니다. 그러면 프로젝트에서 클래스 또는 멤버를 참조하는 모든 코드 줄을 찾습니다.

Shift+F12를 사용하여 선택한 노드에서 모든 참조 찾기 명령을 실행할 수도 있습니다.
복사 선택한 노드의 내용을 복사합니다(하위 노드는 복사하지 않음).
새로 고침 선택한 노드를 축소하여 다시 확장하면 현재 정보가 표시됩니다.