Visual Studio 断点无法命中

100
我正在使用一个ASP.NET MVC项目,连接到IIS进程(w3wp.exe)时似乎出现了一些问题。 我在自己的本地机器上运行解决方案和IIS 8.5,因此我认为这与我们的网络无关。对我而言奇怪的是,我可以在任何其他本地调试的解决方案中触发断点。
我遇到的问题是断点变成了红色的、空心的圆圈,并且永远不会被触发。通常修复此问题的方法是清理/重建解决方案,但这没有起作用。通过将"throw new Exception"添加到页面来确认代码是否被更新并确保它显示该异常。同样,这个问题只发生在这个解决方案中。任何其他解决方案我运行调试器都能正常工作。我还尝试过重新启动应用程序池,网站,IIS以及我的计算机。
我阅读的一些文章中提到,反病毒程序可能会阻止远程调试器访问该进程。但是,整个设置都包含在我的本地机器上,因此似乎不是问题所在。但最近我们雇了一位新的IT人员,他一直在修改所有人的电脑,这令我有点担忧。
另外,这个Web应用程序的绑定在IIS中有一个独特的点。绑定是 "*",以利用与子域相关的一些自定义功能。
与此同时,我将继续寻找解决方案,但如果有任何人有想法可以导致这个解决方案无法正确调试,我真的很感激。
编辑:找到了一个建议删除ASP.NET临时文件的解决方案。没有运气。

类似的问题:https://dev59.com/IGYq5IYBdhLWcg3w5kpm - Michael Freidgeim
33个回答

127

问题已解决。最终发现是在调试菜单中选择了错误的配置。我错误地将其切换为无法加载文档符号的发布配置。将其切换为调试配置后,断点现在可以正常命中。

除了 Abacus 下面提到的内容外,也可能是 web.config 转换影响了您的构建。在我们的情况下,我们有一些“发布”配置会从 web.config 的编译部分中删除 debug 属性。下面是一个示例截图和 Visual Studio 的构建配置下拉列表。

注意:还要确保您的平台和配置正确。在我的情况下,Dev.Debug|Mixed Platforms 不能正确构建解决方案,但 Dev.Debug|Any CPU 可以。

构建配置列表


10
为了澄清解决此问题的步骤:项目、属性、构建、高级,检查“调试信息”的值。如果设置为“无”,则无法在Visual Studio中捕获代码。 - Abacus
谢谢。小错误带来了大麻烦 :) - Nayanajith
啊哈,感谢这篇文章。刚刚解决了我的问题。 - Senkwe

47

我曾经一直在苦苦尝试修复这个问题。最终通过以下步骤解决:

选择调试(Debug) -> 选项(Options) -> 调试(Debugging) -> 常规(General)

勾选启用 .NET Framework 源代码跟踪。

(这或许就足够了,但如果你和我一样,还需要进行下面的操作。下面的解决方案也可以修复重新构建和清理后项目仍加载旧程序集/.pdb文件时的错误。)

选择工具(Tools) -> 选项(Options) -> 项目和解决方案(Projects and Solutions) -> 生成和运行(Build and Run),

取消勾选只有在运行时生成启动项目和其依赖项”的复选框,

运行时,当项目过期时下拉菜单中选择始终生成(Always Build)


这对我有用,尽管在Docker容器下启动调试会变得非常缓慢...所以我不得不禁用它以加快项目启动速度。 - Red
这对我有用。我不知道为什么设置似乎会在随机情况下自行更改,但这解决了问题。 - Tyshun
你救了我的命.. 或者说救了我的周六。 - YannickIngenierie
这对我有用。我的调试器突然停止进入断点,而我没有做任何更改,非常感谢你。 - joseph.c

38

启用“托管兼容模式”。转到“工具”->“选项”->“调试”,并启用托管兼容模式。


20

在我的情况下,这个解决方案很有用:

解决方案:在调试/常规设置中禁用“仅限我的代码”选项。

![输入图像描述]

参考:c-sharpcorner


天啊...居然成功了!我已经困扰着无法迈出这一步很长时间了,但这个方法解决了问题。我原以为需要启用JMC... - WernerCD

19

我知道这不是原帖的问题,但我在一个项目中遇到过类似的情况。该解决方案有多个MVC项目,并且错误的项目被设置为启动项。

我还将项目的配置设置为仅启动进程/调试器,而不打开新的浏览器窗口。

Visual Studio Project Properties

因此乍一看,调试器似乎已经启动了,但它启动了错误的进程。所以请检查并记住您也可以附加到多个进程。

这是一个愚蠢的错误,让我困惑了大约30分钟。

Attach to both processes


14
问题通过取消网页属性屏幕(通用下)的设置:
属性 > 生成 > 优化代码
来解决。 截图。

是的!我检查它以查看它做了什么 - 忘记我点击了它,几个月后无法弄清楚为什么它不会在任何调试点停止! - Nik P
我同意 - 这对我有用。尽管坐在我旁边的开发人员可以使用勾选设置进行调试。所以不确定为什么这对我有效,而他的需要勾选框才能工作。 - Spanners

9

右键单击您的项目,然后左键单击属性,选择Web选项卡。

验证是否为您的情况选择了正确的服务器:

  • IIS 本地

  • IIS Express


5

前往Visual Studio菜单:

调试 -> 附加到进程

然后点击下面图片中的选择按钮:

Attach to process

接下来确保选择了“自动确定要调试的代码类型”选项,如下所示:

Select code type


4

我在一个Xamarin.Forms项目中遇到了相同的问题。解决方法是手动将PCL从.NET 4.6转换为.NET Standard 2.0。

PCL高级构建配置

对于Visual Studio Mac:确保你对每个项目都执行该操作。

mac-screenshot


3
在Visual Studio 2017中,您需要确保您不是在发布配置模式下。
  1. 打开“生成”菜单ddl
  2. 点击“配置管理器”
  3. 将模式从“发布”更改为“调试”

configuration manager debug


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接