2017-10-11 86 views
0

我很困擾這個問題,它不會讓我在一段時間內適當地進行調試,並且無法在網上找到關於它的信息。VS 2015診斷工具放緩時間

問題是,當我用調試器運行我的應用程序時,除了它的性能比沒有它更糟的事實,當我在查看診斷工具的時間線時,我可以看到它沒有與應用程序運行的時間相匹配。我認爲這是更好地用一個例子理解:

  1. 我開始調試我在t_real = 0 t_debug = 0
  2. 程序開始執行一些比較苛刻的操作應用。調試器從現在開始影響性能。 t_real = 5 t_debugger = 5
  3. 計算結束。 t_real = 30 t_debugger = 100

爲什麼這種時間差?我正在使用多線程的C#.NET應用程序。

+0

你能從我的建議中得到有用的信息嗎?請您分享有關此問題的最新信息? –

回答

1

診斷工具將收集許多數據信息,如CPU使用率/內存或其他數據,它確實會或多或少地影響VS性能。

其實我也向產品團隊彙報過一個問題,Nik分享了一個道理,說明它爲什麼有如此龐大的I/O。即使它不是你的問題,但至少,我們可以知道診斷工具確實忙於收集更多信息:)

Visual Studio 2015 StandardCollector.Service.exe runaway I/O

如果您想在不收集診斷信息的情況下調試您的應用程序,可以在工具 - >選項 - >調試下禁用此工具。

當然,如果你有很好的建議,你也可以提交一個請求here

+0

感謝您的回覆。我試圖禁用診斷信息,但應用程序的性能仍受到顯着影響,使其調試非常困難。 – Pekuso

+0

@Pekuso,你調試過哪種應用程序?也許你可以在工具 - >選項 - >調試下檢查你的項目屬性或調試器選項。某些選項或多或少地影響性能。像項目屬性「Visual Studio託管過程」一樣。或工具 - >選項 - > IntelliTrace或調試 - >符號服務器。你可以禁用它,再次調試你的應用程序。如果仍然沒有幫助,只需使用VS探查器工具來收集詳細的功能性能,也許它與某些代碼行或功能有關。 –

0

聲明:我使用Visual Studio,特別是診斷工具。

診斷工具顯示的應用程序時間與感知的應用程序時間不匹配的情況很常見。這是由於調試器在進程內執行操作,而我們不希望在捕捉追蹤中顯示。爲了解決這個問題,我們基本上得到了調試器在過程中何時開始工作以及何時停止的時間戳。然後我們減去這個時間,這是用戶代碼的實際應用程序處理時間,並將其顯示在泳道圖中。我的猜測是你的應用/調試設置正在做一些需要大量調試器干預的事情。

一個簡單的例子是一個控制檯應用程序,它在循環中引發和捕獲異常(見下文)。你可以在調試器中運行這個應用程序,甚至不用停下來,它看起來好像幾乎沒有爬行一樣,因爲調試器在每次執行過程中都在進程內部工作。

namespace ConsoleApp2 { 
    using System; 

    class Program { 
     static void Main(string[] args) { 
      while (true) { 
       try { 
        throw new Exception(); 
       } catch (Exception) { } 
      } 
     } 
    } 
}