Visual Studio 2017 调试器的工作进程(msvsmon.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)意外退出。
原文: 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 日志」-「应用程序」,可以看到两条「错误」级别的日志:
img_71b25f4cdc3bc657c652e8ffdbc57cb2.jpe

其中,来源为"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 后重启电脑,反复启动调试没有问题,完美!

目录
相关文章
|
1月前
|
缓存 Unix Linux
【Linux】—— 进程的创建和退出
【Linux】—— 进程的创建和退出
|
8月前
|
应用服务中间件 Apache Windows
Apache Tomcat 9.0 Tomcat9服务无法启动,提示“Windows无法启动Apache Tomcat……错误1067:进程意外终止
Apache Tomcat 9.0 Tomcat9服务无法启动,提示“Windows无法启动Apache Tomcat……错误1067:进程意外终止
432 0
Apache Tomcat 9.0 Tomcat9服务无法启动,提示“Windows无法启动Apache Tomcat……错误1067:进程意外终止
|
11月前
|
存储 小程序 Shell
【Linux】进程的创建、退出、等待和替换
一. 进程创建 — fork 1. 什么是fork()函数 头文件:#include <unistd.h>
|
11月前
|
Java Android开发
Mac下 Visual VM 无法检测到本地的Java进程
Mac下 Visual VM 无法检测到本地的Java进程
98 0
|
Linux
linux基础——进程的退出及资源回收
linux基础——进程的退出及资源回收
337 0
linux基础——进程的退出及资源回收
|
Android开发
【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )
【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )
150 0
|
Web App开发 JavaScript 前端开发
在vscode中调试CocosCreator插件主进程
在vscode中调试CocosCreator插件主进程
1022 0
VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
256 0
VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
|
物联网 Linux 开发者
读进程结束写进程再写命名管道写进程收到信号退出|学习笔记
快速学习读进程结束写进程再写命名管道写进程收到信号退出
66 0
读进程结束写进程再写命名管道写进程收到信号退出|学习笔记
|
消息中间件 运维 监控
一次 RocketMQ 进程自动退出排查经验分享(实战篇)
一次 RocketMQ 进程自动退出排查经验分享(实战篇)
一次 RocketMQ 进程自动退出排查经验分享(实战篇)