2009-05-23 132 views
8

我有一個vb.net項目,有時,當在IDE中運行時,突然掛起。通常這不會是一個問題。只要點擊'暫停',看看當前正在運行的線程,並找到死鎖(或其他任何)。什麼會導致Visual Studio 2008在調試時掛起?

但現在我遇到了一種情況,不僅程序掛起,而且試圖暫停它會導致視覺工作室本身掛起。爲了獲得控制權,我必須殺掉程序正在調試的過程,此時視覺工作室會恢復正常,並說它無法暫停執行。這是令人沮喪的,因爲殺死進程意味着程序狀態丟失(當然),所以我不知道哪裏掛起

那麼這種行爲有沒有什麼共同的原因?我應該尋找什麼?

+1

您是否找到了解決方案?我被困在完全相同的情況..... – Roey 2009-07-08 16:56:59

回答

-1

我想檢查正在調試的程序的代碼,我想在你嘗試調試的代碼中可能存在無限循環或競態條件。過去一直是這種情況,特別是在我曾經擁有的單核筆記本電腦上。你可以提供任何有關在你試圖暫停時你認爲執行的程序在哪裏?

+0

嗯,我使用了一種排序消息傳遞範例。每個'複雜的正確鎖定'類都有一個其他類必須用來請求它執行任何操作的調用隊列。 該程序是一個小型遊戲服務器。當它鎖定時,有多個套接字隊列將數據接收到處理對象上,這些隊列將顯示一些日誌信息給UI,並將數據寫回到套接字。 這讓我很困惑:它不應該阻止用戶界面,因爲我試圖避免持有鎖。這並不像我得到一個無限的隊列循環,因爲我的cpu沒有秒殺。 – 2009-05-23 19:31:54

0

檢查修補程序和服務包。我已經看到與.net編程和調試掛起有關的錯誤。 (VS在64位操作系統調試C++ 32位應用程序時掛起對我來說:ES有時。)

3

查找爲一個Visual Studio問題的某個特定修正可以是棘手:http://social.msdn.microsoft.com/Search/en-US/?query=visual%20studio%202008%20hang&ac=3

此外,來自不是所有的修補程序微軟直接向公衆發佈。有些僅限於系統出現特定問題的客戶。所以你必須聯繫微軟來獲得修復。他們這樣做是爲了限制發佈可能會破壞別人的修補程序的潛在缺陷。所以如果一切都失敗了,給他們一個電話。

這裏有一些其他的東西,我喜歡做的事時,Visual Studio中開始演戲了:

  1. 刪除舊的斷點和觀察變量。
  2. 在Visual Studio未運行的情況下,刪除智能感知文件(.ncb)
  3. 清理解決方案,然後重建所有代碼。
6

如果您的程序安裝全局掛鉤(與應用程序通信) - 可能是這種情況。掛鉤嘗試與您的應用程序(由調試器暫停)進行通信並被鎖定。調試器無法接收它的窗口消息:掛鉤的調試器(使用hook dll)和掛鉤應用程序之間的經典死鎖。

+0

地獄,我花了很多時間在調試應用程序(使用SetWindowsHookEx)時試圖找出錯誤。整個系統在每個調試器的第二步或第二步中掛起。禁用鉤子調用會產生訣竅(小缺點:在調試過程中鉤子不能工作)。感謝您的提示! – sharpener 2015-11-18 12:39:03

0

我剛剛遇到了一個非常類似的問題(VS無法中斷執行),使用Debug - > Delete all breakpoints解決了這個問題。

相關問題