Visual Studio调试器指南---Immediate窗口

Posted yilang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio调试器指南---Immediate窗口相关的知识,希望对你有一定的参考价值。

在编写代码或调试应用程序时,为了测试某个功能或者显示应用程序的工作状态,经常需要计算简单表达式的值。使用Immediate窗口可以很方便地实现这种操作。该窗口可以计算用户输入的表达式值。

打开

  • 菜单栏方式
    技术图片
  • 快捷键
    Ctrl+Alt+I

窗口的使用

技术图片

输入命令

大于号 (>) 作为新行提示符出现在“命令”窗口的左边缘。使用向上键和向下键可滚动显示以前发出的命令。

 
任务解决方案示例

计算表达式的值。

表达式以问号 (?) 开始。

? myvar

切换到“即时”窗口。

在窗口中输入 immed,不带大于号 (>)。

immed

从“即时”窗口切换回“命令”窗口。

在窗口中输入 cmd

>cmd

以下快捷键可以帮助您在“命令”模式中定位。

 
操作光标位置键绑定

循环通过以前输入的命令的列表。

输入行

向上键和向下键

向上滚动窗口。

命令窗口内容

Ctrl+向上键

向下滚动窗口。

命令窗口内容

向下键或 Ctrl+向下键

标记模式

在“命令”窗口中单击前面的任何行时,将自动切换到“标记”模式。这允许您像在任何文本编辑器中那样选择、编辑和复制以前命令的文本,并将其粘贴到当前行中。

等号 (=)

用于输入 EvaluateStatement 命令的窗口确定是将等号 (=) 解释为比较运算符还是赋值运算符。

在窗口中,将等号 (=) 解释为比较运算符。不能在窗口中使用赋值运算符。例如,如果变量 varA 和 varB 的值不相同,则命令

>Debug.EvaluateStatement(varA=varB)

将返回 False 值。

与此相反,在“即时”窗口中,将等号 (=) 解释为赋值运算符。例如,命令

>Debug.EvaluateStatement(varA=varB)

将为变量 varA 赋予变量 varB 的值。

参数、开关和值

有些 Visual Studio 命令具有必选的和可选的参数、开关和值。当处理这些命令时,应用某些规则。下面是一个用来阐明此术语的复杂命令示例。

Edit.ReplaceInFiles /case /pattern:regex var[1-3]+ oldpar 

在此示例中,

  • Edit.ReplaceInFiles 是命令。

  • /case 和 /pattern:regex 是开关(以斜杠 [/] 字符开头)

  • regex 是 /pattern 开关的值;/case 开关没有值。

  • var[1-3]+ 和 oldpar 是参数。

    技术图片注意

    任何包含空格的命令、参数、开关或值都必须用双引号引起来。

在命令行上,开关和参数的位置可以随便互换,但外壳程序命令是个例外,它要求开关和参数按特定的顺序出现。

几乎命令所支持的每个开关都有两种格式:短格式(一个字符)和长格式。多个短格式开关可组合为一组。例如,/p /g /m 也可表示为 /pgm

如果短格式开关组合为一组,而且给定一个值,则该值应用于每个开关。例如,/pgm:123 等同于 /p:123 /g:123 /m:123。如果该组中的任何开关都不接受值,则发生错误。

转义符

命令行中的插入符号 (^) 字符表示紧随其后的字符将按原义而不作为控制字符进行解释。这可用于在参数或开关值(开关名除外)中嵌入直引号 (")、空格、正斜杠、插入符号或其他任何字符。例如,

>Edit.Find ^^t /regex

插入符号在引号内或引号外的作用相同。如果插入符号是该行的最后一个字符,则忽略不计。

应用举例

  • 执行Visual Studio命令
    要提交一个命令,需要在命令行的开头输入大于号>。本窗口可以使用的命令非常多,实际上可以在Visual Studio中执行的几乎所有操作都可以通过命令来执行,比如打开文件
    技术图片
  • 调试模式下中断时,查看变量,修改变量,表达式求值,函数调用
    下图演示了变量i的查看,调用函数reset修改 i 的值,以即查看结构体内存对齐
    技术图片
    函数调用时 函数的地址必须存在也就是不能是内联函数等
    函数调用时参数传递不能有自定义类型的构造发生
    技术图片

说明

本窗口的一个有用特性是可以在编辑代码时使用它。设计时当在窗口中创建新对象后,Immediate窗口会调用构造函数、并创建该对象的一个实例,而不用运行应用程序的其他部分。

如果调用包含某个活动断点的方法或属性,就会进入调试模式,并在断点处中断。如果希望测试某个特定的方法,但不想运行整个程序,就可以使用这个特性。

 

以上是关于Visual Studio调试器指南---Immediate窗口的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio调试器指南---Locals窗口

Visual Studio调试器指南----Autos窗口

Visual Studio调试器指南---Threads窗口

Visual Studio调试器指南---Threads窗口

Visual Studio调试器指南---Immediate窗口

Visual Studio调试器指南---多线程应用程序调试