本教程介绍了 Visual Studio 中提供的调试工具。
“调试”和“发布”是 Visual Studio 的内置生成配置 。 可使用“调试”生成配置进行调试,使用“发布”配置进行最终版本分发。
在“调试”配置中,程序使用完整符号调试信息编译,且不进行优化。 优化会使调试复杂化,因为源代码和生成的指令之间的关系更加复杂。 程序的发布配置进行了完全优化,且不包含任何符号调试信息。
默认情况下,Visual Studio 使用“调试”生成配置,因此不需要在调试之前对其进行更改。
断点会在执行包含断点的代码行之前暂时中断执行应用程序。
Console.WriteLine
方法。 “局部变量”窗口显示当前正在执行的方法中定义的变量值。
在“即时”窗口中,可以与正在调试的应用程序进行交互。 可以通过交互方式更改变量值,看看这样会对程序产生哪些影响。
name = "Gracie"
,然后按 Enter 键。currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime()
,然后按 Enter 键。
“即时”窗口显示字符串变量的值和 值的属性。 此外,“局部变量”窗口中也会更新变量值。
程序显示用户输入的字符串。 如果用户没有输入任何内容,情况又如何呢? 可以使用名为“条件断点”的有用调试功能对此进行测试。
对于条件表达式,在显示测试 是否为 5 的示例代码的字段中输入以下代码。
String.IsNullOrEmpty(name)
每次命中断点时,调试器都会调用 String.IsNullOrEmpty(name) 方法,仅当该方法调用返回 true 时,它才会在此行上中断。 可以指定命中次数(而不是条件表达式),这样程序就会在语句的执行次数达到指定值时中断执行。 另一种方法是指定“筛选条件”,这样就可以根据诸如线程标识符、进程名称或线程名称之类的特性来中断程序执行。
选择“关闭”以关闭对话框。
通过按 F5 调试来启动程序。
在控制台窗口中,在看到输入名称的提示时按 Enter 键。
由于符合指定的条件(name
为 null
或 String.Empty),因此程序会在到达断点时以及在 Console.WriteLine
方法执行之前停止执行。
选择“局部变量”窗口,其中显示当前正在执行的方法的局部变量值。 在这种情况下,Main
是当前正在执行的方法。 请注意,name
变量的值为 ""
或 String.Empty。
在“即时”窗口中输入下面的语句并按 Enter,确认值为空字符串。 结果为 true
。
? name == String.Empty
问号指示即时窗口计算表达式。
使用 Visual Studio,还可以单步执行程序,并监视其执行情况。 通常可以设置断点,并通过程序代码的一小部分执行程序流。 由于此程序很小,因此可以单步执行整个程序。
Visual Basic
此时,“局部变量”窗口显示 数组为空,name
和 currentDate
具有默认值。 此外,Visual Studio 还打开了一个空白控制台窗口。
Visual Basic
name
变量赋值的语句。 “局部变量”窗口显示 为 null
,控制台窗口显示字符串“What is your name?”。currentDate
变量赋值的语句。 “局部变量”窗口显示 方法调用返回的值。 控制台窗口还显示在提示符处输入的字符串。测试应用程序的“调试”版本后,还应该编译并测试“发布”版本。 发布版本包含编译器优化,有时可能会对应用程序的行为产生不良影响。 例如,旨在提升性能的编译器优化可能会在多线程应用程序中创建争用条件。
若要生成和测试控制台应用程序的发布版本,请将工具栏上的生成配置从“调试”更改为“发布”。
按 F5 或选择“生成”菜单中的“生成解决方案”后,Visual Studio 会编译应用程序的“发布”版本。 可像测试“调试”版本一样测试“发布”版本。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。