2015-03-30 92 views
1

截至今日,我無法再使用Visual Studio調試任何C#代碼。如果我使用調試器,可以觸發斷點,但只要執行暫停,麻煩就開始了。按下「步入」或「繼續」通常會生成一個AccessViolationException,表示內存已損壞並終止當前請求。如果我然後再運行一個Web請求,我將獲得一個SEHException(發生在未知模塊中)。Visual Studio無法使用調試器(AccessViolationException)。以隨機順序執行的代碼

它更奇怪,因爲如果AccessViolationException不觸發,顯示下一個語句的程序計數器會隨機跳轉。然後代碼以隨機順序執行! (直到它崩潰)。

如果沒有觸發斷點,那麼應用程序將以調試模式運行(即使調試器已連接)。

我相信這不是代碼問題。其實我可以有一個新項目,下面的代碼重現訪問衝突:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Hello world"); 
     Console.WriteLine("Access violation"); // This will throw if breakpoint set 
    } 
} 

有VS緩存刪除,刪除名爲.suo,清洗,嘗試安全模式。一個可能的嫌疑是這是在Windows 10預覽機器上,並且上週有更新。我不確定還有什麼地方可以確認它,或者在沒有重新成像機器的情況下修復它。

+0

這裏幾件事ü可以做 - 首先嚐試啓用打破例外,第二個嘗試改變從「任何目標平臺CPU'到'x86',第三 - 檢查這個鏈接http://stackoverflow.com/questions/3469368/how-to-handle-accessviolationexception – HappyLee 2015-03-30 21:24:35

+0

不幸的是沒有喜悅。我的直覺是,這是一個VS問題,而不是代碼問題。 – AndySavage 2015-03-31 00:44:07

+0

我也遇到了這個問題,然後我將目標平臺形式'Any CPU'改爲'X64',這對我很有用。 – 2015-03-31 03:16:37

回答

1

Any CPU改爲x64在我的「Hello World」測試項目中爲我解決了這個問題。

爲了讓我的原始項目工作,這實際上是一個Web項目,我不得不採取一些額外的步驟。

  1. 將項目中的所有庫更新爲x64,而不僅僅是web項目。
  2. 啓用VS2013 Tools > Options > Projects & Solutions > Web Projects > Use 64 Bit IIS ... 64位IIS快遞
  3. 安裝Internet Information Services Hostable Web Core通過控制面板(Turn Windows Features On or Off)。在我執行此操作之前,我會在以HttpException (0x80004005): Specified argument was out of the range of valid values的形式啓動64位Web項目時收到錯誤消息。安裝HWC修復它。

仍然沒有明智的爲什麼發生這種情況,但至少我可以再次調試項目。

+0

謝謝,我剛剛也遇到過這個問題。我已經暫時解決了如果將它強制爲x86,因爲x64與某些引用不兼容。 – 2015-04-15 14:04:31

0

這一例外似乎開始從哪兒冒出來肯定使我有些頭疼,但我可以通過以下操作來解決我的問題:

  1. 進入受影響的項目的性質
  2. 圍棋調試選項卡
  3. 取消選中「啓用原生代碼調試」
相關問題