.NET 2.0应用程序调试
分类: 图书,计算机/网络,程序设计,.NET ,
作者: (美)罗宾斯著,陈缘,邹建峰,郑琼译
出 版 社: 电子工业出版社
出版时间: 2008-3-1字数: 450000版次: 1页数: 431印刷时间: 2008/03/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787121059704包装: 平装编辑推荐
获取核心调试技术的实用指导——来自一位顶尖专家的建议:获取你所需的重要简明信息——掌握使用Microsoft Visual studio 2005调试应用程序的要点。针对实际开发问题,调试专家John Robbins提供了实用的解答,包括Visual C#和Visual Basic代码示例。你将学会有助于提高调试效率及保证代码质量的技术和工具。
了解如何:
使用可以帮助你在调试战场上所向披靡的工具和技术武装你自己;
执行John的实用调试过程,嗅出Bug的存在——包括“奇怪”的Bug;
在开发过程中通过断言、跟踪器及注释捕获Bug;
在调试器中设置高级断点,以设定触发条件;
使用监视窗口、数据提示,以及可视化工具快速查看关键数据;
使用其他调试工具,例如WinDBG、SOS,以及ADPlus;
编写宏与外接程序,扩展Visual Studio集成开发环境;
利用代码分析工具进行调试,并学习编写你自己的分析规则。
从Web网站获取代码示例:有关系统要求等详情,请见介绍部分。
好书分享:《Windows用户态程序高效排错》
思考才是硬道理:精妙方法,源于思考;精彩案例,源于实践。
——深入剖析数十个微软企业客户的真实案例
——让你成为福尔摩斯级的排错高手
内容简介
本书是资深调试专家John Robbins关于调试技术方面的第4本著作。在本书上一个版本——《Microsoft .NET和Windows应用程序调试》的基础上,作者对大部分内容进行了全面的更新。本书删掉了上一版本中的“本机代码的强大工具和技术”部分,剩下了前面的3大部分:“调试概述”、“强大的调试技术”和“强大的工具”。
在第1部分中,作者首先介绍了Bug的来源以及调试的基础知识,并在该部分的结尾处,对以往读者提出的一些具有代表性的问题做了一一解答。而后,在第2部分中,作者介绍了Visual Studio 2005在调试方面的新特性,以及如何使用Visual Studio 2005、WinDBG、SOS、ADPlus等进行应用程序调试。最后,在第3部分,作者介绍了如何对Visual Studio的IDE进行扩展,以及如何编写你自己的代码分析规则。
本书的最佳读者对象是拥有一定开发经验的中高级开发人员和调试人员。
作者简介
John Robbins,是Wintellect(www.wintellect.com)的创始人之一,主要负责该公司的调试、咨询服务,以及调试课程的创设与教授。作为一名公认的调试专家,John热衷于寻找和修正别人程序(这也包括一流公司的应用程序)中很难发现的Bug。他是本书前两个版本的作者,也是“Bugslayer”(MSDN Magazine上广受欢迎的专栏)的特约编辑。
目录
第1部分调试概述
第1章Bug的来源与解决的办法
1.1 Bug与调试
什么是Bug
Bug的处理和解决方案
制定调试计划
1.2调试的必备条件
技能组合
学习技能
1.3调试过程
步骤1:重现Bug
步骤2:描述Bug
步骤3:总是假设Bug是因你而起的
步骤4:分而治之
步骤5:创造性地思考
步骤6:利用工具
步骤7:开始重度调试
步骤8:验证Bug是否己被修正
步骤9:学习与分享
调试过程中的最后秘密
1.4本章小结
第2章为调试做好准备
2.1跟踪所有改动直至项目结束
版本控制系统
Bug跟踪系统
选择合适的系统
2.2为搭建调试系统安排时间
当生成所有的版本时都附带调试符号
将编译警告视为错误
了解程序集载入的位置
在编译时总是打开代码分析功能
2.3务必进行频繁生成和冒烟测试
频繁生成
冒烟测试
2.4立刻创建安装程序
2.5QA须用调试版本进行测试
2.6建立符号库
2.7安装源代码服务器
源代码服务器之禅
基础索引
用源代码服务器进行调试
更好的及更简单的源代码服务器索引
2.8本章小结
第3章边编码边调试
3.1断言、断言、断言,还是断言
如何去断言和断言什么
.NET中的断言
SUPERASSERTNET
3.2跟踪、跟踪、跟踪,还是跟踪
基础跟踪
高级跟踪
3.3注释、注释、注释,还是注释
3.4本章小结
第4章常见的.NET调试问题
4.1进程及基础相关问题
为什么你必须永远以非管理员账户进行开发
调试的秘密何在
我应该使用哪种开发方法
我们应该进行代码复查吗
当重新生成发送给团队以外人员的版本时碰到问题,我们该怎么办
有什么其他的C#编译器选项可以在对托管代码进行主动式调试时有帮助
在我的生成中应该设置什么CPU
我应该在什么时候停止升级编译器和其他工具
有什么方法可以在我第一次调试一个程序时加速源服务器
ConditionAttribute是如何工作的
你为什么总是把常量放在条件语句的左边
.NET二进制的调试和发布版本之间有什么区别
4.2Visual Studio的Bug
Visual Studio在我加载某个特定的项目时会发生崩溃,或者当我按下F5时,它不会进行任何调试或命中任何断点。这是怎么回事呢
在编辑器中,某个特定的键会突然失效。我尝试了卸载和重新安装,但仍然无法使用该键。我要怎样才能让它重新可用呢
调试菜单(或其他主要的UI部分)时发生了什么
4.3调试设计
你应该如何实现异常处理
如何在我的应用程序中记录未处理的异常
什么时候我应该在类中加入一个终结器
4.4调试问题
在一个产品系统上我需要一个调试器。我必须为那台机器额外购买一份Visual Studio吗
VSHOST是什么
你能使用Visual Studio调试SQL存储过程吗
你要如何使用Visual Studio调试脚本
我怎样才能使用一个不同的代码访问安全级别(Code Access Security,CAS)进行调试
4.5调试场景的问题
我怎样调试全局程序集缓存(Global Assembly,Cache,GAC)中的程序集
如何调试由.NET编写的Windows服务的启动代码
我的老板给我发了太多的E—mail,这让我什么也完成不了。有什么方法可以让讨厌的PHB E—mail慢下来吗
对于调试死锁你有何策略
如何调试设计时可用的程序集?如何调试外接程序
如何调试程序集加载的问题
我如何在所有未处理异常中获得源和行信息
4.6你使用什么工具
来自SysInternals的所有东西
Lutz Roeder的Reflector
Sells Brothers的RegexDesigner.NET
Windows Installer XML(WiX)
其他工具
4.7 本章小结
第2部分强大的调试技术
第5章Visual Studio调试器高级使用方法
5.1高级断点及其用法
断点提示
快速中断于任何函数
位置断点修饰符
5.2 “监视”窗口
格式说明符与属性求值
创建对象ID
数据提示
扩展你自己的类型
调试器可视化工具
在监视窗口家族中调用方法
5.3高级提示与技巧
设置下一语句命令
混合模式调试
调试异常
多线程与多进程调试
5.4本章小结
第6章WinDBG、SOS和ADPlus
6.1在你开始前
安装
参考读物
6.2基础知识
符合服务器设置
WinDBCG选项与窗口
处理被调试对象
6.3Command窗口
获得帮助
确保加载了正确的符号
进程与线程
遍历本机堆栈
异常与事件
控制WinDBG的命令
转储文件处理
极其有用的扩展命令
6.4 SOS
加载SOS至WinDBG
加载SOS至Visual Studio
获取帮助与使用命令
程序状态与托管线程
托管调用堆栈
显示对象数据
查看GC堆
异常与断点
死锁
其他SOS命令
6.5 ADPlus
挂起模式
崩溃模式
在恰当的时候抓拍
6.6本章小结
第3部分强大的调试工具
第7章扩展Visual Studio IDE
7.1使用宏进行扩展
宏参数
调试宏
代码元素
CommenTater:普通土豆们的救星
更多的宏
7.2Visual Studio外接程序
外接程序开发技巧
选项页与HiddenSettings外接程序
SettingsMaster
7.3 本章小结
第8章编写代码分析规则
8.1考虑规则开发
8.2规则开发基础
最重要的Check方法
8.3高级规则开发
DoNotUseTraceAssertRule和CallAssertMethodsWithMessageParametersRule规则
DoNotLockOnPublicFields、DoNotLockOnThisOrMe、DoNotLockOnTypes和DoNotUseMethodImplAttributeWithSynchronized规则
AvoidBoxingAndUnboxingInLoops规则
ExceptionDocumentationInvalidRule和ExceptionDocumentationMissingRule规则
8.4本章小结
索引