A.5生成和调试项目
生成和调试可以说是最常用的功能之一了,一般在写完一段代码后,按F6键生成,以检查代码是否有编译错误。这一生成的过程包括将项目文件输入到C#编译器,将源代码转化为中间语言代码(Common Intermediate Language,CIL),然后将CIL和元数据、资源、清单以及其他模块(如果有的话)进行联接,从而创建一个程序集。程序集是一个可执行文件,扩展名通常为.exe或.dll,已经在第22章讲解过关于程序集的内容。
一般情况下,写完一部分代码后,可以使用快捷键F6或者Shift+F6来检查是否有编译错误。要说明的是,前者生成解决方案,包括该解决方案所包含的全部项目,后者仅生成当前项目。也可以使用“清理解决方案”或“清理(项目名)”来清除生成中产生的过程目录和输出目录。这些命令都可以在相应的右键菜单或菜单中找到,其中“生成”菜单如图A-57所示。如果要修改生成时的设置,可在“解决方案资源管理器”中右击项目节点,然后点击“属性”选项进入位于左侧的“生成”窗格,还可以单击某个项目节点,然后使用快捷键Alt+Enter进入,如图A-58所示。
图 A-57 “生成”菜单
图 A-58 修改项目生成时的配置
在上述选项中,可以对以下项目进行设置:
❑配置:可以分别为“活动(Debug)”(默认值)、"Debug"、"Release"或“所有配置”设置独立的配置。
❑目标平台:指定输出文件面向的目标处理器。选择"x86"表示任何32位Intel兼容处理器,选择"Itanium"表示Intel 64位Itanium处理器。选择"x64"表示其他64位处理器,选择"Any CPU"将指定可以接受任何处理器。
❑条件编译符号:定义DEBUG和TRACE两个条件编译符号,关于条件编译符号,我们已在第23章进行介绍。
❑允许不安全代码:允许编译使用unsafe关键字的代码。
❑优化代码:启用或禁用编译器优化,启用优化可以使输出的文件更小、更快以及更有效。
❑警告等级:指定编译器警告的显示等级,有0~4共5个选项,其每个选项的含义如表A-5所示。
介绍过生成相关的知识后,接下来学习如何运行或调试一个项目。如果我们不主动执行“生成”操作,那么默认情况下,当运行或调试时IDE会自动保存并执行“生成”操作,如果有编译错误就会询问是否继续运行,并可查看错误信息。图A-59是标准工具栏中关于运行/调试相关的按钮和选项。
图 A-59 标准工具栏中关于调试/运行的部分
我们也可以为某些项目设置不执行“生成”操作,那么当运行或调试时,IDE将不会对该项目执行重新生成的操作。如图A-60所示。
图 A-60 取消某些项目的生成操作
点击绿色的箭头按钮可以启动调试,也可以使用快捷键F5,如果只想查看运行的效果而不需要调试,则可以使用快捷键Ctrl+F5。使用调试技术,可以跟踪程序的执行过程,分析程序可能存在的bug。一个合格的程序员,需要具备必要的调试技术,这将使得代码更加健壮可靠。Visual Studio 2010提供了完备的调试功能,例如设置断点、逐语句、逐过程等,如图A-61所示。
图 A-61 “调试”菜单
通常情况下,允许在代码调试过程中使用断点(Break Point),从而对代码执行过程进行中断,并可以读取此时程序内存中的数据。如图A-62所示,在需要观察的代码行前面单击鼠标左键(红色圆点的位置)或者按F9键,可以添加断点。调试程序时,系统运行到这行代码就会暂时停止。
图 A-62 设置断点
断点在调试模式下才会生效,可以按F5键以调试模式启动项目,由于这是一个“Windows窗体应用程序”,运行后将显示一个窗口,如图A-63所示。
图 A-63 启动后的应用程序
从图A-62可以看出,我们将断点设置在了按钮单击事件[1]处理程序中,因此输入一个字符"a",然后单击按钮,于是程序就停止在了断点处,效果如图A-64所示。可以看到,在调试模式下IDE多了许多的内容,例如窗口的下方多了两个窗口,每个窗口都有几个子窗口,其中常用的有如下几个窗口。
❑“局部变量”窗口:用以显示程序中局部变量;在此时的值以及函数调用的堆栈信息。
❑“调用堆栈”窗口:用以显示函数调用的堆栈信息。
❑“监视1”窗口,可以查看通过“添加监视”功能添加的变量的值,可以将任何一个变量添加到监视中,以随时查看变量的值。
图 A-64 调试中在断点处暂停运行
除了可以在“局部变量”或“监视”窗口查看变量的值以外,还可以将鼠标悬停在代码中某个变量上,即时查看变量的值,如图A-65所示最后,介绍下调试中一个很重要的工具条,如图A-66所示。
该工具栏中的主要功能说明如表A-6所示。
图 A-65 将鼠标悬停在变量上方查看变量的值
图 A-66 调试工具栏
[1]事件处理的细节见第16章。