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调试器指南---Threads窗口
Visual Studio调试器指南---Threads窗口