关于c#:断点无法绑定 – Visual Studio 2015

Breakpoint Failed to Bind - Visual Studio 2015

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

这是一个命中或未命中的地方,断点将实际工作,如果我在调试时设置了一个断点,我会得到错误:

The breakpoint failed to bind.

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


我有同样的问题,但解决方法不同。请注意,我更新到了vs 2015更新1,问题仍然存在。

在先前版本的VS中,启动调试会自动在调试模式下触发生成。但在VS2015中,情况并非如此。

所以,如果最后一个构建处于发布模式,并且您尝试调试,则断点将不起作用。

您必须先在调试模式下手动生成,然后开始调试。


我也有同样的问题。

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


这可能看起来很简单,但是在用与您提到的相同的问题反复讨论之后,我发现当我尝试调试时,我的构建被设置为"发布"而不是"调试"。重新构建"调试"的解决方案修复了它,我可以将断点设置为正常值。


我有一个类似的问题,断点无法绑定,以及某些局部变量在局部变量窗口中没有计算。最后解决的问题是在"选项"->"调试"->"常规"选项卡中启用"模块加载时抑制JIT优化(仅限托管)"选项。一旦我确定它可以毫无问题地绑定。


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


我昨天也有同样的问题。我使用了"干净解决方案"功能,它起到了帮助。


Change Release mode to Debug, In my case, this fixed my problem.

enter image description here


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

1
<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是问题,我删除了它,解决了我的问题。


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

Project Properties> Build> Advanced Compile Options> Enable Optimizations


我没有更改"优化"设置,但基于此处的其他答案,我

  • 设置解决方案资源管理器以显示项目的所有文件
  • 已删除隐藏的bin和debug文件夹
  • 对项目进行了"清理"
  • 对项目执行了"重建"
  • 到目前为止,这已经帮我修好了。似乎更新到VS2015更新2在我的系统中借用了一些东西。


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

    我安装了一个导致这种情况的应用程序动态代理。把它拿开,你就可以走了。


    我今天遇到了绑定断点错误。我已经解决了我的问题。

    如果您的所有调试配置都不正确,那么在执行下面的操作时就无法解决问题。

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


    我也遇到了同样的问题,但我没有意识到"调试"已经在调试工具栏(通常直接在菜单下)上更改为"发布"。所以我把它设置为"调试",它起作用了。


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


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


    第一步,排除明显的:

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

    C++项目的第2步:

    检查以下项目属性:

    • C++/通用/调试信息格式:程序数据库。
    • C++ /优化:禁用。
    • C++/代码生成/运行时库:多线程调试。
    • 链接器/调试/生成调试信息:是。
    • 链接器/调试/生成程序数据库:$(targetdir)$(targetname).pdb。
    • 链接器/清单文件/生成清单:否。
    • 链接器/清单文件/允许隔离:否。
    • linker/embedded idl/ignore embedded idl:是。
    • 再次执行步骤1

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

    C项目的步骤2:

    • 在项目属性中,build/general/optimize代码应为残疾人。
    • 在IDE设置中,调试/选项和设置/调试/常规抑制JIT模块加载优化(仅限托管):已启用
    • 再次执行步骤1

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

    步骤3,确保您的vs是最新的:

    在VS2013 RTM以及VS2015更新1和更新2中都有类似问题的报告。

    在vs中,转到"工具/扩展"和"更新/更新/产品更新",查看正在运行的版本。如果需要更新,它将出现在那里。

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

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


    我刚刚遇到了一个类似的问题,这里的答案都没有碰到我面临的问题。不过,与这个问题不同的是,我从来没有收到任何消息说绑定失败。断点从未命中。希望这对将来有人用WCF把他们的头撞到墙上有帮助。

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

    完整故事:

    我有一个基于另一个团队的WSDL的WCF服务。不是我的定义,不能控制它…我通过此服务接收来自其他团队的消息。在我的例子中,我接收消息,可以将消息记录到数据库中的消息日志表中(这发生在我的服务方法被调用之前),服务方法似乎被调用(可能不是),服务器以202接受响应。除了在方法调用期间没有数据保存到数据库之外,通信正在工作。

    由于服务返回成功响应,我排除了与HTTP和传输相关的问题。

    所以我启动了VS2015来调试服务。所讨论的信息很大,但完全在我所期望的范围内。我在服务方法的第一行放置了一个断点,并通过它发送了一条大消息,但断点从未命中。我尝试了一条较小的消息,我知道这条消息在同一个运行实例上有效,断点被击中了。所以配置中的一切看起来都很好。我想可能有个消息大小的东西。

    我尝试了所有能找到的方法-确保我处于调试配置中,清理并重新生成,手动将调试程序附加到W3wp进程(vs已经存在),使用Debugger.Break()而不是断点,设置多个启动项目,卸载我的测试项目,使服务项目是唯一的一个,更新.net,重新启动vs2015,重新启动,从本地IIS切换到IIS Express并返回,使用保证的最新WSDL重新创建服务。没什么关系。从未命中断点。

    我最终不得不一个接一个地清除大消息中的记录,直到我找到一个有坏数据的记录。在我的例子中,它是一条对2个日期时间字段没有值的记录。当我创建一条只有这一条记录的消息并发送它时,断点没有被命中。当我为这两个日期时间字段提供值并在按预期触发的断点中发送相同的(固定的)消息时。

    我启用了每一个CLR异常,除了丢失的.pbd文件之外,什么都没有触发,这是我不关心的。WCF很高兴地通过发送了带有错误记录的请求。我不是说WCF不应该根据合同发送它,只是坏记录导致了断点没有被命中。


    我必须修改web.config文件才能启用调试。改变这一点:

    1
    <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"/>

    到:

    1
    <compilation debug="true"/>

    我在我的开发机器上挥舞着一只橡皮鸡,在它周围画了一个星星的粉笔轮廓,效果很好。在你咯咯笑之前,这和其他针对这个bug的非解决方案一样荒谬。简单地说,在这里提供的任何解决方案中,任何一个简短或冗长的步骤都不会使这个问题消失。我相信放弃Visual Studio 2015是避免这种情况的唯一可行方法。


    在尝试任何其他解决方案之前,请清洁整个解决方案。在尝试了之前答案中所说的几乎所有其他内容,并多次重新启动Visual Studio之后,只需清理解决方案就行了!


    我试过这里的建议。最后,我将project properties->web中的"特定页面"设置为本地的start url、page和query参数。在调试模式下执行了清理和重新生成,但它击中了我的断点。


    虽然这是一个更晚的构建(VS2017),但我在C_项目中遇到了这个问题。已尝试清理、重建、重新启动Visual Studio等。

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


    我查看了前面的答案,@will's answear修复了我遇到的主要问题,另一个可以编辑并继续,但是仔细查看assemblyinfo.cs文件,我发现了一些禁用的调试功能。

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

    1
    2
    3
    #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

    但我觉得这不是最好的方法。