2017-08-31 80 views
0

是否有选项/属性/ ...阻止VS的调试器在特定方法内停止调试会话?我在问,因为我受到BSoD的困扰,.NET 4.0的类Ping有时会触发。有关更多详细信息,请参阅Blue screen when using Ping防止VS调试器在特定方法内停止

private async Task<PingReply> PerformPing() 
{ 
    // Do not stop debugging inside the using expression 
    using (var ping = new Ping()) { 
     return await ping.SendTaskAsync(IPAddress, PingTimeout); 
    } 
} 
+0

当然的调试didnt停止我有一些停产的方法是干净地停止应用程序。但是,有时在会话期间停止调试器是不可避免的。 – liondog

+0

我认为你需要在你的问题中澄清一下,你想要的是当调试时这个方法正在执行时,停止用户点击STOP按钮。 – JuanR

+0

用户不会调试我的程序。这就是我。有时我只是忘记关闭应用程序或抛出一个exeption,我需要停下来。 – liondog

回答

0

DebuggerStepthrough

有趣的是,你可以在方法级别或类级别设置。

指示调试器逐句通过代码而不是进入代码。这个类不能被继承。

测试与

using System; 
using System.Diagnostics; 

public class Program 
{ 
    [DebuggerStepThrough()] 
    public static void Main() 
    { 
     try 
     { 
      throw new ApplicationException("test"); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.ToString()); 
     } 
    } 
} 

,并在主方法

+0

这实际上是否阻止调试器在方法内部停止? – liondog

+0

如果你在这个方法中有一个断点,你将会错过它,并且你不能强行进入这个方法。现在是否停止调试器查看如果抛出该方法的异常?我不知道,这是一个足够简单的测试,但要弄清楚。 – gh9

+1

应该指出,这取决于你的只是我的代码设置。如果您选中了“我的代码”,则此答案按照所述方式工作。如果不是,则该属性被有效地忽略。 – Amy