在调试模式下编辑Visual Studio 2008的代码

14
我想知道在C# VS 2008中,在程序运行到断点时,是否有一种方法可以直接编辑代码。例如,我能否修改变量的值或者当我的逐步执行线要到达if语句时,能否修改if语句等等?
到目前为止,我需要停止VS的运行,修改代码,然后按F5等待断点再次被触发。
当断点触发且程序正在运行时,当我试图编辑代码时,会收到消息“当调试器已附加到已经在运行的进程时,不允许进行更改,或者被调试的代码在编译或运行时进行了优化。”

我正在使用C#。我尝试了一下,但是收到了一条消息,上面写着“当调试器已连接到已经运行的进程或者被调试的代码在构建或运行时进行了优化时,不允许更改。” - user279521
是的,切换到调试版本。在我按下F5之前,它处于调试版本。当我按下F5并且断点被触发时,“构建”下拉菜单会变灰。 - user279521
您不需要(也不能)使用 E&C 进行重建。您的更改将自动应用。 - SLaks
“您不需要(也无法)使用 E&C 进行重建。您所做的更改将自动应用。” 的意思是什么? - user279521
他的意思是,如果你继续执行(无论是逐步执行还是按F5键),那么你所做的更改将被应用。请注意,这仅适用于32位版本,而不是64位版本。 - Erik Funkenbusch
7个回答

6

我所知道的只有几个原因导致在Debug模式下编辑和继续功能被禁用。首要原因是64位操作系统,E+C仅适用于32位代码。通过Project + Properties,Build标签,Platform Target = x86修复此问题。

这也可能是一个已经关闭的选项。在工具+选项,调试,编辑和继续,启用复选框。

如果这没能帮助到您,请告诉我们更多关于您正在调试的代码类型、开始项目时选择的项目模板、如何让调试器中断以及从呼叫堆栈窗口复制的堆栈跟踪信息。


目标平台是“任何 CPU”。我改成了 x86,但 E&C 仍然无法工作。 在“工具+选项”中的调试设置中,E&C 复选框已启用。 - user279521
我正在调试代码后端的C#代码。项目模板为WebForm.aspx。我设置了断点以使调试器中断。如何获取堆栈跟踪副本? - user279521
2
@user,请阅读此文:http://whyiamright.wordpress.com/2007/12/20/aspnet-edit-and-continue-in-visual-studio-2005/ - Hans Passant
1
哇!!“Web”选项卡中的第二个设置起了作用。E&C被禁用了。您最初的回复说是“构建”选项卡。无论如何,谢谢HANS!! - user279521

4

是的,你可以。
这被称为编辑和继续
请注意它有一些限制

编辑:你需要切换到调试版本。


我该如何使用“编辑并继续”功能? - user279521
进入调试器(触发断点或按下暂停按钮),然后编辑代码,最后使用播放按钮或F5(或F10或F11,具体取决于您正在做什么)继续 - Paolo

1

在断点模式下修改变量的值或设置属性,请转到立即窗口,设置新值,然后按回车键,例如:

strValue = "newValue"
Calendar1.Enabled = true

要检索一个值,你可以直接将它打印到窗口中。

?strValue
?Calendar1.Enabled

1
  1. 停止运行您的应用程序。
  2. 转到“工具”>“选项”>“调试”>“编辑和继续”。
  3. 禁用“启用编辑和继续”。

0

针对这个问题的回答:

我能修改代码(例如变量中的值或者我的单步调试行即将触发if语句时...我能修改if语句等等)吗?

你不能直接将一个新值弹入变量中,但你可以这样做:

  1. 设置断点
  2. 当断点被触发时,点击左边缘的箭头并将其拖到前一行
  3. 现在你可以添加代码来改变情况(例如,你可以将一个变量设置为一个新值,添加/删除集合中的项目等等)

请参见其他关于启用“编辑和继续”的答案--特别是确保你处于调试模式。


0
为了解决这个问题,我做了以下操作...
BUILD > CONFIGURATION MANAGER
活动解决方案配置:DEBUG 项目上下文配置:DEBUG
然后 TOOLS > OPTIONS > DEBUGGING > EDIT & CONTINUE 确保选择了编辑和继续选项
然后 BUILD > CLEAN SOLUTION 然后 BUILD > REBUILD SOLUTION
然后开始调试,暂停后,您的代码应该可以编辑。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接