2017-08-31 105 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