断点绑定失败 - Visual Studio 2015
Breakpoint Failed to Bind - Visual Studio 2015
我刚从 Visual Studio 2013 升级到 2015,现在遇到断点问题。
断点实际起作用是一个成功或失败的问题,如果我在调试时设置一个断点,我会收到错误消息:
The breakpoint failed to bind.
如有任何帮助,我们将不胜感激。我准备放弃2015回去
我遇到了这个问题。我 运行 一个性能分析会话,它使用性能监视器的设置修改了 Web.config
文件:
<appSettings>
<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio19\Community\Team Tools\Performance Tools\vsinstr.exe"/>
</appSettings>
<compilation debug="true" targetFramework="4.5"
assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
...
</compilation>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<codeBase version="16.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="VsWebSite.Interop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<codeBase version="8.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/VsWebSite.Interop.DLL"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
这打破了我在断点处停止的能力。当我恢复到原来的 Web.config(删除 Performance Profiler 设置)时,断点又开始工作了。
这可能看起来微不足道,但在对与您提到的相同问题进行了大量的思考之后,我发现当我尝试调试时我的构建被设置为 "release" 而不是 "debug"。 . 重新构建 "debug" 的解决方案修复了它,我可以正常设置断点
我遇到了类似的问题,断点无法绑定,某些局部变量未在 Locals window 中求值。最终修复它的是在 Options->Debug->General 选项卡中启用 "Suppress JIT optimization on module load (Managed only)" 选项。一旦我设置它能够毫无问题地绑定。
我遇到了同样的问题
我解决了它禁用项目属性构建选项卡中的 "Optimize code" 选项。
我昨天遇到了同样的问题。我使用了 "Clean Solution" 功能,它很有帮助。
我 运行 在我的解决方案上的表现,并将其添加到我的 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
是问题所在,我将其删除并解决了我的问题
我遇到了同样的问题,但解决方案不同。
请注意,我已更新到 VS 2015 Update 1,但问题仍然存在。
在以前版本的 VS 中,启动调试会自动触发调试模式下的构建。但在 VS2015 中却没有。
因此,如果您的最后一个版本处于发布模式,并且您尝试调试,断点将不起作用。
您必须先在调试模式下手动构建,然后再开始调试。
今天遇到绑定断点错误。我已经解决了下面的问题。
如果您的所有调试配置都不正确,则无法通过以下方式解决问题。
- 清理项目
- 如果输出路径与bin文件夹不同,则替换为bin文件夹(这是最重要的规则)
- 重建
也许这个解决方案对某人有帮助。
解决方案是禁用设计优化。
Project Properties> Build> Advanced Compile Options> Enable Optimizations
我没有更改 'optimize' 设置,但根据此处的其他答案,我
- 将解决方案资源管理器设置为显示项目的所有文件
- 删除了隐藏的 bin 和调试文件夹
- 对项目进行了 'Clean'
- 在项目上执行 'Rebuild'
到目前为止,这已经为我解决了。似乎更新到 VS2015 Update 2 使我的系统出现了一些问题。
我也遇到了同样的问题,但是没有意识到调试工具栏(通常在菜单下)上的"Debug"已经变成了"Release"。所以我将它设置为 "Debug" 它起作用了。
VS 断点无法绑定到异步方法。
我安装了一个 App Dynamics 代理导致了这个问题。删除它,你就可以开始了。
我查看了之前的答案,@Will 的 修复了我遇到的主要问题,另一个能够编辑并继续但仔细查看了我发现的 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
但我觉得这不是最好的方法。
新的 Update for Microsoft Visual Studio 2015 Update 3 (KB3165756) 为我修复了断点问题,我试图检查 ASP.NET 核心应用程序中 cshtml 文件中嵌入的 C# 代码中的局部变量。
第 1 步,排除显而易见的问题:
- 在调试模式下编译。
- 尝试在设置断点之前清理解决方案。
- 转到 Debug 文件夹,然后删除 [您的应用程序].pdb 文件。
- 然后构建或重建您的应用程序。
- 转到 Debug 文件夹并确认您有一个全新的 [Your
应用程序].pdb 文件.
- 然后尝试设置断点。
步骤 2 对于 C++ 项目:
检查以下项目属性:
- C++/General/Debug信息格式:程序数据库。
- C++/优化:禁用。
- C++/代码generation/Runtime库:多线程调试。
- Linker/Debugging/Generate调试信息:是。
- Linker/Debugging/Generate节目资料库:
$(TargetDir)$(TargetName).pdb.
- Linker/Manifest File/Generate 清单:没有.
- Linker/Manifest File/Allow隔离:无
- Linker/Embedded IDL/Ignore 嵌入式 IDL:是。
再次执行步骤 1
您可以尝试添加 __debugbreak()。此语句需要放在您要中断的源文件中。
步骤 2 对于 C# 项目:
- 在项目属性中 Build/General/Optimize 代码应该是
禁用。
- 在IDE设置中Debug/Options和Settings/Debugging/General抑制JIT
模块加载优化(仅限托管):已启用
- 再次执行步骤 1
尝试在另一台机器上打开您的解决方案。如果您可以在另一台机器上绑定断点,这可能意味着您的 VS 或 OS.
存在问题
第 3 步,确保您的 VS 是最新的:
在 VS2013 RTM 以及 VS2015 Update 1 和 Update2 中有类似问题的报告。
在 VS 中转到 Tools/Extensions & Updates/Updates/Product 更新并查看您的版本 运行。如果需要更新,它将出现在那里。
第 4 步,确保您的 OS 是最新的:
最后,如果您的 运行 是 Win 10 OS,则在 build 14251 中存在关于此问题的错误报告。此问题已在 build 14257(及更高版本)中解决。
我刚刚 运行 遇到了类似的问题,这里 none 的答案正好解决了我面临的问题。但是,与问题不同的是,我从未收到任何消息说绑定失败。断点永远不会命中。希望这对将来用 WCF 撞墙的人有所帮助。
TL/DR:
在 SOAP 消息中有一条包含错误数据的记录导致断点未命中。
全文:
我有一个来自另一个团队的基于 WSDL 的 WCF 服务。不是我的定义,无法控制...我通过此服务接收来自其他团队的消息。在我的例子中,我收到消息,可以将消息记录到数据库中的消息日志 table(这发生在我的服务方法被调用之前),服务方法似乎被调用(也许不是),并且服务器响应 202 已接受。通信正常,但在方法调用期间没有数据保存到数据库。
由于服务 returns 成功响应,我排除了与 http 和 t运行sport 相关的问题。
所以我启动了 VS2015 来调试服务。有问题的消息很大,但完全在我期望的范围内。我在服务方法的第一行放置了一个断点并通过发送大消息,但断点从未命中。我尝试了一个较小的消息,我知道它在同一个 运行 实例上工作并且断点被击中了。所以配置中的一切似乎都很好。我想也许消息大小有问题。
我尝试了我能找到的一切 - 确保我在调试配置中,清理并重建,手动将调试器附加到 w3wp 进程(VS 已经是),使用 Debugger.Break()
而不是断点,设置多个启动项目,卸载我的测试项目,使服务项目成为唯一的项目,更新 .NET,重新启动 VS2015,重新启动,从本地 IIS 切换到 IIS Express 并返回,使用 gua运行 重新创建服务开球最新的 WSDL。
什么都不重要。从未命中断点。
我最终不得不一条一条地清除大消息中的记录,直到找到一条包含错误数据的记录。在我的例子中,这是一条对 2 个 DateTime 字段没有值的记录。当我创建一条只有这条记录的消息并发送它时,断点没有被击中。当我为这 2 个 DateTime 字段提供值并在断点中按预期发送相同的(固定的)消息时。
我启用了每一个 CLR 异常,除了丢失的 .pbd 文件外没有触发任何东西,我不关心这些。 WCF 愉快地发送了带有错误记录的请求。我并不是说 WCF 不应该根据合同发送它,只是坏记录导致断点没有被击中。
我不得不修改 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"/>
在尝试任何其他解决方案之前,清理 整个解决方案。在尝试了之前答案中提到的几乎所有其他内容并重新启动 visual studio 几次之后,只需清理解决方案就可以了!
我尝试了此处建议的所有方法。最后,我将项目属性 -> Web 中的 "Specific Page" 设置为我的本地开始 URL、页面和查询参数。在调试模式下进行了清理和重建,它击中了我的断点。
虽然这是一个晚得多的版本 (VS2017),但我在 C# 项目中遇到了这个问题。已尝试清理、重建、重新启动 visual studio 等
解决它的方法是关闭 Visual Studio 并删除 .vs 文件夹,这是位于解决方案目录中的隐藏文件夹。删除 .vs 文件夹应该不会给您带来任何问题,但您需要重置您的启动项目。
Change Release mode to Debug, In my case, this fixed my problem.
就我而言,在我使用 Profiler
后创建了一个新的 web.config 文件。将 web.config 恢复到以前的版本,解决了这个问题。这是一个 VS2015 C# web 应用程序。
如果您要发布 Web 应用程序,请检查 Configuration
是否设置为 Debug
(默认情况下,在调试配置中设置为不优化代码和符号 table已完全创建)。
我知道这是一个旧的 post 但如果上面的所有其他技巧对您不起作用,请确保您尝试调试的图像是最新的。出于某种原因,在将 .NET Core 项目发布并传输到我在 RPi 上的 Raspberry Pi 'unzip' 后,没有复制和覆盖工作目录中的某些 DLL。当我附加调试器时认为一切正常,一些断点被击中,其他断点没有,还有一些给我 "can't bind" 错误。一旦我解决了解压缩问题,我所有的断点和符号都回来了。希望对您有所帮助。
我刚从 Visual Studio 2013 升级到 2015,现在遇到断点问题。
断点实际起作用是一个成功或失败的问题,如果我在调试时设置一个断点,我会收到错误消息:
The breakpoint failed to bind.
如有任何帮助,我们将不胜感激。我准备放弃2015回去
我遇到了这个问题。我 运行 一个性能分析会话,它使用性能监视器的设置修改了 Web.config
文件:
<appSettings>
<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio19\Community\Team Tools\Performance Tools\vsinstr.exe"/>
</appSettings>
<compilation debug="true" targetFramework="4.5"
assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
...
</compilation>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<codeBase version="16.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="VsWebSite.Interop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<codeBase version="8.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/VsWebSite.Interop.DLL"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
这打破了我在断点处停止的能力。当我恢复到原来的 Web.config(删除 Performance Profiler 设置)时,断点又开始工作了。
这可能看起来微不足道,但在对与您提到的相同问题进行了大量的思考之后,我发现当我尝试调试时我的构建被设置为 "release" 而不是 "debug"。 . 重新构建 "debug" 的解决方案修复了它,我可以正常设置断点
我遇到了类似的问题,断点无法绑定,某些局部变量未在 Locals window 中求值。最终修复它的是在 Options->Debug->General 选项卡中启用 "Suppress JIT optimization on module load (Managed only)" 选项。一旦我设置它能够毫无问题地绑定。
我遇到了同样的问题
我解决了它禁用项目属性构建选项卡中的 "Optimize code" 选项。
我昨天遇到了同样的问题。我使用了 "Clean Solution" 功能,它很有帮助。
我 运行 在我的解决方案上的表现,并将其添加到我的 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
是问题所在,我将其删除并解决了我的问题
我遇到了同样的问题,但解决方案不同。 请注意,我已更新到 VS 2015 Update 1,但问题仍然存在。
在以前版本的 VS 中,启动调试会自动触发调试模式下的构建。但在 VS2015 中却没有。
因此,如果您的最后一个版本处于发布模式,并且您尝试调试,断点将不起作用。
您必须先在调试模式下手动构建,然后再开始调试。
今天遇到绑定断点错误。我已经解决了下面的问题。
如果您的所有调试配置都不正确,则无法通过以下方式解决问题。
- 清理项目
- 如果输出路径与bin文件夹不同,则替换为bin文件夹(这是最重要的规则)
- 重建
也许这个解决方案对某人有帮助。
解决方案是禁用设计优化。
Project Properties> Build> Advanced Compile Options> Enable Optimizations
我没有更改 'optimize' 设置,但根据此处的其他答案,我
- 将解决方案资源管理器设置为显示项目的所有文件
- 删除了隐藏的 bin 和调试文件夹
- 对项目进行了 'Clean'
- 在项目上执行 'Rebuild'
到目前为止,这已经为我解决了。似乎更新到 VS2015 Update 2 使我的系统出现了一些问题。
我也遇到了同样的问题,但是没有意识到调试工具栏(通常在菜单下)上的"Debug"已经变成了"Release"。所以我将它设置为 "Debug" 它起作用了。
VS 断点无法绑定到异步方法。
我安装了一个 App Dynamics 代理导致了这个问题。删除它,你就可以开始了。
我查看了之前的答案,@Will 的
然后我最终删除了旧的调试属性并添加了我从另一个项目中获取的以下内容
#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
但我觉得这不是最好的方法。
新的 Update for Microsoft Visual Studio 2015 Update 3 (KB3165756) 为我修复了断点问题,我试图检查 ASP.NET 核心应用程序中 cshtml 文件中嵌入的 C# 代码中的局部变量。
第 1 步,排除显而易见的问题:
- 在调试模式下编译。
- 尝试在设置断点之前清理解决方案。
- 转到 Debug 文件夹,然后删除 [您的应用程序].pdb 文件。
- 然后构建或重建您的应用程序。
- 转到 Debug 文件夹并确认您有一个全新的 [Your 应用程序].pdb 文件.
- 然后尝试设置断点。
步骤 2 对于 C++ 项目:
检查以下项目属性:
- C++/General/Debug信息格式:程序数据库。
- C++/优化:禁用。
- C++/代码generation/Runtime库:多线程调试。
- Linker/Debugging/Generate调试信息:是。
- Linker/Debugging/Generate节目资料库: $(TargetDir)$(TargetName).pdb.
- Linker/Manifest File/Generate 清单:没有.
- Linker/Manifest File/Allow隔离:无
- Linker/Embedded IDL/Ignore 嵌入式 IDL:是。
再次执行步骤 1
您可以尝试添加 __debugbreak()。此语句需要放在您要中断的源文件中。
步骤 2 对于 C# 项目:
- 在项目属性中 Build/General/Optimize 代码应该是 禁用。
- 在IDE设置中Debug/Options和Settings/Debugging/General抑制JIT 模块加载优化(仅限托管):已启用
- 再次执行步骤 1
尝试在另一台机器上打开您的解决方案。如果您可以在另一台机器上绑定断点,这可能意味着您的 VS 或 OS.
存在问题第 3 步,确保您的 VS 是最新的:
在 VS2013 RTM 以及 VS2015 Update 1 和 Update2 中有类似问题的报告。
在 VS 中转到 Tools/Extensions & Updates/Updates/Product 更新并查看您的版本 运行。如果需要更新,它将出现在那里。
第 4 步,确保您的 OS 是最新的:
最后,如果您的 运行 是 Win 10 OS,则在 build 14251 中存在关于此问题的错误报告。此问题已在 build 14257(及更高版本)中解决。
我刚刚 运行 遇到了类似的问题,这里 none 的答案正好解决了我面临的问题。但是,与问题不同的是,我从未收到任何消息说绑定失败。断点永远不会命中。希望这对将来用 WCF 撞墙的人有所帮助。
TL/DR:
在 SOAP 消息中有一条包含错误数据的记录导致断点未命中。
全文:
我有一个来自另一个团队的基于 WSDL 的 WCF 服务。不是我的定义,无法控制...我通过此服务接收来自其他团队的消息。在我的例子中,我收到消息,可以将消息记录到数据库中的消息日志 table(这发生在我的服务方法被调用之前),服务方法似乎被调用(也许不是),并且服务器响应 202 已接受。通信正常,但在方法调用期间没有数据保存到数据库。
由于服务 returns 成功响应,我排除了与 http 和 t运行sport 相关的问题。
所以我启动了 VS2015 来调试服务。有问题的消息很大,但完全在我期望的范围内。我在服务方法的第一行放置了一个断点并通过发送大消息,但断点从未命中。我尝试了一个较小的消息,我知道它在同一个 运行 实例上工作并且断点被击中了。所以配置中的一切似乎都很好。我想也许消息大小有问题。
我尝试了我能找到的一切 - 确保我在调试配置中,清理并重建,手动将调试器附加到 w3wp 进程(VS 已经是),使用 Debugger.Break()
而不是断点,设置多个启动项目,卸载我的测试项目,使服务项目成为唯一的项目,更新 .NET,重新启动 VS2015,重新启动,从本地 IIS 切换到 IIS Express 并返回,使用 gua运行 重新创建服务开球最新的 WSDL。
什么都不重要。从未命中断点。
我最终不得不一条一条地清除大消息中的记录,直到找到一条包含错误数据的记录。在我的例子中,这是一条对 2 个 DateTime 字段没有值的记录。当我创建一条只有这条记录的消息并发送它时,断点没有被击中。当我为这 2 个 DateTime 字段提供值并在断点中按预期发送相同的(固定的)消息时。
我启用了每一个 CLR 异常,除了丢失的 .pbd 文件外没有触发任何东西,我不关心这些。 WCF 愉快地发送了带有错误记录的请求。我并不是说 WCF 不应该根据合同发送它,只是坏记录导致断点没有被击中。
我不得不修改 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"/>
清理 整个解决方案。在尝试了之前答案中提到的几乎所有其他内容并重新启动 visual studio 几次之后,只需清理解决方案就可以了!
我尝试了此处建议的所有方法。最后,我将项目属性 -> Web 中的 "Specific Page" 设置为我的本地开始 URL、页面和查询参数。在调试模式下进行了清理和重建,它击中了我的断点。
虽然这是一个晚得多的版本 (VS2017),但我在 C# 项目中遇到了这个问题。已尝试清理、重建、重新启动 visual studio 等
解决它的方法是关闭 Visual Studio 并删除 .vs 文件夹,这是位于解决方案目录中的隐藏文件夹。删除 .vs 文件夹应该不会给您带来任何问题,但您需要重置您的启动项目。
Change Release mode to Debug, In my case, this fixed my problem.
就我而言,在我使用 Profiler
后创建了一个新的 web.config 文件。将 web.config 恢复到以前的版本,解决了这个问题。这是一个 VS2015 C# web 应用程序。
如果您要发布 Web 应用程序,请检查 Configuration
是否设置为 Debug
(默认情况下,在调试配置中设置为不优化代码和符号 table已完全创建)。
我知道这是一个旧的 post 但如果上面的所有其他技巧对您不起作用,请确保您尝试调试的图像是最新的。出于某种原因,在将 .NET Core 项目发布并传输到我在 RPi 上的 Raspberry Pi 'unzip' 后,没有复制和覆盖工作目录中的某些 DLL。当我附加调试器时认为一切正常,一些断点被击中,其他断点没有,还有一些给我 "can't bind" 错误。一旦我解决了解压缩问题,我所有的断点和符号都回来了。希望对您有所帮助。