升级到 Visual Studio 2015 现在无法在调试中打断点

Posted

技术标签:

【中文标题】升级到 Visual Studio 2015 现在无法在调试中打断点【英文标题】:Upgrade to Visual Studio 2015 and now can't hit break points in debugging 【发布时间】:2015-10-17 02:33:05 【问题描述】:

我有一个在 Visual Studio 2013 中构建的多项目解决方案,它工作正常,但现在我已升级到 Visual Studio 2015,我无法再在除主项目之外的任何项目的调试模式下打断点在项目属性页面中选择为启动项目。我以前可以单击其他项目,然后选择 Debug -> Start New Instance。我收到了错误 The breakpoint will not currently be hit. No symbols have been loaded for this document. 我已经尝试了很多在 Google 上找到的东西,包括:

清理/重建 从项目中删除 OBJ 和 BIN 文件夹 VS 修复了吗 重新启动 已卸载/重新安装 已确认已为 Properties -> Build 启用定义 DEBUG 约束 已确认优化代码未选中属性 -> 构建 确认属性 -> 构建 => 平台目标设置为所有项目的任何 CPU 尝试使用“以管理员身份运行”运行 VS 已删除 /AppData/Local/Temp/Temporary ASP.Net Files/ 中的所有文件 确保调试 -> 攻击进程 -> 选择“自动确定要调试的代码类型” 确保 Properties -> Web -> Debuggerts 已选中 ASP.Net(我的属性已选中 ASP.NEt 和 Enable Edit and Continue,Natvie Code SQL Server 和 Silverlight 未选中) 在属性中确认目标框架 -> 应用程序设置为与 Web.Config/App.Config 文件中相同的版本 (4.6)。

那么我在这里错过了什么?为什么我不能再调试其他项目?

【问题讨论】:

如果您进行更改并运行应用程序,您会在网站上看到这些更改吗?通常,当您无法调试时,这意味着您运行的代码与您在可视化中打开的代码不同。我会假设某处的路径设置不正确。 你试过这些,去工具 -> 选项 -> 调试 -> 常规 取消选中带有文本“要求源文件与原始版本完全匹配”的复选框。要选择 Build,然后选择 Configuration Manager 以选择每个项目的配置。 this link 用于 winforms 但可能会有所帮助。 @EJD 我刚刚在控制器中添加了一行新代码,并在视图中打印出来。我在该新行上设置了一个调试点。断点仍然给出相同的错误,并且新代码被触发并显示在视图中(我只是用测试字符串填充了一个新的 ViewBag 变量)。 @learningNew 我禁用了该选项并遇到了同样的问题。 我知道它已经到了断点,但网页上显示的文本是否发生了变化?如果文本保持不变,那么您在浏览器中看到的不是最新代码。如果文本发生了变化,那么我们至少排除了一些可能性。 【参考方案1】:

我在创建新的构建配置时遇到了类似的问题。在 VS2015 中搜索设置后,我注意到我的构建输出中没有 *.pdb 文件。显然,如果有 *.pdb 文件,调试将无法进行。

我的解决方法是进入每个项目的属性->“构建”页面->单击页面底部的“高级”按钮->在对话框的“输出”部分中,我设置了“调试信息”等于“满”。

基本上,我创建了一个新的解决方案和项目,并将所有构建属性复制到调试器不再在断点处停止的解决方案中。除了上述设置,我还更改了以下设置以匹配默认调试设置:

我在同一个高级页面上将“Internal Compiler Error Reporting”设置为“prompt” 在“构建”主页面中,我检查了“常规”部分的“定义调试常量”和“定义跟踪常量”

【讨论】:

【参考方案2】:

我在检查选项->调试->常规->抑制模块加载时的 jit 优化时解决了这个问题。在我这样做之前,我还取消选中了工具->选项“项目和解决方案”“构建和运行”“仅构建启动项目和运行时的依赖项”。不知道这是否有任何理由在取消选中抑制 jit 后起作用。

【讨论】:

我的 C++/CLI 项目在 Visual Studio 2017 中遇到了同样的问题。该项目已从 VS 2013 => VS 2015 和 VS 2017 升级。 这对我有用,但是当我进行代码更改时,它又回到跳过我的断点。我尝试取消检查并再次检查无济于事。 我已经检查了第一个选项(来自另一个我无法调试的情况)。由于某种原因,还需要取消选中第二个选项并为我修复它。 在 Visual Studio 2019 中修复了同样的问题。我取消选中“仅构建启动项目...”,然后选中“抑制 jit...”并修复它。然后我回去把两张支票都倒过来,让它恢复原状,它仍然有效!很奇怪。【参考方案3】:

我的情况是我在项目属性中启用了“优化代码”。

【讨论】:

这件事无意间发生在我身上。我有多个解决方案配置,在其中一个配置下,测试项目被配置为“发布”。更改为“调试”解决了这个问题。【参考方案4】:

如果你只在启动项目中打断点:

工具 > 选项 > 项目和解决方案 > 构建和运行 取消选中仅在 Run 上构建启动项目和依赖项

这里是德语:

【讨论】:

在VS2015英文版中是Tools->Options "Projects and Solutions" "Build and Run" "Only build startup projects and dependencies on run"【参考方案5】:

以管理员身份运行 VS 命令提示符,就像运行命令一样:devenv /setup 为我解决了这个问题。

【讨论】:

【参考方案6】:

我从来不知道发生了什么,但我最终构建了一个全新的项目并将文件导入其中,现在一切正常。

【讨论】:

Visual Studio 2015 疯狂 确保如果您的解决方案中有多个项目 - 您要调试的项目设置为启动项目。【参考方案7】:

这让我发疯了,直到我意识到在另一个解决方案中我设置为发布配置,将其更改回调试工作。

这可能不是您的特定答案,但我想我会分享它“以防万一”其他人被明显的事情分心!

【讨论】:

【参考方案8】:

从旧系统迁移到新系统后,调试器没有为我的 ASP 应用程序设置断点。我忘记在 IIS 中配置调试。

配置 IIS 以进行调试:

网站 > 我的网站 IIS > ASP > 调试属性 将启用客户端调试设置为True启用服务器端调试设置为True

【讨论】:

【参考方案9】:

就我而言,我只是更改了运行模式的设置。

之前,我使用“发布”运行模式:

现在,我正在使用“调试”运行模式:

【讨论】:

【参考方案10】:

我刚刚为我们的一位前端开发人员解决了这个问题。它可能适用于您,也可能不适用于您。我们使用 IIS Express 进行本地调试,但不知何故,他在调试时已经脱离了正确的进程。

为了修复,我根据 IIS Express 检查了它附加到的进程 ID(右键单击任务栏上的 IIS 图标,选择显示所有应用程序,检查为应用程序列出的 PID)。然后我将它附加到正确的进程(在 VS 中运行解决方案,单击工具栏上的调试,选择附加到进程,使用上面从 IIS Express 获得的 PID 找到正确的进程)。希望这对某人有所帮助。

【讨论】:

【参考方案11】:

我无法让它与上述方法一起工作,最后回滚到 VS 2013 以获得运行良好的解决方案。 VS2015 从稳定鲁棒的 VS2003 迁移过来后,感觉很像 VS2005,这非常令人沮丧。

我希望 2017 年能够解决这些不一致的问题。

【讨论】:

----- 更新 ----- 这仅适用于使用 Telerik OpenAccess 或 DataAccess 的人。如果项目中包含该内容,则高于 VS2013 的任何内容都将使用 rlinq 数据文件删除适用项目中的 pdb。这对于那些使用 Telerik 设计器的人来说只是一个问题,因为他们不会更新他们的设计器 - 它会删除该文件,终止编辑并继续。如果您使用较新版本的 DataAccess,它会修复它,但会破坏使用设计器的能力。【参考方案12】:

您可以保持原样,只需注意以下事项:

高级编译器设置 -> 生成调试信息 -> 必须是“pdb-only”或“full” 高级编译器设置 -> 启用优化 -> 需要取消选中

【讨论】:

【参考方案13】:

我也遇到过这个问题,但在 Visual Studio 2015 Update 1 之后,它现在已修复。

https://www.visualstudio.com/en-us/news/vs2015-update1-vs.aspx

【讨论】:

【参考方案14】:

重新启动 Visual Studio 对我有用。

【讨论】:

【参考方案15】:

我希望这对任何人都有帮助。如果您在 IIS 下的本地计算机上运行代码,则需要将您的解决方案附加到 w3wp.exe 进程。因此,选择您的项目,在菜单上转到 debug->attach to process 并在列表中看到 w3wp.exe

现在,如果您没有看到 w3wp.exe,您可以选择显示所有进程复选框,或者转到 IIS 管理器并浏览您的网站以实际运行 w3wp.exe 实例。

【讨论】:

【参考方案16】:

在我的情况下,我无法调试,因为在分析文件历史记录而不是解决方案中的实际文件时,我在源代码管理临时文件中设置了断点。

【讨论】:

【参考方案17】:

我的项目是一个 MVC Web 应用程序,当我使用调试器运行项目时,浏览器中打开了一个新选项卡,它将我重定向到登录页面。但是在另一个选项卡中,我已经登录了可以做任何事情的用户,但它没有达到断点,即使我很难刷新页面。每次我关闭重定向到登录页面的新打开的选项卡时。有一次,我用登录用户关闭了旧选项卡,并在新打开的选项卡中再次实际登录到应用程序。然后它开始打断点。

【讨论】:

【参考方案18】:

卸载postsharp nuget解决了我的问题,在这篇文章https://doc.postsharp.net/uninstalling中有解释

【讨论】:

以上是关于升级到 Visual Studio 2015 现在无法在调试中打断点的主要内容,如果未能解决你的问题,请参考以下文章

断点无法绑定 - Visual Studio 2015

visual studio 2015怎样升级

将 cordova 项目升级到 Visual Studio 2015 后,Ripple 找不到 config.xml

错误 CS0012:“ConnectionStringSettings”类型是在升级到 Visual Studio 2015 后未引用的程序集中定义的

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015

从 Visual Studio 2017 RC 降级到 Visual Studio 2015 的解决方案