Как просмотреть стек процессов в Sysinternals Process Explorer из консольного приложения .net?

Как просмотреть стек процессов в Sysinternals Process Explorer из консольного приложения .net?

Я пытаюсь глубже понять, как ОС складывает вызовы связанных функций. Поэтому я создал очень простое консольное приложение dotnet, см. код ниже, я вызываю метод "Call()" из метода Main. Запустите exe и найдите стек в обозревателе процессов.

Но я не могу понять. Я ожидал увидеть стек выполнения функций. Есть ли лучший способ найти эту информацию в Process Explorer или других инструментах 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 (управляемый код), а Process Monitor не покажет вам стеки из управляемого кода (только нативный, такой как 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

В меню «Отладка» выберите «Окна» > «Стек вызовов».

Связанный контент