问题标签 [edit-and-continue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 编辑并继续中断正在运行的调试实例
我正在开发一个使用第三方库的项目,这似乎给我带来了一些麻烦。
该项目是一个使用 MonoGame 和 FarseerPhysics 的游戏。
导致问题的代码(下面的github):
我放了一个断点Color drawColor = Color.White * 0.4f;
并将浮点值更改为其他值。当我继续创建 NullReferenceException 时BoundingShape.ComputeAABB(...)
。它还显示了 2 个称为 BoundingShape 的属性和 2 个字段 _shape(这是 BoundingShape 的支持字段)。
这是我的错还是我可以解决的问题?
这是一个截图。注意本地人的观点,BoundingShape 已经被复制了。此外,Entity(包含正在编辑的代码的类)是抽象的,Level 完全实现了抽象类。
奇怪的部分:
它必须与 out 和 ref 参数有关,因为如果我在数组中返回 LowerBound 和 UpperBound 则它可以工作,但如果我返回 AABB 实例则它会失败。
我尝试过的事情:
直接使用 BoundingShape 的 backing 字段(没有结果,backing 字段也是重复的,见截图)
将边界框代码放在它自己的方法中(没有结果,仅在将返回类型更改为数组时)。
不在 foreach 循环中更改代码
Microsoft.Xna.Framework.Game.SortingFilteringCollection.ForEachFilteredItem(System.Action action, Microsoft.Xna.Framework.GameTime userData)
除了我有的解决方法;是否有一些视觉工作室设置导致了这种情况?
感谢您阅读我的问题
visual-studio - 如何确保不忽略 /EDITANDCONTINUE 指令
当我尝试编辑并继续时收到此消息VSC15
:
我已经确保/INCREMENTAL
已启用但无法弄清楚第二部分。
编译器命令行:
链接器命令行:
c# - 有没有办法从被调试的程序中检测是否使用了调试器?
我在我的程序中进行了内部一致性检查,以验证相同代码的两次运行、相同的输入是否给出相同的结果。这个想法是在开发过程中检测下落不明的输入。如果检查失败,它会进入调试器。
这一切都很好而且很花哨,直到调试器中的一些其他操作——尤其是编辑并继续——在执行过程中修改了一次运行。我想检测到这一点并禁用一致性检查。
显然,因为检查本身需要调试器,所以我不能做一些简单的事情,比如 check Debugger.IsAttached
。
c++ - 在 VS2015 Update 3 (x64) 中编辑并继续不起作用
在安装了 Vs2015 更新 3 的噩梦之后,根据这个相关问题,我重建了我的 MFC C++ 项目,以查看更新是如何执行的,只是发现 Edit and Continue 不再有效!具体来说,对任何文件进行任何更改并使用调试/应用代码更改我得到以下内容;
myfile.CPP ......\common\myfile.CPP(1): 致命错误 C1010: 查找预编译头文件时意外结束。您是否忘记将 '#include "\cpp\common\stdafx.h"' 添加到您的源代码中?项目:错误(空):发生构建错误。
源文件中的第一个包含是
这在更新 2 下大部分时间都有效,但编辑和继续失败并定期报告它已合理地成功。我安装此更新的唯一原因是它应该解决此问题,但现在它已完全损坏,我正在考虑完全卸载,并在周末重新安装 VS2015 更新 2。
其他人遇到这个问题并有解决方案吗?可能是一个狡猾的安装,因为即使在完整的 ISO 安装中,安装程序也因丢失文件而失败,我不得不跳过两个部分。鉴于这是一个版本而不是候选版本,QA 似乎很糟糕,我不明白为什么发布版本会包含任何 beta 功能。VS2015详情如下;
Microsoft Visual Studio Professional 2015 版本 14.0.25421.03 更新 3 Microsoft .NET Framework 版本 4.6.01055
安装版本:专业
适用于 Visual Studio 2015 的 LightSwitch 00325-60000-80195-AA437 适用于 Visual Studio 2015 的 Microsoft LightSwitch
Visual Basic 2015 00325-60000-80195-AA437 Microsoft Visual Basic 2015
Visual C# 2015 00325-60000-80195-AA437 Microsoft Visual C# 2015
视觉 C++ 2015 00325-60000-80195-AA437 微软视觉 C++ 2015
适用于 Visual Studio 的 Application Insights 工具包 7.0.20622.1 适用于 Visual Studio 的 Application Insights 工具
ASP.NET 和 Web 工具 2015.1 (Beta8) 14.1.11106.0 ASP.NET 和 Web 工具 2015.1 (Beta8)
ASP.NET Web 框架和工具 2012.2 4.1.41102.0 有关更多信息,请访问http://go.microsoft.com/fwlink/?LinkID=309563
ASP.NET Web 框架和工具 2013 5.2.40314.0 有关更多信息,请访问http://www.asp.net/
公共 Azure 工具 1.8 提供供 Azure 移动服务和 Microsoft Azure 工具使用的公共服务。
InstallShield 限量版 InstallShield。如需更多信息,请访问 Flexera Software 网站 http://www.FlexeraSoftware.com。版权所有 © 2015 Flexera Software LLC。版权所有。
JavaScript 语言服务 2.0 JavaScript 语言服务
JavaScript 项目系统 2.0 JavaScript 项目系统
Microsoft Azure 移动服务工具 1.4 Microsoft Azure 移动服务工具
PreEmptive Analytics Visualizer 1.2 Microsoft Visual Studio 扩展,用于可视化来自 PreEmptive Analytics 产品的聚合摘要。
SQL Server 数据工具 14.0.60519.0 Microsoft SQL Server 数据工具
TypeScript 1.8.34.0 用于 Visual Studio 的 TypeScript 工具
Visual Assist 有关 Visual Assist 的更多信息,请访问 Whole Tomato Software 网站,网址为http://www.WholeTomato.com。版权所有 (c) 1997-2016 Whole Tomato Software, Inc.
Visual Commander 2.3 有关 Visual Commander 的更多信息,请参阅网站https://vlasovstudio.com/visual-commander/。版权所有 (c) 2013-2015 Vlasov Studio。
适用于通用 Windows 应用程序的 Visual Studio 工具 14.0.25420.01 适用于通用 Windows 应用程序的 Visual Studio 工具允许您构建单一的通用应用程序体验,该体验可以覆盖所有运行 Windows 10 的设备:手机、平板电脑、PC 等。它包括 Microsoft Windows 10 软件开发工具包。
(对于这个问题的粗鲁性质表示歉意,但我也将其作为对那些考虑安装此更新的人的警告)
visual-studio-2012 - 在 Visual Studio 2012 Express 中编辑和继续时出现过时代码警告
在我的大多数项目中,在调试模式下,如果我看到一个小错误,我可以在调试期间编辑代码,选择应用代码更改,然后继续。
这通常适用于大多数微小的变化。如果更改过于广泛,则会显示模块内存空间不足,或者如果更改修改了 try-catch 块,则会破坏堆栈展开,因此这些特殊情况需要重建并重新启动。但几乎任何其他东西都可以编辑和继续。
但是对于这个项目,每一个微小的变化,无论多么微不足道,我都会收到一条消息“源文件与构建模块时不同。你是否希望调试器仍然使用它。” 如果我选择是,那么我会收到一个警告,说我将要使用过时的代码。
为什么这个项目无法更新源代码以与编辑保持同步并继续更改?我是否无意中在项目设置中搞砸了?
更新
我已经尝试了这里提出的所有解决方案,但没有运气。这显然是一个常见的问题,因为关于这个主题的 SO 上和下有很多帖子。但是看起来没有人有一个可靠的解决方案,显然 VS Edit and Continue 是相当有气质的。
打开 VS 的第二个实例并加载我知道编辑和继续工作的先前项目。我重新验证它确实有效。然后我将项目属性并排放置并验证每个开关和设置完全相同。然后我将 VS 选项和设置并排放置,并验证每个设置完全相同。然而,在一个项目中编辑并继续工作,而不是在另一个项目中。
visual-studio - 编辑并继续仅在使用“启动外部程序”而不是附加到进程时有效
我在 C# 中有一个使用 Visual Studio 2010/2015 的 .NET 4.0 的 Excel-DNA 项目。
如果我启动调试并使用“启动外部程序”功能启动 EXCEL.exe,我可以暂停调试器,编辑并继续工作得很好。
但是,如果我尝试附加到正在运行的 EXCEL.exe 进程,我会收到一条错误消息,指出由于各种原因之一不支持编辑并继续。选择附加到进程时,我只选择了“托管(v4.6、v4.5、v4.0)”。
错误消息指出:
这两种情况有什么区别?“启动外部程序”与手动附加有什么不同?
visual-studio-2012 - Visual Studio 2012 编辑并继续不使用动态
我正在使用 Visual Studio 2012。
在我的 C# 项目中,我使用了一个类型化的 DataTable 类,它在一些方法实现中使用了 dynamic 关键字(Handcrafted Strongly Typed ADO.net DataTable - Can it be clean?)。
调试时,我无法使用编辑和继续功能。我得到错误:
我已经阅读了其他类似的线程,其中提到在所有引用的程序集中将 EmbedInteropTypes 设置为 false。但就我而言,它们已经设置为 false。我在网上也发现了 VS2010 报告的这个问题;从 VS2012 开始还没有修复吗?
visual-studio - 编辑并继续不起作用
我正在尝试让托管编辑并继续工作(在 Visual Studio 2015 v14.0.25425.01 更新 3 中),它给了我一个可怕的对话框,“在以下情况下不允许更改: ”
附加到不支持“附加时编辑并继续”的进程。
- 我在 Windows 10.0.10586、x64 上使用 IISExpress v10.0.14358.1000。
- 我在工具->选项中选中了“为网站和项目使用 64 位版本的 IIS express”。(虽然,我在 32 位 iisexpress 上也遇到了同样的错误)
- 我所有的代码都编译为“任何 CPU”
被调试的代码已经优化
- 不,所有代码都是使用 DEBUG 常量集构建的,没有优化。
正在调试的程序集作为域中性加载
- 不,我用 Process Explorer 检查过,程序集没有加载 DomainNeutral。
正在调试的程序集是通过反射加载的。
- 对此不确定,但它是一个常规的 ASP.NET MVC 5 应用程序。
Intellitrace 事件和呼叫信息已启用。
- 不,在 Tools->Options->Intellitrace 中禁用了 Intellitrace。
运行此程序的 .NET 运行时不支持编辑和继续。
- 没有把握。它是针对“.NET Framework 4.6.1”构建的,第一个符号加载是“'iisexpress.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\ v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'"
其他一些事情:
- 在“Web”项目设置中,“ASP.NET”和“启用编辑并继续”复选框均已设置(其他均未设置)。
- 我在调试器设置中启用了“编辑并继续”。
- 我在调试器设置中禁用了兼容模式。
- 我尝试删除我的 .suo 文件和 .vs 目录,清理我的临时目录,进行完全重建
我还能尝试什么?
PS。如果 VS 调试器团队中的任何人正在阅读本文,我能帮个忙吗?请终止此对话框并将其替换为指示问题实际原因的内容。你有调试器和解决方案,你可以确定是哪一个导致了问题,你可以有一个按钮,只需单击一下即可修复问题。
c# - 仅在“编辑并继续”中出现错误 CS7038(未能发出模块)
我正在 Visual Studio 2015 中调试 .NET 4.0 应用程序。我的应用程序构建并运行良好,但是当我尝试在调试器下运行时编辑并继续时,无论我进行了哪些更改或在我的主项目中进行了哪些更改,我得到一个对话框,上面写着:
进行了无法编译的编辑。在修复编译器错误之前无法继续执行。
作为我正在谈论的那种变化的一个例子,我尝试以各种方法添加这一行:
当我查看 Visual Studio 的错误列表窗格时,我只看到一个错误 CS7038,其描述为“无法发出模块' <my app name>
'”。没有给出文件名、行号或字符。我的代码中没有波浪形的红色下划线。如果我停止正在运行的应用程序,使用更改进行构建,然后再次运行,一切都会构建并运行得很好。因此,构建时编译器和编辑并继续编译器认为可接受的内容之间似乎存在一些差异。
有谁知道如何获取有关为什么在编辑并继续模式下编译失败的更多信息?我阅读了一些关于附加和调试 VBCSCompiler 进程的内容,所以我尝试了这一点,但即使所有异常类型都设置为在抛出时中断,附加的 VS 也从未中断。
我没有分享任何代码,因为这不是关于我的代码的问题,而是关于找出 Edit and Continue 编译器认为错误的策略的问题,据我所知,编译器错误的来源可能在我的任何地方整个项目。
编辑:
如评论中所述,我能够将调试器附加到 Visual Studio 并在编辑代码后单击“继续”时引发异常时中断。异常是System.NotSupportedException
带有以下消息的:“在调试期间不允许更改程序集引用的版本”。它列出了相关程序集的名称,这是我的应用程序使用的一个小型 VB.Net 项目,主要使用 C#。我正在尝试构建一个 MCVE 以提交给 Microsoft,但目前我无法在只有一个 VB 和一个 C# 项目的较小解决方案中重现该问题。
编辑2:
我找到了一种解决方法并自行回答了这个问题,以防其他人遇到这个奇怪的问题,但我为任何可以解释发生了什么的人保留了“已回答”复选标记(为什么编译器认为版本号引用的项目在编辑过程中发生了变化)。