다음을 통해 공유


프로파일링 API의 호출 스택

업데이트: 2007년 11월

프로파일링 API는 호출 스택을 가져오기 위한 두 가지 방법, 즉 호출 스택을 간격을 두고 수집할 수 있는 스택 스냅숏 메서드와 매순간 호출 스택을 추적하는 섀도 스택 메서드를 제공합니다. 이 항목에서는 이러한 두 가지 메서드에 대해 간략하게 설명합니다.

스택 스냅숏

스택 스냅숏은 특정 순간의 스레드 스택을 추적한 것입니다. 프로파일링 API를 사용하면 스택에서 관리되는 함수를 추적할 수 있지만 관리되지 않는 함수는 프로파일러의 자체 스택 워커에서 추적합니다.

관리되는 스택 워크를 수행하도록 프로파일러를 프로그래밍하는 방법에 대한 자세한 내용은 이 설명서의 ICorProfilerInfo2::DoStackSnapshot 메서드 및 MSDN Library의 Profiler Stack Walking in the .NET Framework 2.0: Basics and Beyond를 참조하십시오.

섀도 스택

스냅숏 메서드를 너무 자주 사용하면 성능 문제가 발생할 수 있습니다. 스택 추적을 자주 수행하려면 스냅숏 메서드를 사용하는 대신 프로파일러에서 FunctionEnter2, FunctionLeave2, FunctionTailcall2ICorProfilerCallback2 예외 콜백을 사용하여 섀도 스택을 빌드해야 합니다. 섀도 스택은 항상 현재 상태이며 스택 스냅숏이 필요할 때마다 저장소에 빨리 복사할 수 있습니다.

섀도 스택은 제네릭 인스턴스화에 대한 함수 인수, 반환 값 및 정보를 가져올 수 있습니다. 이 정보는 섀도 스택을 통해서만 사용할 수 있으며 함수로 제어가 전달될 때 가져올 수 있지만, 나중에 함수가 실행되는 동안에는 사용할 수 없습니다.

참고 항목

참조

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 메서드

기타 리소스

프로파일링 API의 핵심 개념

프로파일링 개요