问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

确保代码在 Visual Studio 中正常运行

创作时间:
作者:
@小白创作中心

确保代码在 Visual Studio 中正常运行

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/visualstudio/ide/find-and-fix-code-errors?source=recommendations

在软件开发过程中,确保代码正确运行是至关重要的一步。Visual Studio作为一款功能强大的集成开发环境(IDE),提供了丰富的工具和功能来帮助开发者查找和修复代码中的错误。本文将详细介绍如何使用Visual Studio的生成输出、代码分析、调试工具和单元测试等功能,以确保代码的正确运行。

生成代码

生成配置有两种基本类型:“调试”和“发布”。Debug配置生成较慢、较大的可执行文件,它们允许更丰富的交互式运行时调试体验。不应发布Debug可执行文件。Release配置生成较快、经过优化的可执行文件,它们适合用于发布(至少从编译器的角度看)。默认的生成配置是调试

生成项目最简单的方法是按F7,但是还可以在主菜单中选择“生成”>“生成解决方案”开始生成项目。

可以在Visual Studio UI(用户界面)底部的“输出”窗口中观察生成过程。该窗口将显示错误、警告和生成操作。如果出现错误(或者在配置的级别出现警告),则生成失败。可以选择错误和警告以转到出现错误和警告的行。通过再次按F7(仅重新编译出现错误的文件)或按Ctrl+Alt+F7(适用于全新且完整的重新生成)重新生成项目。

编辑器下方的结果窗口中有两个选项卡式窗口:“输出”窗口(它包含原始编译器输出,包括错误消息)和“错误列表”窗口(它提供所有错误和警告的可排序和可筛选列表)。

如果生成成功,可在“输出”窗口中看到类似以下结果:

审阅错误列表

除非未对之前成功编译的代码进行修改,否则很可能会出现错误。如果不熟悉编码,则可能出现许多错误。错误有时很明显,如简单的语法错误或不正确的变量名,有时它们则难以理解,只有一个神秘代码显示给你。如需获得这些问题更清晰的视图,请导航到生成“输出”窗口的底部,然后选择“错误列表”选项卡。通过此操作,你可以转到关于项目错误和警告的一个更有条理的视图,并且可以使用一些额外的选项。

选择“错误列表”窗口中的错误行,跳转至发生错误的行。(或者按Ctrl+Q,键入行号,然后从结果中选择“打开或关闭行号”来打开行号。此操作是转至“选项”对话框最快的方法,可在此打开行号。)

按Ctrl+G快速跳转至发生错误的行号。

Visual Studio使用红色的“波浪线”下划线标识此错误。将鼠标悬停在它上方以获取更多详细信息。修复后下划线消失,尽管纠正过程中可能会引入新的错误。(此操作称为“回归”。)

遍历错误列表,并解决代码中的所有错误。

审阅错误的详细信息

许多错误对你而言可能没有意义,这些错误被当做编译器中的术语。在这些情况下,可能需要其他信息。从“错误列表”窗口,可以自动执行必应搜索,了解有关错误或警告的详细信息。右键单击相应的条目行并从上下文菜单选择“显示错误帮助”,或者选择“错误列表”的“代码”列中的超链接错误代码值。

根据设置,Web浏览器显示错误代码和文本的搜索结果,或者在Visual Studio内打开选项卡并显示必应搜索的结果。结果来自Internet上许多不同的源,你可能会发现并非所有源都有用。

使用代码分析

代码分析器查找可导致运行时错误或代码管理问题的常见代码问题。

C#和Visual Basic代码分析

Visual Studio包括一系列内置的.NET Compiler Platform分析器,这些分析器在用户键入时检查C#和Visual Basic代码。可以将更多分析器作为Visual Studio扩展或NuGet包安装。如果发现规则冲突,将同时在错误列表和代码编辑器(违规代码下方有波浪线)中报告。

C++代码分析

若要分析C++代码,请运行静态代码分析。养成在清除了阻止成功生成的明显错误后运行该分析的习惯,然后花一些时间解决可能产生的警告。这可避免将来的一些麻烦,并且你可由此了解一些代码样式技术。

按Alt+F11(或从顶部菜单选择“分析”>“对解决方案运行代码分析”)启动静态代码分析。

任何新的或更新的警告都将显示在IDE底部的“错误列表”选项卡中。选择警告以在代码中跳转到该警告。

使用“快速操作”修复或重构代码

通过灯泡或螺丝刀图标提供的快速操作,可让您重构内联代码 它们是在C#、C++和Visual Basic代码中快速、有效地修复常见警告的简便方法。要访问它们,请右键单击警告波形并选择“快速操作和重构”。或者,在光标位于彩色波浪线所在行时,按Ctrl+.,或选择边缘中的灯泡、错误灯泡或螺丝刀图标。Visual Studio将显示可以应用于该行代码的可能修复或重构的列表。

只要代码分析器确定有机会修复、重构或改进代码,就能使用“快速操作”。选择任意代码行,右键单击以打开上下文菜单,然后选择“快速操作和重构”。如果重构或改进选项可用,则会显示。否则,IDE的左下角会显示消息“此处无可用的快速操作”。

根据经验,可快速使用箭头键和Ctrl+.,来检查是否有简单的重构机会并清理代码!

运行代码清理

通过编辑器底部的“代码清理”按钮,Visual Studio提供按需格式化C#代码文件的功能,包括代码风格首选项。

“代码清理”不仅可以设置文件的空格、缩进等格式,还可以应用一套定义的代码样式约定。将从EditorConfig文件(若项目有此文件)或从“选项”对话框的代码样式设置中读取对各个代码样式的偏好设置。

调试运行代码

现在已成功生成了代码并执行了一些清理,请按F5或者选择“调试”>“开始调试”来运行代码。此操作在调试环境中启动应用,这样你就可以详细地观察它的行为。Visual Studio IDE在应用运行时会发生变化:“输出”窗口由两个新窗口代替(使用默认的窗口配置),这两个新窗口分别是“自动/局部变量/监视”选项卡式窗口和“调用堆栈/断点/异常设置/输出”选项卡式窗口。这两个窗口具有多个选项卡,可用于检查和评估应用的变量、线程、调用堆栈及其运行时的其他行为。

按Shift+F5或单击“停止”按钮停止应用。或者,可以仅关闭应用的主窗口(或命令行对话框)。

如果你的代码按预期完美而准确地运行,祝贺你!但有时代码可能会停止响应、崩溃,或者带来一些奇怪的结果。如果是这样,应尝试查找这些问题的根源并修复bug。

设置简单断点

断点是可靠调试的最基本和最重要的功能。断点指示Visual Studio应在哪个位置挂起正在运行的代码,让你可以查看变量的值或内存的行为,或确定代码的分支是否运行。在设置或删除断点后,不需要重新生成项目。

通过单击想要发生中断的行的远端边距来设置一个断点,或按F9在当前代码行上设置断点。运行代码时,它会在执行此代码行的指令之前暂停(或中断)。

断点的常见用途包括:

  • 若要缩小故障或无响应程序的源范围,可将断点分散在你认为引起故障的方法调用的代码中。在调试器中运行代码时,请移除断点,然后重设断点使其更紧密,直到找到有问题的代码行。请参阅下一部分,了解如何在调试器中运行代码。
  • 引入新代码时,请在代码的开头设置断点并运行代码,确保它按预期方式运行。
  • 如果已实现复杂的行为,请为算法代码设置断点,以便在程序中断时检查变量和数据的值。
  • 如果正在编写C或C++代码,请使用断点停止该代码,以便在调试内存相关故障时检查地址值(查找NULL)和引用计数。

有关使用断点的详细信息,请参阅在Visual Studio调试器中使用断点。

在运行时检查代码

运行的代码命中断点并暂停时,标记为黄色的代码行(当前语句)尚未执行。此时,建议执行当前语句,然后检查更改的值。可以使用多个step命令在调试器中执行代码。如果标记的代码是方法调用,可以按F11单步执行它。还可以按F10,“逐过程”执行该代码行。有关更多命令及如何逐步执行代码的详细信息,请阅读使用调试器在代码中导航。

在上图中,可以按F10或F11使调试器前移一条语句(由于此处没有方法调用,因此这两个命令的结果相同)。

调试器暂停时,可以检查变量并调用堆栈来确定所出现的情况。这些值是否在你期望的范围内?调用是否正按正确的顺序进行?

将鼠标悬停在变量上,查看其当前值和引用。如果出现意外值,则表示前一代码或调用代码可能出现了bug。如需详细信息,请参阅初步了解Visual Studio调试器。

此外,Visual Studio显示“诊断工具”窗口,可从其中观察随时间变化的应用的CPU和内存使用情况。之后在开发应用时,可以使用这些工具查找意外的高CPU使用率或内存分配。结合使用“监视”窗口和断点,确定导致意外的高使用率或未释放的资源的原因。有关详细信息,请参阅初步了解分析工具(C#、Visual Basic、C++、F#)。

运行单元测试

单元测试是防御代码bug的第一道防线,因为正确完成单元测试后,它们会测试一个“单元”的代码(一般是单个函数),并且调试起来比完整程序更简单。Visual Studio安装了适用于托管和本机代码的Microsoft单元测试框架。使用单元测试框架创建单元测试,运行测试,然后报告这些测试的结果。进行更改后重新运行单元测试,以测试代码仍能正常工作。对于Visual Studio企业版,可以在每次生成后自动运行测试。

如果要开始使用,请阅读使用IntelliTest生成用于模糊测试的单元测试。

若要了解有关Visual Studio中的单元测试以及它们如何帮助创建更高质量代码的详细信息,请阅读单元测试的基础知识。

本文原文来自微软官方文档

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号