原文: 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 後重新開機電腦,反複啟動調試沒有問題,完美!