《.NET开发人员调试策略》PDF下载

  • 购买积分:9 如何计算积分?
  • 作  者:(美) Darin Dillon著;张楚雄,刘剑译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2004
  • ISBN:7302080712
  • 页数:185 页
图书介绍:本书用作者在实际工作中遇到的大量调试实例来介绍如何根除Bug,介绍如何最大限度地利用Visual Studio.NET调试器,介绍如何在远程客户站点和本机上调试应用程序,指导读者如何思考调试过程,使实际的调试工作更为容易。

目 录 1

第1章调试简介 1

1.1 明确问题 1

1.1.1三思而后行 2

1.1.2是否值得这样做 2

1.1.3提高调试技能 3

1.2.NET新增的调试特性 4

1.2.1 内存问题不再出现 4

1.2.2语言无关性 5

1.2.3远程调试和跨机调试 6

1.2.4从进程中分离 7

1.2.5 ASP.NET 7

1.3 其他内容 8

第2章 调试过程中的6点建议 9

2.1 在检查Bug时,不要忽视在此之前出现的任何Bug 9

2.2 不要忘记最终目标是让程序正确执行——修正Bug只是手段, 11

并非最终目的 11

2.2.1 当目标依赖许多子目标,而这些子目标又依赖更多的子目标时 13

2.2.2 当进行下一步很困难时,可寻找一种简单的办法 13

应将注意力集中在导致代码出现故障的方式上 14

2.3 当代码在一种方式下正常运行,而在另一种方式下出现故障时, 14

2.3.1 将注意力集中在不同点上 15

2.3.2当一些程序以某种方式运行时 16

2.4在没有合理的证据时,不要怀疑问题出在硬件、API或OS上 17

2.5 在一些测试计算机上不要安装调试工具——以免发生异常循环 19

2.5.1 在非开发环境下检验代码的工作情况 20

2.5.2确保能够在客户站点上调试您的产品 21

2.5.3 为您的团队提供使用其他调试方法的实践机会 22

2.6编码后,立即在调试器上逐步验证所有代码 22

2.6.2 发现处理错误的代码隐藏着一个严重的问题 23

2.6.1 忘记补充函数细节 23

2.6.3把修改代码也当作一次测试,但是偶尔也应该检查一下 24

2.6.4错过优化代码的机会 25

2.6.5正确使用逐步调试 26

2.7小结 26

第3章制定计划 28

3.1 蛮力调试 28

3.2 3个猜测 30

3.2.1 还是不相信我吗?让我证明给您看 31

3.2.4 以前曾经见过与之类似的Bug吗 33

3.2.2构造一个测试案例 33

3.2.3聪明地使用猜测 33

3.3手机问题 34

3.3.1 一旦做出假设,我们就很可能做蠢事 35

3.3.2收集信息——到何时一切才能正常运行 36

3.3.3推理实现细节 39

3.3.4深入问题 41

3.3.5 决定性的问题——故障的根源是什么 43

3.4小结 44

4.1 断言 45

第4章断言调试 45

4.1.1 关于消息窗口的问题 46

4.1.2使用断言来启动调试器 47

4.2我经常验证代码,为什么还需要断言呢 48

4.2.1 找到出错点 48

4.2.2断言的部分优点 50

4.3 .NET的调试和跟踪类 51

4.4积极地使用断言 53

4.5断言性能瓶颈 55

4.6不要断言合理的情况 57

4.7 当不能简单地使用断言时 58

4.7.1 关于Windows服务的断言 58

4.7.2关于ASP.NET页面和Web服务的断言 59

4.7.3关于远程对象的断言 61

4.8 使用TraceListener定制断言 61

4.8.1 启动定制的断言 63

4.8.2在服务中使用定制的断言 64

4.9 小结 65

5.1 Printf调试 66

第5章用日志调试 66

5.2程序日志 67

5.2.1 日志中应该包含的信息 67

5.2.2使日志易读 71

5.3.NET对记录的支持 76

5.3.1.NET中的侦听器和开关 78

5.3.2 XML配置文件 80

5.4 Windows事件日志 82

5.5 小结 84

6.1 ASP.NET和调试器 85

第6章ASP.NET调试和SQL调试 85

6.1.1连接调试器 87

6.1.2远程调试 89

6.1.3分离调试器 89

6.2 ASP.NET中的日志 90

6.2.1 ASP.NET跟踪数据 91

6.2.2启用ASP.NET跟踪 96

6.3调试SQL存储过程 100

6.3.1直接逐步执行存储过程 100

6.3.3 SQL远程调试 102

6.3.2在应用程序中调试存储过程 102

6.4小结 103

第7章调试远程客户站点 104

7.1 调试远程客户问题如此困难的原因 104

7.1.1配置问题 105

7.1.2您必须设计再现Bug 106

7.2为什么要问我这么多问题?只要修正它不就行了 107

7.2.1 客户的期望 107

7.3 自动诊断实用程序 108

7.2.2 为什么不能实现客户的愿望 108

7.3.1 自动收集数据 109

7.3.2 诊断实用程序的设计决策 109

7.4 帮助您观察客户再现Bug的第三方工具 111

7.4.1亲眼观察Bug 111

7.4.2控制用户的电脑 112

7.5 对于非常严重的Bug,可以让开发人员参与技术支持工作 112

7.5.1参与的人员越多,遗漏的信息越多 113

7.5.2开发人员应该对客户说的话 113

7.6构建一个带有更多日志的新版本——以及验证它是否被安装的方法 114

7.7 .NET的安全性 115

7.7.1限制访问 116

7.7.2 CAS的工作方式 117

7.7.3处理SecurityExceptions 119

7.7.4根据每个程序集授予权限 120

7.8 小结 122

第8章多线程调试 123

8.1 多线程的概念 123

8.2在调试器中查看线程 125

8.3 常见线程问题的原因 126

8.3.1竞争条件 127

8.3.2死锁 130

8.3.3资源匮乏 131

8.4调试线程问题 133

8.4.1 调试竞争条件 135

8.4.2调试死锁 139

8.5关于线程的思考 145

8.6小结 145

9.1 需要错误跟踪软件的原因 146

第9章错误跟踪程序 146

9.1.1 您不知道的细节 147

9.1.2错误跟踪程序的概念 148

9.2开发工作流程 150

9.2.1 常见的工作流程问题 151

9.2.2执行工作流程 152

9.2.3处理工作流程中的反弹 153

9.3搜索和报告 154

9.3.1 重复的PR 154

9.3.2 为解决当前Bug而从以前的Bug中查找线索 155

9.3.3 PR统计报告 156

9.4和队员交流 158

9.4.1 与其他开发人员合作 159

9.4.2 与测试人员合作 160

9.4.3与技术支持部门合作 161

9.5 了解您的工具 162

9.6小结 163

第10章源代码管理调试 164

10.1源代码管理介绍 165

10.1.1使用Visual SourceSafe 165

10.1.2允许开发人员协同工作 166

10.1.3 查看文件变化的历史记录 168

10.1.4取回某一版本或者分离一个副本 170

10.1.5防止意外删除文件 171

10.2用SourceSafe进行调试 171

10.2.1用修改历史进行调试 172

10.2.2在分支管理中修正Bug 177

10.3 习惯于使用SourceSafe 182

10.4 小结 182

结束语 184