2010-03-03 165 views
7

在Visual Studio 2008中,在調試大約1-2分鐘後,當我按下F10(跳過)時,調試器掛起,Visual Studio凍結5-10秒,然後轉到下一行。然後,無論我做什麼(F10,F5,F11等),調試器都會繼續執行,就好像我按F5和我正在調試的所有窗體關閉一樣。我總是不得不重新啓動應用程序。Visual Studio調試器問題

這是很難重現,它不會發生每次我想調試的東西。有沒有人有解決方案?

編輯:我已經成功地重現我的問題與下面的代碼:

static void Main(string[] args) 
{ 
    XElement e = new XElement("root"); 
    Test(e, 0); 
} 

static void Test(XElement parentElement, int i) 
{ 
    if (i < 1000) 
    { 
     XElement element = new XElement("element"); 
     parentElement.Add(element); 
     Test(element, ++i); 
    } 
} 

你需要把一個條件斷點就行了「的XElement元=新的XElement(」元「); 「條件爲「i == 999」。然後啓動程序,等待2-3秒,並在「parentElement.Add(element);」行放置正常斷點。現在VisualStudio凍結並且不可能調試。在WinForm應用程序中,它將關閉按F10後打開的所有表單。

但我發現,如果我在「工具 - >選項 - >調試」禁用調試選項「在變量窗口對象上調用字符串轉換功能」,我可以調試。它很慢,但至少VisualStudio不會凍結。有誰知道它爲什麼這樣做?因爲我不想禁用這個選項,所以在沒有它的情況下調試真的很煩人。

我也注意到,如果我只放一個斷點的主要方法結束,代碼運行非常快比較具有遞歸方法的條件斷點。

+0

你可以在另一個系統上重新安裝你的操作系統和VS,並嘗試在那裏進行調試嗎?我懷疑其他軟件/配置/硬件,而不是這是一個直接的VS問題。 – Lazarus 2010-03-03 16:05:55

+0

我不這麼認爲,因爲它在我的同事的計算機上執行相同的問題,並且其中一些人有不同的操作系統 – 2010-03-03 16:33:26

+0

您是否有一個斷點_lot_? – Max 2010-03-11 19:40:51

回答

0

不知道我曾經碰到這一點,但如果我是你,如果你還沒有,請刪除bin文件夾裏,然後重建項目。然後運行乾淨的解決方案以確保安全。有時,你的PDB過時會發生時髦的事情 - 所以你需要清除它們。另外,如果您打電話給外部組件,請將它們移除並重新附加它們以確保您擁有最新的組件。

+0

不幸的是,這似乎沒有幫助 – 2010-03-03 16:16:12

1

我發現,我得到這樣的速度變慢時,我已經添加不存在於符號的目錄列表遠程UNC共享。

嘗試將工具 - >選項 - >調試 - >符號,並確保所有在該列表中的目錄的實際存在。

但是我不知道那會如何導致你的程序在該點之後繼續。

4

嘗試刪除存儲調試/斷點信息的解決方案用戶選項文件(.suo)。您將失去所有解決方案用戶設置,例如斷點位置。當你有「有趣的」調試事件時,這是第一次嘗試,因爲這個文件可能會損壞。

如果這不能解決問題,那麼您還有其他問題正在進行,例如線程問題,內存過多碎片,垃圾回收問題,處理/終結問題等等。

3

我在另一個Stackoverflow線程上找到了這個問題的答案。這個問題有一個MS hotfix

+0

很多評論說修復不能修復任何東西=( – Ted 2011-12-19 00:15:27

0

我已經有了和你所描述的完全相同的問題。 MS修補程序解決了這個問題,現在我每次執行新的2008 VS安裝時都會安裝此修補程序。

+0

許多評論在網頁上說,修復根本沒有幫助=( – Ted 2011-12-19 00:15:48

+0

確保你刪除你的bin/obj文件夾中的所有應用此修補程序後您的項目 – wal 2011-12-19 02:29:04

0

下載修補程序,我知道這是一個古老的線程,但這種調試時,發生了一個Excel插件在我的情況。

問題是我的斷點是在後臺線程中,在我的監視窗口中,我在Excel中的ActiveWorkbook上有一箇舊的檢查。與其他許多人一樣,只能在Excel的主線程中進行調用。

一旦我刪除了該手錶,它再次調試得很好。