开发环境:

  • 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)意外退出 调试将终止的更多相关文章

  1. Visual Studio 2019社区版:错误 MSB6006 “CL.exe”已退出,代码为 2

    系统:win10 环境:Visual Studio 2019社区版 问题:错误 MSB6006 “CL.exe”已退出,代码为 2 解决方法: 1 一个类内部的定义返回类型为double的方法种没有写 ...

  2. Visual Studio 2017开发环境的安装

    Visual Studio 2017是微软为了配合.NET战略推出的IDE开发环境,同时也是目前开发C#程序最新的工具,本节以Visual Studio 2017社区版的安装为例讲解具体的安装步骤. ...

  3. Visual Studio 2017 远程调试(Remote Debugger)应用

    I.远程调试情景 项目部署在远程服务器或非本地环境中,需要 处理应用中遇到的一些错误时 (不能直接附加进程或F5调试应用). II. 远程调试准备 1.远程服务器--操作系统和硬件要求 MSDN 操作 ...

  4. Visual Studio 2017 通过SSH 调试Linux 上.NET Core

    Visual Studio 2017 通过SSH 调试Linux 上.NET Core 应用程序. 本文环境 开发环境:Win10 x64 Visual Studio 2017 部署环境:Ubuntu ...

  5. Visual Studio 2017 调试 windows server 2016 Docker Container

    网上很多文章都是在win10下,用Docker for windows工具进行Docker的安装部署的.用知道windows server 2016已经原生支持Docker了,其windows Con ...

  6. Visual Studio 2017 远程调试

    当你将.NET程序发布到不同机子时候,想要进行调试,但机子不足以安装VS或安装VS麻烦,可以考虑使用远程调试,这里以C#项目为例,asp.net方法略有不同 原理: 首先安装VS远程调试工具,有俩种安 ...

  7. Visual Studio 2017中使用SourceLink调试ASP.NET Core源码

    背景 当我们在学习ASP.NET Core或者调试ASP.NET Core程序的时候,有时候需要调试底层代码,但是当我们在Visual Studio中调试程序的时候,由于一些基础库或者第三方库缺少pd ...

  8. Visual Studio 2017调试开源项目代码

    在我们的开发过程中很多时候我们会从GitHub上面下载一些开源的项目代码,然后在此基础上进行调试,正常情况下我们只需要将项目的源代码编译成Dll或者在.Net Core项目中直接引用相应的Nuget包 ...

  9. 如何使用Visual Studio 2017调试.net库源代码

    在Visual Studio 2017按如下步骤设置: 1.取消选中(工具 - >选项 - >调试 - >仅我的代码)复选框.2.确保设置了(工具 - >选项 - >调试 ...

随机推荐

  1. .NET Entity Framework基本使用方法

    生成模型 EF有两种查询方式,Linq查询 .Lambda表达式 //普通查询 Linq 方式 IQueryable<Book> list = from b in db.Set<Bo ...

  2. 解决bootstrap和easyUI部分css类冲突问题。

    今天发现bootstrap和easyui的css类重复用了一个很笨的办法解决了,这种小事网上都不好搜啊. 我先引用的bootstrap后引用的easy UI,bootstrap的会被覆盖,boot的样 ...

  3. postgres on linux red hat 7 配置问题

    记录几个重点的东西吧,具体的步骤 不上了,网上有很多, 1.  redhat subscripiton需要订阅,没钱的需要去更换yum 源,也很简单,就是把自带的yum给删掉,重装其他的,大家可以百度 ...

  4. week07 13.4 NewsPipeline之 三 News Deduper

    还是循环将Q2中的东西拿出来 然后查重(去mongodb里面把一天之内的新闻都拿出来,然后把拿到的新的新闻和mongodb里一天内的新闻组一个 tf-idf的对比)可看13.3 相似度检查 如果超过一 ...

  5. java应用健康检查

    本文主要针对自己手写shell监控应用状态,有可系统解决方案的,比如K8S,可以略过 #!/bin/sh#health_check.sh count=`ps -ef | grep test.jar | ...

  6. ionic+cordova填坑

    1.命令行更新 cordova,ionic.nodejs ,npm,bower等到新版本,不要在vs中更新 2.程序突然白屏 因为拷贝其他程序到js中,乱码 :a模拟器打开 f12看控制台错误解决 3 ...

  7. C++ 迭代器的使用和操作

    迭代器是一种检查容器内元素并遍历元素的数据类型.C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访 ...

  8. 学习日 day1

    今天第一天开始写博客,希望以后能坚持,每天写,一是记录自己学习的历程,更重要的是复习每天学过的东西. 今天学习的内容:time模块的相关语法 导入方式 首行输入import time即可 time.t ...

  9. eclipse配置Servlet连接Mysql要注意的几个地方

    用Servlet即把jdbc那套放到继承于HttpServlet的派生类之内,那段代码很简单 protected void doPost(HttpServletRequest request, Htt ...

  10. Git 基础 - 删除暂存区的文件

    1 直接删除文件 这个文件会有两个操作:已暂存的修改.未暂存的删除 2 直接删除文件 + 记录删除操作 先在工作目录中删除文件,再使用git rm命令记录此次移除文件的操作(删除暂存区中该文件的修改快 ...