断点无法绑定 - Visual Studio 2015

时间:2015-07-30 19:59:08

标签: c# visual-studio visual-studio-2013 visual-studio-2015 breakpoints

我刚刚从Visual Studio 2013升级到2015,现在我遇到了断点问题。

这是一个命中或未命中,断点实际上会起作用,如果我在调试时设置了一个,我会得到错误:

  

断点无法绑定。

任何帮助将不胜感激。我准备在2015年放弃并回去。

25 个答案:

答案 0 :(得分:195)

我有同样的问题,但有一个不同的解决方案。 请注意我已更新到VS 2015 Update 1,问题仍然存在。

在以前版本的VS启动调试中,自动触发了调试模式下的构建。但是VS2015没有。

因此,如果您的上一次构建处于发布模式,并且您尝试调试,则断点无法正常工作。

您必须首先手动构建调试模式,然后开始调试。

答案 1 :(得分:76)

我遇到了同样的问题。

我解决了它禁用"优化代码"项目属性“构建”选项卡中的选项。

答案 2 :(得分:35)

这看起来似乎微不足道,但是在经历了与你提到的相同问题的大量讨论之后,我发现当我尝试调试时,我的构建设置为“release”而不是“debug”..重新构建解决方案因为“debug”修复它,我可以正常设置断点

答案 3 :(得分:27)

我遇到类似的问题,断点无法绑定,以及某些本地变量未在Locals窗口中进行评估。最终修复它的是在Options-> Debug-> General选项卡中启用“在模块加载时抑制JIT优化(仅管理)”选项。一旦我设置它就能够没有问题地绑定。

答案 4 :(得分:12)

我有这个问题。我运行了一个性能分析会话,它使用性能监视器的设置修改了Web.config文件。这打破了我在断点处停下来的能力。当我恢复到原始Web.config(删除了Performance Profiler设置)时,断点再次开始工作。

答案 5 :(得分:5)

昨天我遇到了同样的问题。我使用了“清洁解决方案”功能,但它有所帮助。

答案 6 :(得分:5)

  

将Release模式更改为Debug,就我而言,这解决了我的问题。

enter image description here

答案 7 :(得分:4)

我在我的解决方案上运行性能,并将其添加到我的web.config

<compilation debug="true" targetFramework="4.5" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

assemblyPostProcessorType是问题所在,我将其删除并解决了我的问题

答案 8 :(得分:4)

解决方案是禁用设计优化。

Project Properties> Build> Advanced Compile Options> Enable Optimizations

答案 9 :(得分:1)

我知道这是一篇过时的文章,但是如果上述所有其他技巧都无法解决,请确保要调试的映像是最新的。出于某种原因,在将.NET Core项目发布并传输到RPi上的Raspberry Pi“解压缩”之后,并没有复制和覆盖工作目录中的某些DLL。当我连接调试器时,认为一切正常,一些断点被命中,其他断点未命中,而另一些断点则给了我“无法绑定”的错误。解决解压缩问题后,所有断点和符号都会恢复。希望对您有所帮助。

答案 10 :(得分:1)

如果要发布Web应用程序,请检查Configuration是否设置为Debug(默认情况下,调试配置中会设置为未优化代码并完全创建符号表)。{ {3}}

答案 11 :(得分:1)

我在我的开发机器上挥动了一只橡皮鸡,在它周围画了一个白垩的粉笔轮廓,这很有效。在你轻笑之前,这并不比为这个bug提供的其他非解决方案荒谬。您可以通过此处提供的任何解决方案中的任何简短或冗长的步骤来解决这个问题。我相信放弃Visual Studio 2015是避免它的唯一实用方法。

答案 12 :(得分:1)

我没有改变优化&#39;设置,但根据其他答案,我

  1. 将解决方案资源管理器设置为显示项目的所有文件
  2. 删除隐藏的bin和调试文件夹
  3. 执行&#39;清洁&#39;在项目上
  4. 执行&#39;重建&#39;在项目上
  5. 到目前为止,这已经为我修好了。似乎更新到VS2015 Update 2已经在我的系统上搞砸了一些东西。

答案 13 :(得分:0)

新的Update for Microsoft Visual Studio 2015 Update 3 (KB3165756)为我修复了断点问题,我正在尝试检查嵌入在ASP.NET核心应用程序中的cshtml文件中的C#代码中的局部变量。

答案 14 :(得分:0)

第1步,排除显而易见的事实:

  • 在调试模式下编译。
  • 在设置断点之前尝试清理解决方案。
  • 转到Debug文件夹,然后删除[Your application] .pdb文件。
  • 然后执行构建或重建您的应用程序。
  • 转到Debug文件夹并确认您有一个全新的[您的 应用程序] .pdb文件。
  • 然后尝试设置你的断点。

第2步对于C ++项目:

检查以下项目属性:

  • C ++ / General / Debug信息格式:程序数据库。
  • C ++ / Optimization:已禁用。
  • C ++ /代码生成/运行时库:多线程调试。
  • 链接器/调试/生成调试信息:是。
  • 链接器/调试/生成程序数据库: $(TARGETDIR)$(的TargetName)的.pdb。
  • 链接器/清单文件/生成清单:否。
  • 链接器/清单文件/允许隔离:否。
  • 链接器/嵌入式IDL /忽略嵌入式IDL:是。
  • 再次执行第1步

    您可以尝试添加__debugbreak()。此语句需要放在要中断的源文件中。

第2步对于C#项目:

  • 在项目属性中,Build / General / Optimize代码应该是 禁用。
  • 在IDE设置Debug / Options and Settings / Debugging / General Suppress JIT中 模块加载优化(仅限管理):已启用
  • 再次执行第1步

尝试在其他计算机上打开解决方案。如果您可以在另一台计算机上绑定断点,则可能意味着您的VS或您的操作系统出现问题。

第3步,确保您的VS是最新的:

在VS2013 RTM以及VS2015 Update 1和Update2中都有类似问题的报告。

在VS中,转到工具/扩展程序&amp;更新/更新/产品更新,并查看您正在运行的版本。如果需要更新,它将出现在那里。

第4步,确保您的操作系统是最新的:

最后,如果你运行的是Win 10操作系统,那么在构建14251中存在关于此问题的报告错误。这在构建14257(及更高版本)中已得到解决。

答案 15 :(得分:0)

我遇到了类似的问题,这里没有任何答案能够解决我面临的问题。然而,与问题不同的是,我从未收到过任何关于未能绑定的消息。断点从来没有打过。希望这有助于将来有人在WCF上敲门。

<强> TL / DR
在SOAP消息中,有一个包含错误数据的记录导致断点不被命中。

全文:

我有一个基于另一个团队的WSDL的WCF服务。不是我的定义,也没有对它的控制......我通过这项服务接收来自其他团队的消息。在我的情况下,我收到消息,可以将消息记录到数据库中的消息日志表(在我的服务方法被调用之前发生),服务方法似乎被称为(可能它不是),服务器以202 Accepted回应。通信正在运行,但在方法调用期间没有数据保存到数据库。

由于服务返回成功响应,因此我排除了http和传输相关问题。

所以我启动VS2015来调试服务。有问题的信息很大,但在我期望的范围内。我在服务方法的第一行放置一个断点并发送大消息,但断点从未命中。我尝试了一个较小的消息,我知道在同一个运行实例上工作,并且断点被击中了。所以配置中的一切似乎都很好。我想也许消息大小中有一些东西。

我尝试了所有我能找到的东西 - 确保我在调试配置中,清理并重建,手动将调试器附加到w3wp进程(VS已经是),使用Debugger.Break()而不是断点,设置多个启动项目,卸载我的测试项目,以便服务项目是唯一的,更新.NET,重新启动VS2015,重新启动,从本地IIS切换到IIS Express并返回,使用保证最新的WSDL重新创建服务。  什么都不重要。断点从未被击中。

我最终不得不逐个清除大邮件中的记录,直到我发现一条记录中有错误的数据。在我的例子中,它是一个没有2个DateTime字段值的记录。当我创建一条消息中只有一条记录并发送它时,断点没有被击中。当我为这两个DateTime字段提供值并在断点按预期发送相同(固定)消息时。

我启用了每个CLR异常,除了缺少.pbd文件之外什么都没有启动,我并不关心。 WCF愉快地发送了一条带有错误记录的请求。我并不是说WCF不应该根据合同发送它,只是坏记录导致断点不被击中。

答案 16 :(得分:0)

我不得不修改web.config文件以启用调试。改变这个:

<compilation debug="true" targetFramework="4.5.2" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

为:

<compilation debug="true"/>

答案 17 :(得分:0)

VS断点无法绑定异步方法。

我安装了一个App Dynamics代理,导致了这种情况。删除它,你很高兴。

答案 18 :(得分:0)

在尝试任何其他解决方案之前,请

清洁整个解决方案。在尝试了先前答案中提到的几乎所有其他内容并重新启动了Visual Studio几次之后,只需清洁解决方案就可以了!

答案 19 :(得分:0)

我尝试了这里建议的所有内容。最终,我在项目属性-> Web中将“特定页面”设置为本地的起始URL,页面和查询参数。在调试模式下进行了清理和重建,结果达到了我的断点。

答案 20 :(得分:0)

虽然这是一个较新的版本(VS2017),但我在C#项目中遇到此问题。尝试清洁,重建,重新启动Visual Studio等。

修复此问题的方法是关闭Visual Studio并删除.vs文件夹,该文件夹位于解决方案目录中的隐藏文件夹中。删除.vs文件夹应该不会给您带来任何问题,尽管您将需要重置启动项目。

答案 21 :(得分:0)

我遇到了同样的问题,但没有意识到调试工具栏上的“Debug”已经改为“Release”(通常直接在菜单下)。所以我把它设置为“Debug”它有效。

答案 22 :(得分:0)

就我而言,在我使用Profiler之后创建了一个新的web.config文件。将web.config还原到以前的版本可以解决此问题。这是一个VS2015 C#Web应用程序。

答案 23 :(得分:0)

我今天遇到了绑定断点错误。我在下面解决了我的问题。

如果您的所有调试配置都不正确,则无法解决下面的问题。

  1. 清洁项目
  2. 如果输出路径与bin文件夹不同,请将其替换为bin文件夹(这是最重要的规则)
  3. 重建
  4. 也许这个解决方案对某人有帮助。

答案 24 :(得分:-1)

我查看了之前的答案,@ Will answear解决了我遇到的主要问题,另一个能够编辑并继续但仔细查看我发现的AssemblyInfo.cs文件一些禁用的调试功能。

然后我最终删除了旧的调试属性并添加了我从另一个项目中获取的以下内容

#if DEBUG
[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations | System.Diagnostics.DebuggableAttribute.DebuggingModes.EnableEditAndContinue | System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | System.Diagnostics.DebuggableAttribute.DebuggingModes.Default)]
#endif

但我觉得这不是最佳方式。