開發環境:
- 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 后重啟電腦,反復啟動調試沒有再崩潰,解決!