1. 程式人生 > >Visual Studio 2017 調試器的工作進程(msvsmon.exe)意外退出 調試將終止

Visual Studio 2017 調試器的工作進程(msvsmon.exe)意外退出 調試將終止

項目 issue 調試器 關閉 HP process The .exe 信息

原文:Visual Studio 2017 調試器的工作進程(msvsmon.exe)意外退出 調試將終止

開發環境:

  • Windows 10 in Parallels Desktop
  • Visual Studio 15.6

場景還原:
使用 Visual Studio 15.6 (即 Visual Studio 2017) 新建 ASP.NET Core MVC 項目,啟動調試,提示:

調試器的工作進程(msvsmon.exe)意外退出。調試將終止

其實這個問題曾經多次遇到過,但是都沒做記錄,導致每次都得重新搜索解決方案。

打開「事件查看器」,依次點擊「Windows 日誌」-「應用程序」,可以看到兩條「錯誤」級別的日誌:
技術分享圖片

其中,來源為"Application Error"的日誌顯示如下:

描述:
錯誤應用程序名稱: msvsmon.exe,版本: 15.0.27428.2043,時間戳: 0x5adf7e7a
錯誤模塊名稱: unknown,版本: 0.0.0.0,時間戳: 0x00000000
異常代碼: 0xc0000005
錯誤偏移量: 0x0000000000000000
錯誤進程 ID: 0x1518
錯誤應用程序啟動時間: 0x01d3de90a8d1c526
錯誤應用程序路徑: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Remote Debugger\x64\msvsmon.exe
錯誤模塊路徑: unknown

來源為"Visual Studio Remote Debugger"的日誌顯示如下:

描述:
無法找到來自源 Visual Studio Remote Debugger 的事件 ID 1002 的描述。本地計算機上未安裝引發此事件的組件,或者安裝已損壞。可以安裝或修復本地計算機上的組件。

如果該事件產生於另一臺計算機,則必須在該事件中保存顯示信息。

以下是包含在事件中的信息: 

遠程調試器遇到了嚴重的內部錯誤,必須中止遠程調試會話。請重新啟動調試。

然後 Google 到這篇文章 惱人的Visual Studio 2010崩潰重啟問題,看到作者最後關閉防火墻解決該問題後,我立即嘗試關閉防火墻重試,果然正常啟動調試器。

然後我又想到,昨晚在 Windows Server 上搭建 NGINX,遇到外網不能訪問的問題,原因就是在防火墻設置中,沒有將ngingx.exe加入到允許應用通過防火墻進行通信的列表。

聯想到此,我重新打開防火墻,然後將msvsmon.exe加入到允許應用通過防火墻進行通信的列表,並勾上專用公用

再次啟動調試,成功!

仔細看msvsmon.exe的路徑,是在 Remote Debugger 文件夾下,意思是遠程調試嗎?因此需要通過防火墻和外網通信?
我們知道 vs 可以遠程調試另一臺機器的代碼,但是本地調試時應該不涉及外網通信,難道和我的虛擬機環境有關系?但是以前在非虛擬機環境中也遇到過。
希望有了解的朋友解惑!


更新
上面的解決辦法,只成功了一次,然後第二次就不行了...

沒辦法,繼續找解決方案,嘗試用英文關鍵詞 Google
the debugger‘s worker process (msvsmon.exe) unexpectedly exited. debugging will be aborted
找到這篇文章 msvsmon.exe crashed when debugging,匯總了很多該問題的解決辦法,其中有一條引起了我的註意:

I too have Astrill installed. Completely uninstalling Astrill fixed the issue.

是的!我就是安裝了 Astrill,內心一陣欣喜,原來是這廝引起的!
卸載 Astrill 後重啟電腦,反復啟動調試沒有問題,完美!

Visual Studio 2017 調試器的工作進程(msvsmon.exe)意外退出 調試將終止