2009-11-30 74 views
12

當通過F10逐行瀏覽我的C#代碼時,它需要調試器超過一秒才能到達下一行。Visual Studio 2008:調試託管代碼時跳到下一行非常慢

我試過刪除所有手錶和斷點,但沒有任何區別。

這是正常的嗎?現在已經很長時間了,所以我甚至不記得這是否更好。我的開發計算機是一臺沒有後臺任務活動並有大量內存的四核機器。

如果不正常,我還有什麼可以嘗試的?它仍然可以使用,但一個不太緩慢的用戶界面會很好...

回答

13

可能發生的情況是在調用堆棧框架中有一個變量,它有一個昂貴的.ToString方法。 2008年,無論窗口是否真實可見,調用堆棧窗口的數據都會在每一步中重新生成。構建此窗口的一部分將針對出現在參數列表中的值調用.ToString(如果它們具有重寫的.ToString)。嘗試禁用隱式.ToString調用,看看是否解決了這個問題。

  • 工具 - >選項 - >調試
  • 取消選中「啓用隱式的ToString稱之爲」
+1

在Visual Studio 2010中,調用堆棧窗口似乎只在實際可見時才被重建。 禁用隱式ToString調用的替代方法是右鍵單擊調用堆棧窗口並取消選中「顯示參數值」。 – 2009-12-11 10:13:40

+0

@Phil,這是我們在Beta2之前做出的性能改變。 – JaredPar 2009-12-11 15:26:44

+0

謝謝!我的問題實際上是由於我的某個類的DebuggerDisplayAttribute過度密集而導致的。我將邏輯移入ToString()方法中,速度更快。很高興知道這是物業價值計算,放慢了事情的方式。謝謝!! – Doug 2010-03-16 14:04:47

0

您是否有很多Watch表達式設置?他們會在每一步之間進行評估,如果他們需要時間跑步,您會發現它在步進時會延遲。

+1

不,我已經刪除了所有的手錶,以確保這不是問題。 – 2009-11-30 17:50:39

5

我發現,如果您可以選擇打開調試非託管代碼,則即使您只是調試託管代碼,調試器也可能需要一段時間才能在行之間切入。嘗試關閉該選項(項目>屬性>調試>啓用調試器>啓用非託管代碼調試)。

+0

+1我上次在視覺工作室遇到緩慢的步伐,這是原因 – 2009-11-30 17:53:05

+0

聽起來不錯,但我在哪裏可以找到這個選項?我沒有看到它在我的羅列設置中的任何地方。 – 2009-11-30 17:54:11

+0

我相信它是在調試組下,但我在家,無法檢查。此外,Visual C#Express中可能不提供此選項。 – 2009-11-30 17:57:33

1

我曾經經歷過,因爲我已經建立了VS尋找PDB文件在網絡上慢調試分享,不再存在。

入住這裏:工具 - 選項 - 調試 - 符號 - 符號文件(.PDB)場所

1

我聽說過這樣的問題,如果「自動」窗口已打開。嘗試關閉它,看看你的表現是否改善。

如果你還沒有,你應該也可以安裝"Visual Studio 2008 SP1 debugging and breakpoint"補丁。請注意,此修補程序會在SP1之上。該補丁的文檔沒有具體說明你看到的緩慢,但它是一個相當大的補丁,你可能會很幸運。

3

在我的情況下,禁用「當一個進程中斷時打破所有進程」(工具/選項/調試器)將時間從2-3秒縮短到幾分之一秒。

我不知道爲什麼這個選項對於單步完成有如此大的影響。 順便說一句,我想如果你使用的線程不是彼此獨立的,禁用這個選項可能會導致麻煩。

+0

我有同樣的問題。謝謝。我要去調查一下。 – 2011-12-09 09:50:50

+0

這解決了我在VS2010中緩慢的調試問題。 – Logan 2013-02-18 12:06:38

0

在停止C#調試之後,我再次啓動C#調試之前遇到了10秒的延遲。在這段時間,VS2008將無法點擊。在我禁用了Project Properties -> Debug中的Visual Studio託管過程後,現在有0秒的延遲。

1

關閉啓用地址級調試選項Tools > Options > Debugging > General
它對我造成了巨大的影響。

4

我嘗試了以上所有內容。取消選中「在源中顯示線程」按鈕修復了它。