“自动”和“局部变量”窗口

“自动”和“局部变量”窗口

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档

当你希望在进行调试的过程中查看变量的值时,“自动”窗口(在调试过程中,按 Ctrl+Alt+V, A,或者通过“调试/窗口/自动”)和“局部变量”窗口(在调试过程中,按 Ctrl+Alt+V, L,或者通过“调试/窗口/局部变量”)是非常有用的。 “局部变量”窗口显示在本地范围内定义的变量,它们通常为当前正在执行的函数或方法。“自动”窗口显示在当前行(调试器停止的位置)周围使用的变量。 具体显示哪些变量因不同的语言而异。 看到“自动”窗口中显示了哪些变量? 下方。

若需了解基本调试的详细信息,请参阅调试器入门

数组和对象在“自动”和“局部变量”窗口中显示为树控件。 单击变量名称左侧的箭头以展开显示字段和属性的视图。 以下是“局部变量”窗口中的FileStream 对象的示例:

Locals-FileStream

你可以在 C#、Visual Basic 和 C++ 代码中使用“自动”窗口。“自动”窗口不支持 JavaScript 或 F#。

在 C# 和 Visual Basic 中,“自动”窗口显示当前或前一行中使用的任何变量。 例如,如果声明四个变量并对它们进行如下设置:

 
public static void Main() { int a, b, c, d; a = 1; b = 2; c = 3; d = 4; }  

如果在行 c = 3 上设置了断点并运行调试器,当执行停止时,“自动”窗口将如下所示:

Autos-CSharp

注意,c 的值为 0,因为行 c = 3 尚未执行。

在 C++ 中,“自动”窗口将显示当前行(执行停止的行)前面至少三行使用的变量。 如果声明了六个变量:

 
void main() { int a, b, c, d, e, f; a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; }  

如果在行 e = 5; 上设置了断点并运行调试器,当执行停止时,“自动”窗口将如下所示:

Autos-Cplus

请注意,此变量未初始化,因为行 e = 5; 上的代码尚未执行。

在某些情况下,你还可以看到函数和方法的返回值。 请参阅下面的查看方法调用的返回值

在 .NET 和 C++ 代码中,当你单步执行或单步跳出方法调用时,可以检查返回值。 当方法调用的结果未存储在局部变量中时(例如,当方法用作另一个方法的参数或返回值时),此功能很有用。

下面的 C# 代码将添加两个函数的返回值:

 
static void Main(string[] args) { int a, b, c, d; a = 1; b = 2; c = 3; d = 4; int x = sumVars(a, b) + subtractVars(c, d); } private static int sumVars(int i, int j) { return i + j; } private static int subtractVars(int i, int j) { return j - i; }  
  

在 int x = sumVars(a, b) + subtractVars(c, d); 行上设置断点。

开始调试,且当执行在第一个断点处中断时,按 F10(跳过)。 你应在“自动”窗口中看到如下内容:

AutosReturnValueCSharp2

你可能注意到,在“局部变量”和“自动”窗口中一个变量的值有时是红色的。 这些是自上次评估以来更改过的变量值。 此更改可能是在上一次调试会话中进行的,或者是因为在窗口中更改了该值。

默认数字格式为十进制,但你可以将其更改为十六进制。 在“局部变量”或“自动”窗口内右键单击,然后选择“十六进制显示”。 此更改将影响所有调试器窗口。

你可以编辑“自动”、“局部变量”、“监视”和“快速监视”窗口中出现的大多数变量的值。 有关“监视”和“快速监视”窗口的信息,请参阅监视和快速监视窗口。 只需双击要更改并添加新值的值。

你可以输入表达式作为一个值,例如 a + b。 调试器接受大多数合法的语言表达式。

在本机 C++ 代码中,你可能需要限定变量名的上下文。 有关详细信息,请参阅 上下文运算符 (C++)

但是,更改值时应多加小心。 可能存在的问题如下:

  • 计算某些表达式可以更改变量的值,或会影响程序的状态。 例如,计算 var1 = ++var2 会更改 var1 和 var2 的值。

    会更改数据的表达式被视为具有副作用,如果你不了解这些表达式,则会产生意外的结果。 因此,在进行更改前,请确保你了解此更改的后果。

  • 编辑浮点值时,由于要将小数部分从十进制转换为二进制,因此所得的结果可能存在微小误差。 即使看起来无关紧要的编辑都会导致浮点变量中某些最不重要的数据位发生变化。

你可以使用“调试位置”工具栏来选择所需的函数、线程或进程。 设置断点并开始调试。 (如果看不到此工具栏,你可以通过单击工具栏区域的空白部分启用它。 你应当看到工具栏的列表;选择“调试位置”)。 当到达断点时,执行将停止,并且你可以看到“调试位置”工具栏,即下图的最后一行:

DebugLocationToolbar

你还可以通过双击“调用堆栈”窗口、“线程”窗口或“进程”窗口中的元素,将上下文更改为其他函数调用、线程或进程。

 

posted @   菜鸡一枚  阅读(1221)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
历史上的今天:
2016-06-11 python开发_++i,i += 1的区分
2016-06-11 线性代数的本质
2016-06-11 string.capwords()函数
2016-06-11 string.capwords() 将每个单词首字母大写
2016-06-11 如何在命令行模式下查看Python帮助文档---dir、help、__doc__
2015-06-11 人的差别,在于业余时间
2015-06-11 学点设计
点击右上角即可分享
微信分享提示