视觉工作室。使用stacktrace的序列作为命中断点条件

时间:2014-07-04 11:42:31

标签: c# .net visual-studio visual-studio-2013

我使用了命中断点条件

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

当我逐步点击这个断点时,我通过快速检查检查了这个情况,这是真的。但条件不能通过f5模式

1 个答案:

答案 0 :(得分:0)

如果您尝试使用条件表达式在当前方法中放置条件断点,则当前方法应为“UpdateFromLocationInfo”。 StackTrace上的新内容始终适用于新对象的当前方法。

        // 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
            {
            }

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