如何在Visual Studio中使用立即窗口?

时间:2009-04-27 16:25:32

标签: visual-studio debugging immediate-window

立即窗口是一个非常有用的调试应用程序的工具。它可用于执行在断点上下文中有效的代码语句并检查值。我还用它来输入代码片段来学习语言功能。

如何使用立即窗口?

4 个答案:

答案 0 :(得分:125)

Visual Studio中立即窗口的一个很好的功能是它能够评估方法的返回值,特别是如果客户端代码调用它,但它不是变量赋值的一部分。在调试模式中,如上所述,您可以与变量交互并在内存中执行表达式,这对于能够执行此操作起着重要作用。

例如,如果您有一个静态方法返回两个数字的总和,例如:

private static int GetSum(int a, int b)
{
    return a + b;
}

然后在立即窗口中,您可以输入以下内容:

? GetSum(2, 4)
6

如您所见,这对静态方法非常有效。但是,如果该方法是非静态的,那么您需要与方法所属的对象的引用进行交互。

例如,假设这是你的班级的样子:

private class Foo
{
    public string GetMessage()
    {
        return "hello";
    }
}

如果对象已经存在于内存中,并且它在范围内,那么只要在当前断点之前已经实例化(或者至少在之前的任何地方),就可以在立即窗口中调用它代码在调试模式下暂停):

? foo.GetMessage(); // object ‘foo’ already exists
"hello"

此外,如果您想直接交互并测试方法而不依赖于内存中的现有实例,那么您可以在立即窗口中实例化自己的实例:

? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"

如果您想进行进一步的评估,计算等,您可以更进一步,暂时将方法的结果分配给变量:

? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"

此外,如果您甚至不想为新对象声明变量名,只想运行其中一个方法/函数,那么执行以下操作:

? new Foo().GetMessage()
"hello" 

查看方法值的一种非常常见的方法是选择类的方法名称并执行“添加监视”,以便您可以在“监视”窗口中查看其当前值。但是,再一次,需要实例化对象并在范围内显示有效值。与使用立即窗口相比,这功能更强大,限制性更强。

除检查方法外,您还可以使用简单的数学方程式:

? 5 * 6
30

或比较值:

? 5==6
false
? 6==6
true

如果您直接在立即窗口中,则不需要问号('?'),但为了清楚起见,此处包含问号(以区分输入的表达式与结果。)但是,如果您在命令中窗口并需要在立即窗口中做一些快速的东西然后在你的语句前面加上'?'然后你走了。

Intellisense works in the Immediate Window,但有时可能会有点不一致。根据我的经验,它似乎只能在调试模式下使用,但不能在设计,非调试模式下使用。

不幸的是,立即窗口的另一个缺点是它不支持循环。

答案 1 :(得分:10)

使用立即窗口执行命令

立即窗口也可用于执行命令。只需键入>,然后输入命令。

enter image description here

例如>shell cmd将启动命令shell(例如,这可以用于检查传递给Visual Studio的环境变量)。 >cls将清除屏幕。

以下是常用的命令列表,它们有自己的别名:https://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx

答案 2 :(得分:5)

立即窗口用于调试和计算表达式,执行语句,打印变量值等。它允许您在调试期间输入要由开发语言评估或执行的表达式。

要显示立即窗口,请选择调试> Windows>立即或按Ctrl-Alt-I

enter image description here

以下是立即窗口的示例:

int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}

添加断点

enter image description here

调用命令

enter image description here

https://msdn.microsoft.com/en-us/library/f177hahy.aspx

答案 3 :(得分:-2)

我现在使用它比过去少。有时,更改变量的值或检查对象是有帮助的。这也可以通过观察窗口完成,所以我倾向于更频繁地使用它。