在Visual Studio的即时窗口中清除堆栈

12

当使用即时窗口时,需要区分运行时和设计时。

如果我在设计时使用即时窗口并将本地变量放入堆栈中:

string s = "test";

VS将启动编译器并在堆上创建名为s的新变量,并在设计时使用的临时堆栈帧上放置一个指向它的指针。 (至少我认为是这样工作的,至少是简化的。如果我错了,请纠正我)

从现在开始,除非我运行我的应用程序或关闭VS,否则我无法将s用于其他任何事情:

int s = 12;
A local variable named 's' is already defined in this scope

我可以使用上下文菜单清除立即窗口,但这实际上只是清除了窗口本身。 我的本地变量仍然留在堆栈中。

我想知道,是否真的没有办法清除我之前在立即窗口中创建的所有变量?

(我正在使用VS 2012 SP1 Prof. 但我想问题在每个版本的VS中都是相同的)

2个回答

2

我不知道Visual Studio中发生的确切情况,但似乎VS在vshost.exe进程中保留了已编译的版本。

如果你终止相关进程(即WindowsFormsApplication1.vshost.exe *32),它将清除堆栈并允许您重新使用变量,而无需重新启动VS。


1

设计时调试在MSDN页面中有所描述。但它缺乏具体的帮助来解决您的问题。Visual Basic代码示例并非完全偶然,这是旧版VB6 IDE中的一个重要功能。在那个编程环境中,编写易于测试和调试的过程性代码是很常见的,而且更加实用,因为可以使用即时窗口进行调试。

我能想到最快的清除解释器执行状态的方法是按F11(调试+逐步执行)并取消调试。或者输入>Debug.StepInto和>Debug.StopDebugging。虽然不是理想的方法。


我会被诅咒了... 我从未想过在应用程序甚至没有运行时尝试使用立即窗口... - JerKimball

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