.net 콘솔 앱의 Sysinternals Process Explorer에서 프로세스 스택을 보는 방법은 무엇입니까?

.net 콘솔 앱의 Sysinternals Process Explorer에서 프로세스 스택을 보는 방법은 무엇입니까?

나는 OS가 연결된 함수 호출을 어떻게 쌓는지 더 깊이 이해하려고 노력하고 있습니다. 그래서 매우 간단한 dotnet 콘솔 앱을 만들었습니다. 아래 코드를 참조하세요. Main 메서드에서 "Call()" 메서드를 호출합니다. exe를 실행하고 프로세스 탐색기에서 스택을 검색하십시오.

그러나 나는 그것을 이해할 수 없습니다. 나는 함수 실행의 스택을 볼 것으로 기대했습니다. 프로세스 탐색기나 다른 sysinternals 도구에서 이 정보를 찾는 더 좋은 방법이 있습니까?

여기에 이미지 설명을 입력하세요

public class StudyingStackExecution_B
    {
        public void Call()
        {
            Console.ReadKey();
            MethodA();
        }
        
        private void MethodA()
        {
            var varA_1 = new object();
            var varA_2 = new object();
            var varA_3 = new object();
            Console.WriteLine("A");
            Console.ReadKey();
            MethodB();
        }

        private void MethodB()
        {
            var varB_1 = new object();
            var varB_2 = new object();
            var varB_3 = new object();
            Console.WriteLine("B");
            Console.ReadKey();
            MethodC();
        }

        private void MethodC()
        {
            var varC_1 = new object();
            var varC_2 = new object();
            var varC_3 = new object();
            Console.WriteLine("C");
            Console.ReadKey(); 
            MethodD();;
        }

        private void MethodD()
        {
            var varD_1 = new object();
            var varD_2 = new object();
            var varD_3 = new object();
            Console.WriteLine("D");
            Console.ReadKey();
        }
    }

답변1

이는 .NET 앱(관리 코드)을 만들었고 프로세스 모니터가 관리 코드의 스택을 표시하지 않기 때문입니다(C++와 같은 네이티브만).

여기를 살펴보세요:https://stackoverflow.com/a/22436707/2879900

디버깅하는 동안 Visual Studio의 "호출 스택" 창을 사용하여 현재 호출 스택을 표시할 수 있습니다.

https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-use-the-call-stack-window?view=vs-2022

디버그 메뉴에서 Windows > 호출 스택을 선택합니다.

관련 정보