2010-03-07 35 views
2

這是一個模糊的問題,但有什麼我可以做的關於visual studio減慢應用程序?如果我在Visual Studio之外運行可執行文件,它的運行速度非常快。如果我在啓用調試器的情況下在Visual Studio中運行它,它的運行速度將降低近200倍。我試圖卸載並重新安裝Visual Studio無濟於事。我刪除了我的所有插件(螞蟻& resharper),但仍然沒有。我在另一臺電腦上的視覺工作室內運行了該項目,速度很正常。我能做些什麼來解決這個問題?它似乎最近發生過,但可能逐漸發生。視覺工作室放緩應用程序

更新:我已經在其他視覺工作室中運行了它,並且保持了減速。我唯一的結論是我以應用程序的速度分配內存的方式導致調試器以某種方式減慢速度。任何人都有這方面的經驗嗎?

+0

病毒掃描儀? 。 – 2010-03-07 07:39:27

+0

加載和卸載DLL很多?總體速度較慢還是大幅度縮短啓動時間? – 2010-03-07 07:50:07

+0

您的應用程序是否傾倒了大量的調試消息?如果是這樣,可能是爲什麼。 – 2010-03-07 08:13:20

回答

2

通常,Visual Studio調試器不會減慢速度。這必須是特定於您的應用程序的東西。

例如,最近有一個關於SO的問題,來自某人在調試時得到OutOfMemoryException但不在調試器外部運行的情況。看起來這是由於他分配內存的方式 - 該技術對加載到內存中的程序集數量很敏感。大多數程序不會對調試器的這種被動效應敏感。也許你也正在受到與調試器相關的一些影響,但不完全是調試器的「故障」。


米奇小麥建議您可能正在運行病毒掃描程序。這讓我想起了一個類似的軟件,它將注意力集中在Visual Studio加載和卸載程序集上。這是一款提供「端點安全性」的VPN軟件。它旨在檢查您連接到VPN時正在運行的程序並確保它們符合安全策略。這意味着要通知每個裝載的組件。

Visual Studio加載和卸載很多程序集。這個VPN軟件對這個事實非常感興趣,它實際上導致了一個BSOD - 我唯一一次看到一個應用程序導致藍屏死機 - 因爲它安裝了一個文件系統過濾器等等,並且在內核模式下被通知。這加上某種錯誤足以使系統失效。

所以,一般來說,尋找一些軟件,關心您的計算機上運行的一些軟件。也許是「端點安全性」,也許是病毒掃描程序,也許是搜索索引器,或其他。

3

您是否從符號服務器上拉下符號?這是經濟放緩的常見原因。在調試器中運行,如果許多被拋出和捕獲可以減緩應用程序時,如果如果使用的VS 2008 +

+0

可能。工具+選項,調試+符號。 – 2010-03-07 11:47:21

4

例外設置,或者您的調試選項

檢查_NT_SYMBOL_PATH是非常昂貴的。查看Visual Studio的輸出窗口,您可以在其中看到拋出的異常。

+0

異常是我見過的調試器內部放緩的頭號原因。轉到「例外」對話框(在「調試」菜單上),讓Visual Studio打破所有異常,而不僅僅是未處理的異常。 – 2010-03-07 10:24:33

+0

我有一個類似的問題,在調試過程中應用程序非常緩慢,但沒有調試就像一個魅力跑。原來'devexpress' gridcontrol吞噬了很多'FormatException'。修復錯誤後,在調試模式下從35秒到1秒渲染網格。 – scheien 2014-02-25 12:47:13

0

VS調試器添加到您的代碼附加命令,以允許它帶來的所有功能。缺點可能會減慢你的應用程序。

也許這就是爲什麼當您在另一臺計算機上運行可執行文件時,您的應用程序工作正常的原因。

然後,這是一個不應該打擾你的問題,因爲應用程序的發佈版本很重要 - 如果最後一個工作正常,誰會關心調試版本的性能。

+1

如果調試器的性能讓你下降太多,以至於顯着影響你的生產力,那麼這是一個你應該關心的問題。 – 2010-03-07 12:51:13

+0

同意@SamHolder。我有一個WPF應用程序,它以調試模式掛起,這是因爲我設置了圖像控件的ImageSource,並且該值爲空字符串或不可用程序集的路徑時,調試器會掛起10-20幾秒鐘最終導致我的應用程序抓取並且我正在播放的音頻(在應用程序中)波濤洶涌,應用程序幾乎沒有響應。在發佈模式下,它工作正常。所以我必須診斷問題並解決放緩問題,因爲我無法另外開發應用程序。 – cod3monk3y 2013-12-12 20:18:51

2

問題是,如果Windows檢測到您的程序正在調試器下運行,那麼它將丟棄在特殊的調試堆中。這似乎發生在操作系統級別,並且獨立於編譯的任何調試/發佈模式設置。

您可以通過設置環境變量解決這個「功能」:_NO_DEBUG_HEAP = 1

同樣的問題一直在推動我堅果一會兒;今天我發現以下,從這個帖子衍生出來: http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

+0

有趣!謝謝 – Dested 2010-12-09 00:46:42