Я пытаюсь глубже понять, как ОС складывает вызовы связанных функций. Поэтому я создал очень простое консольное приложение 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
В меню «Отладка» выберите «Окна» > «Стек вызовов».