Wie kann ich den Prozessstapel im Sysinternals Process Explorer von einer .net-Konsolen-App aus anzeigen?

Wie kann ich den Prozessstapel im Sysinternals Process Explorer von einer .net-Konsolen-App aus anzeigen?

Ich versuche, besser zu verstehen, wie das Betriebssystem die verketteten Funktionsaufrufe stapelt. Also habe ich eine sehr einfache Dotnet-Konsolenanwendung erstellt (siehe Code unten). Ich rufe die Methode „Call()“ von der Main-Methode aus auf. Führen Sie die EXE aus und suchen Sie im Prozess-Explorer nach dem Stapel.

Aber ich kann mir keinen Reim darauf machen. Ich hatte erwartet, den Stapel der Funktionsausführungen zu sehen. Gibt es eine bessere Möglichkeit, diese Informationen im Prozess-Explorer oder in anderen Sysinternals-Tools zu finden?

Bildbeschreibung hier eingeben

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();
        }
    }

Antwort1

Das liegt daran, dass Sie eine .NET-App (verwalteter Code) erstellt haben und Process Monitor Ihnen keine Stapel aus verwaltetem Code anzeigt (nur nativen Code, z. B. C++).

Schauen Sie hier:https://stackoverflow.com/a/22436707/2879900

Sie können während des Debuggens das Fenster „Aufrufliste“ in Visual Studio verwenden, um die aktuelle Aufrufliste anzuzeigen:

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

Wählen Sie im Debug-Menü „Fenster“ > „Aufrufstapel“ aus.

verwandte Informationen