Visual Studio.使用stacktrace';s序列作为命中断点条件

本文关键字:中断 条件 断点 使用 Studio stacktrace Visual | 更新日期: 2023-09-27 18:11:22

我使用了命中断点条件

(new System.Diagnostics.StackTrace(true).GetFrame(2) != null 
&& new System.Diagnostics.StackTrace(true).GetFrame(2).GetMethod().Name 
== "UpdateFromLocationInfo")

当我"一步一步"地遇到这个断点时,我通过快速观察检查了这个条件,这是真的。但条件不能通过f5模式工作

Visual Studio.使用stacktrace';s序列作为命中断点条件

如果您试图将条件断点与条件表达式一起放入当前方法中,则当前方法应为"UpdateFromLocationInfo"。StackTrace上的new始终适用于新建对象所在的当前方法。

        // Create a StackTrace that captures filename, line number, and column 
        // information for the current thread.
            StackTrace st = new StackTrace(true);
            StackFrame[] stFrames = st.GetFrames();
            foreach (StackFrame sf in stFrames)
            {
                Console.WriteLine(sf.GetMethod());
            }
          //The StackFrame at array index 0 represents the most recent function call 
          // in the stack trace and the last 
          //frame pushed onto the call stack.
            if ((new StackTrace(true).GetFrame(0) != null && 
            new  StackTrace(true).GetFrame(0).GetMethod().Name == "UpdateFromLocationInfo"))
            {
            }
            else
            {
            }

通过以上过程,您可以清楚地看到您的输出。