Share via


스택 프레임 검사 샘플

업데이트: 2007년 11월

이 샘플은 실행 코드 내의 임의 위치에서 호출 스택에 대한 정보를 프로그래밍 방식으로 검색하는 방법을 보여 줍니다. 스택을 통해 응용 프로그램이 현재 프로시저에 도달하기 전에 실행한 프로시저의 순서를 확인할 수 있습니다.

설치 샘플 및 지침을 얻으려면

  • 다음 중 하나 이상을 수행합니다.

    • 도움말 메뉴에서 샘플을 클릭합니다.

      추가 정보 파일에서 샘플에 대한 정보를 확인합니다.

    • Visual Studio 2008 Samples 웹 사이트를 방문합니다. 이 웹 사이트에서 최신 버전의 샘플을 얻을 수 있습니다.

    • Visual Studio가 설치되어 있는 컴퓨터에서 샘플을 찾습니다. 기본적으로 샘플과 추가 정보 파일은 drive:\Program Files\Microsoft Visual Studio 9.0\Samples\lcid에 설치되어 있습니다. Visual Studio Express Editions의 경우에는 모든 샘플이 온라인에 있습니다.

자세한 내용은 샘플 파일 찾기를 참조하십시오.

보안 정보:

이 샘플 코드는 개념을 설명하기 위한 것으로 개념과 관련된 코드만을 보여 줍니다. 특정 환경에 대한 보안 요구 사항을 충족하지 못 할 수 있고 표시된 그대로 사용하면 안됩니다. 안전하고 강력한 프로젝트를 만들려면 보안 및 오류 처리 코드를 추가하는 것이 좋습니다. Microsoft에서는 어떠한 보증도 없이 “있는 그대로” 이 샘플 코드를 제공합니다.

이 샘플을 실행하려면

  • F5 키를 누릅니다.

세부 항목

.NET Framework에서는 이 기능을 StackFrame 클래스의 일부로 제공합니다. 샘플에서는 다른 두 클래스인 StackTraceMethodInfo를 보여 줍니다. 매개 변수 없는 StackTrace 생성자는 완전한 StackFrame 개체 집합을 반환하여 응용 프로그램이 시작된 시간부터의 정보를 제공합니다. 또한 Exception 인스턴스를 사용하는 StackTrace 생성자를 사용할 수도 있습니다. 이 생성자는 예외를 트리거한 코드에 스택 추적 정보를 제공합니다.

Test Procedure Stack 단추의 이벤트 처리기에는 여러 개의 메서드를 호출하여 몇 단계 아래까지의 스택을 보여 주는 코드가 포함되어 있습니다. Test Procedure Stack 단추를 클릭하면 ProcB를 호출하는 ProcA가 호출됩니다. ProcB는 새 StackTrace 개체를 전달하면서 GetFullStackFrameInfo 프로시저를 호출합니다.

GetFullStackFrameInfo(New StackTrace()) 

GetFullStackFrameInfo 프로시저에서는 StackTrace 개체의 FrameCount 속성을 사용하여 현재 프로시저에서 역방향으로 전체 스택 프레임 수를 검색합니다. 그런 다음 프로시저에서는 각 스택 프레임에 대한 정보를 샘플의 목록 상자에 추가하고 GetFrame 메서드를 호출하여 인덱싱된 스택 프레임 개체를 검색합니다.

GetStackFrameInfo 프로시저는 코드가 전송한 StackFrame 개체의 GetFrame을 호출한 다음 MethodInfo 개체의 속성을 검색하여 목록 상자에 프로시저에 대한 정보를 표시합니다.

Test Exception Handling 단추의 이벤트 처리기에서는 스택을 몇 단계 아래로 내리는 오류를 생성합니다. 코드에서는 예외를 트리거하고 이 예외를 StackFrame 개체의 생성자에 전달합니다.

참고 항목

참조

System.Diagnostics

StackFrame

System.Reflection

MethodInfo

FrameCount