内容简介:本书系统全面地介绍了各种功能强大的调试技术,包括所有重要的调试工具和策略,以及Windows Forms、ASP.NET、Web服务、Windows服务和SQL Server等多种应用程序的调试方法,最后还深入浅出地讨论了多线程、继承和资源管理等调试场景。本书适合不熟悉调试技术或者希望全面掌握调试技术的Visual Basic与Visual Basic .NET开发人员阅读。
前 言 本书主要讲述在使用Visual Basic (VB).NET创建桌面、网络和Web应用程序时,如何找出、理解、修复以及(最好是)预防bug。书中探讨了新的跨语言及跨组件调试工具的强大功能,并说明了如何深入或横穿整个应用程序,从而在bug所在的任何级别上找出它们。 随着VB .NET的问世,许多传统的调试规则都已经改变,预示着一场变革风暴即将来临。 时代的变迁 回顾个人计算的黑暗时代(Dark Age),在这期间,人就只是人而已,而代码都是以鲜血为代价编写出来的,创建一个可行而稳定的Windows应用程序需要付出大量非常艰苦的劳动。Windows本身相对仍然不太成熟,而且因为缺乏可以用于生产程序的简单工具使其发展受到抑制。1991年,Visual Basic 1.0及其后续产品(以后统称为VB.Classic)陆续出现,戏剧性地拯救并改变了软件开发的世界。 在软件开发史上,Windows程序设计第一次变得易于理解,而从不认为自己是开发人员的人们也能够施展必要的手段将他们的软件思想变为现实。部门业务流程被大批量自动化,而且通常不需借助于内部技术部门的力量。当这些“非主流”程序员与重视VB.Classic带给Windows程序设计的非凡生产力的无数专业开发人员胜利会师之时,结果真是蔚为壮观。Windows软件应用程序在接下来的10年中蓬勃发展,其动力是开发的速度和逐渐壮大的开发人员队伍。有一种相当有名的观点,即开发人员及其无数应用程序的可用性促进了Windows本身的广泛采用。VB.Classic完全有可能成为Windows真正的应用程序。 这种程序设计的爆炸结果之一是,许多管理人员甚至开发人员开始认为,很多软件开发流程相对简单,而且VB.Classic在幕后所做的所有困难工作意味着应用程序的设计与开发可以变得更加迅捷。结果导致了另一次爆炸的出现——被bug肆虐的软件大量涌现。由于自身的不稳定和不可靠,Windows应用程序已经变得声名狼藉。最终用户对每隔一小时就重启一次然后停止错误的应用程序已经习以为常。 由于对可能出现的bug类型缺乏了解,开发人员已经在他们的程序中引入了许多难以解决而且莫名其妙的缺陷。理解并解决个人计算涉及的许多典型问题已经花费了人们近10年的时间。 如果着眼于未来,可以预见历史可能重演。VB.Classic可以简化Windows桌面应用程序的创建,而公共语言运行库(common language runtime,CLR)的设计目的则是简化桌面尤其是网络应用程序的创建及部署。这些新的应用程序全部使用了公共类库,可以使用至少一打不同语言中的任意一种或几种来编写。虽然与VB.Classic相比,学习曲线要明显困难得多,但是回报也肯定要大得多。可以肯定的是,只要IDE向导的魔杖一挥,从XML Web服务与操作系统服务到Web页与桌面程序的一切都将变为可用。部署将变得和XCOPY命令一样简单,而DLL地狱也将会只存在于远古的神话中(尽管它可能被策略地狱所取代)。 一个全新的世界在向我们招手,用其闪亮的新技术来引诱我们投入它的怀抱。CLR及.NET Framework在网络应用程序和Internet方面的潜力就像当初VB.Classic在Windows方面的潜力一样深不可测。一轮关于富有趣味性和革新性的分布式应用程序的全新浪潮已经蓄势待发。了解网络和网络应用程序的开发人员由此将身价大涨。 面临的挑战 上面说得天花乱坠……现在是接受现实检验的时候了。这种很酷的技术前景面临的几个主要问题之一是,网络资源与本地资源的透明是不同的。网络资源一般不会与本地机器上的资源具有同样的可用性、延迟以及可靠性。编写软件时必须将所有这些因素考虑在内,使用.NET提供的一些非常方便的编程接口可以隐藏这些烦琐的细节,但是这样做甚至会使这些问题变得更加糟糕。此外,如果将应用程序放到雷阵雨定期肆虐的Internet世界中,那么它下沉的速度将会比Titanic(泰坦尼克号)还要快。 这种技术前景的另一个主要困难是,.NET的默认安全模型只给从本地Intranet下载的代码授予最低的权限,而给基于Internet的代码授予的权限就更少了。如果没有从总体上很好地理解这个安全模型及改变安全策略的含义,调试安全与权限问题很快就会变成一个噩梦。 所以,VB.NET使得开发人员构建软件系统,尤其是网络应用程序与Web应用程序,比过去容易很多。然而,它同时也引入了很多产生bug的新途径。这给开发人员带来了令人畏惧的挑战,即尝试构建更加复杂的系统,而且使该系统在出错的时候仍然很容易诊断和修复。如果不小心,使我们的软件应用程序变得越分布式化、越复杂,我们自掘坟墓的可能性就越大。 规模更大的系统,尤其是分布式应用程序,必须使用与小型系统不同的方法进行设计与调试。我们必须吃一堑才能长一智。以防火墙、缓存、加速器、转换器、网关以及通信基础设施的形式引入中间件元素,意味着软件应用程序必须在与其周围环境合作的过程中克服几道障碍。软件需求的复杂度似乎与日俱增,而可靠性、可用性、安全性和集成性变得对业务更加关键。 “通过钝(blunt)对象进行程序设计”的思维课程在使用VB.Classic的时代通常占据主导地位,但是现在已经远远不够。VB.NET的规则已经改变,而且为了补偿,交付可靠且缺陷低的软件的过程必须相应地改变。如果开发人员不了解这一点,那么天上的乌云将变得更加浓密,更加诡异,最终bug将会像雨点一样落在应用程序上。技术的进展只会使我们倒退的脚步加快。 本书旨在讲述与在有趣的VB.NET新世界中设计与调试软件相关的陷阱及危险。无疑,它并不是对语言或框架的一种批评。每项技术都有给开始使用这项技术的开发人员带来问题的方面。不应该让这些危险的因素蒙蔽了您的双眼,以至于看不到这种新语言及其类库潜在的好处。如果能够掌握并驾驭乌云,就可以体验到功能强大、效率高而且配备有一些可以在整个应用程序中使用的优秀调试工具的开发环境带来的好处。 本书内容安排 本书分为4个部分,共15章。建议首先阅读开始的4章,因为这4章中包含了对本书其余部分所涉及到的内容的全面介绍。除此之外,建议应该能够自如地阅读每章,而不必参考前面或后面的内容。每一章的最后都有一个篇幅不长的“插曲”部分,讲述的是调试世界中一些有趣的故事。