- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.NET应用程序的调试与配置
第十三章 应用程序系统的调试与配置
本章主要介绍与.NET托管程序的调试和配置有关的一些问题,还附带讨论了一些有关应用系统发布的
问题。这些内容主要针对控制台应用程序和Windows应用程序的项目的开发,对于ASP.NET和另外一些特殊
类型的托管程序则不尽相同。
13.1 .NET 应用程序系统的调试
13.1.1 .NET 程序的Debug 和Release 版本
.NET托管程序的编译器具有一组可供选择的功能开关,通常被称为编译器选项。在命令行方式下执行
编译时,可以通过命令中的参数控制这些选项。在IDE下设计时,而可以通过系统配置等方式控制编译器选
项 (一般可使用默认配置)。源代码在编译时如果选用不同的编译器选项的组合,就能生成具有不同的特
征的PE程序(或DLL)的版本。在Visual Studio.NET下设计时,IDE工具栏中部有一个下拉框,开发人员可
从中选择“debug”和“release”两种不同的编译版本。如图13-1所示:
图13-1 IDE 的工具栏中有一下拉框可选择编译版本
“debug”版本一般用于系统调试,“release”版本则用于正式对外发布。IDE下编译时前者位于项目
文件夹下bin\debug之内,后者则位于bin\release之内。这两个版本的差别是由编译选项配置不同确定的,
一般debug版本内部包含更多调试信息(如注释、断点等),而release版本较多使用了编译器提供的代码
优化。此外,debug版比较适合在IDE下进行调试,可对其实行跟踪(Trace);而release版一般直接在托
管程序平台上运行,不一定能被跟踪。
与上述两种编译版本有关的编译器选项主要是 /debug和 /optimize。可以用/debug+ 或 /debug- 打
开或关闭编译器对调试功能的支持。/optimize+ 或 /optimize- 选项则表示打开或关闭编译器的代码优化
开关。
代码优化功能虽然有提高系统效率等优点,但也有人遇到启用代码优化后生成的release版本与debug
版本在运行时的行为不一致,以致出现无法控制的异常。为了避免发生这种情况,建议开发者在程序开发
的各个阶段,可经常分别生成debug和release两种版本的程序并进行调试,发现有不一致时即可及时查找
到原因。而一旦系统规模增大之后,再要检测代码优化可能带来的负面影响就会非常困难。万一,遇到上
述的由于代码优化而产生的异常无法在短时间内克服,而又面临系统交货时,则可尝试临时在release版本
的编译器选项中配置/optimize-。
另外,顺便提一下,编译时在项目文件夹下往往还会产生一个obj子目录。因为编译是分模块进行的,
这些模块就放在obj内。最终再把模块进行组装(连接)为完整的程序。分模块编译有个好处就是支持局部
编译或增量编译,也就是说只有代码修改过的模块需要重新编译,这样就有利于提高编译的速度。小型应
用系统可能总共只包含一个模块,那样的话,obj和bin中内容可能会差不多。
13.1.2 使用Trace 类输出跟踪消息
代码跟踪是调试中常用的手段。Visual Studio.NET IDE下可以对应用程序执行逐行(快捷键为F11)或
逐个方法 (快捷键为F10)的跟踪,也可以在代码中任意行位置插入跟踪点。代码一旦执行到跟踪点的位置,
程序会暂停,并且通过代码窗口和其它途径将程序内部的当前状态(如变量的值等)充分呈现给调试人员。
因此,跟踪是程序查错的有效手段。从软件工程的观点看,跟踪主要为“白盒”测试提供一种手段。
在IDE下对.NET程序进行跟踪时,一般应使用debug版本,因为正常情况下,debug版本的程序中保存了
跟踪所必需的完整信息。这些信息保存在项目文件夹的 bin\debug子目录下的.pdb (Program Debug
Database)文件之内。release版本是否可以被跟踪,取决于其编译时的选项。例如使用/debug:pdbonly则
可以被跟踪,使用/debug-则不能跟踪。也可以看一下bin\release子目录内是否有.pdb文件来确定该
release版本能否用于跟踪。
.NET框架下有一个System.Diagnostics 命名空间,是专门为应用程序的调试提供服务的。Debug和Trace
是该命名空间下的类。恰当地使用这两个类的方法,可以给使用不同编译器选项生成的应用程序添加跟踪、
调试和检测功能。并且可以在IDE以外对程序执行这些跟踪或检测,还可以把跟踪点的相关信息或检测结果
写入
文档评论(0)