Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何在VisualStudio中使用即时窗口?_Visual Studio_Debugging_Immediate Window - Fatal编程技术网

Visual studio 如何在VisualStudio中使用即时窗口?

Visual studio 如何在VisualStudio中使用即时窗口?,visual-studio,debugging,immediate-window,Visual Studio,Debugging,Immediate Window,即时窗口是调试应用程序非常有用的工具。它可用于执行在断点上下文中有效的代码语句并检查值。我还使用它键入代码片段来学习语言功能 如何使用即时窗口?Visual Studio中即时窗口的一个很好的功能是它能够计算方法的返回值,特别是当它由客户端代码调用但不是变量赋值的一部分时。如前所述,在调试模式下,您可以与变量交互并在内存中执行表达式,这在实现这一点上起着重要作用 例如,如果您有一个返回两个数字之和的静态方法,例如: private static int GetSum(int a, int b)

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


如何使用即时窗口?

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 foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
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();}
如果您想进行进一步的评估、计算等,可以进一步将方法的结果临时分配给变量:

? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
此外,如果您甚至不想为新对象声明变量名,只想运行其方法/函数之一,请执行以下操作:

? new Foo().GetMessage()
"hello" 
查看方法值的一种非常常见的方法是选择类的方法名称并执行“添加监视”,以便在监视窗口中查看其当前值。但是,再一次,需要实例化对象,并在范围内显示有效值。与使用即时窗口相比,它的功能要小得多,限制也要大得多

除了检查方法,您还可以执行简单的数学公式:

? 5 * 6
30
或比较值:

? 5==6
false
? 6==6
true
如果直接在即时窗口中,则不必使用问号(“?”),但为了清晰起见(区分键入的表达式和结果),此处包含问号(“?”),如果您在命令窗口中,并且需要在即时窗口中执行一些快速操作,那么在您的语句前面加上“?”并离开

,但有时可能有点不一致。根据我的经验,它似乎只在调试模式下可用,但在设计、非调试模式下不可用

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

使用即时窗口执行命令 即时窗口也可用于执行命令。只需键入一个
,然后输入命令

例如,
>shell cmd
将启动命令shell(例如,这有助于检查传递给Visual Studio的环境变量)<代码>>cls将清除屏幕


下面是一个常用命令列表,这些命令都有自己的别名:

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

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

下面是一个即时窗口示例:

? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
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();}
添加断点

调用命令


如果您指的是发出单个Visual Studio命令,请查看[即时窗口][1]中的示例。显示如何通过即时窗口计算表达式、执行语句、打印变量值等。[1] :有些特殊命令很难找到列表。windbg的部分电源可用。过去能够在给定地址的情况下找到最近的符号。(ln)我觉得它被愚蠢地关掉了。我希望使用windbg的dt命令来显示结构中的类型,等等。至少可以键入一个对象变量来获取列表中的所有成员及其值。(而不是尝试玩打开一个节点关闭一个节点的游戏。)对于Visual Studio 2017,相关文档的链接是一个不错的提示。事实上,这与我使用的另一个技巧结合得很好:
>openfilename
将在解决方案中打开选定的文件,甚至有文件名完成。如何找到即时窗口?
Ctrl+Alt+I
或Debug->Windows->immediate