《Java程序调试实用手册 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Will David Mitchell著;裘岚译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2002
  • ISBN:7505362860
  • 页数:384 页
图书介绍:在开发应用程序时,最令你、你的主管和你的客户感到困扰的是无处不在,难以彻底消灭的漏洞,由于漏洞所造成的危害举不胜举。如果你需要掌握开发无漏洞代码的思想、理论、技术和方法,那么请你认真阅读本书!本书是所有软件工程师的必读书籍,也可作为大专院校计算机专业师生的参考资料。作为一个软件工程师,如果你仍然在为不能捉尽自己开发的Java应用程序中的“虫子”而苦恼不已,那么请你认真地阅读这本书。只要你确实掌握了书中所论述的思想、策略、技术和方法,那么开发无错误的Java应用程序就是既可望也可及的事了。完全没有漏洞是不可能的。使用Hatching预防Java漏洞。设置Java漏洞中断。千万不要错过另一个限期!危险因子分析。编写代码避开漏洞。漏洞类别。心理训练。Debugger的可怕威力。调试策略。测试。线程化环境。走开的人。使用最佳的测试策略。商业设计。Java资源。计算机编程的24条法规。Java术语表。Word宏。

第一部分 从编写没有漏洞的代码开始 1

第1章 完全没有漏洞是不可能的 3

1.1证据 4

1.2调试或者测试都无法找到所有漏洞 5

1.3这样将变得更糟 8

1.4开始就必须去除代码漏洞 8

第2章 使用HatChing预防Java漏洞 11

2.1开发哲学 12

2.1.1左脑<=>右脑 12

2.1.2如何更加富有创造力 14

2.1.3如何更好地组织 17

2.1.4程序员创建而测试员破坏 17

2.2首先编写文档 18

2.2.1首先是用户手册 18

2.2.2强有力的结束工作 19

2.2.3用户手册成为编程规范 19

2.3学着喜欢Javadoc 20

2.4危险元素在安全元素之前 22

2.4.1尽早处理例外 22

2.4.2避免限期压力 23

第3章设置 Java漏洞中断 25

3.1指导代码、 26

3.1.1代码工具 26

3.1.2 Java例外的细节 28

3.1.3例外提高了艺术的境界 30

3.1.4处理例外的编码 36

3.1.5嵌套使用try模块 38

3.2 throw模块 38

3.2.1 throws关键词 39

3.3隐藏在幻象漏洞之后的漏洞 41

3.3.1练习生成漏洞 42

3.4自动记录结果 42

第4章 千万不要错过另一个限期!危险因子分析 45

4.1使用危险因子分析(RFA) 47

4.1.1如何开始RFA 47

4.1.2如何使用RFA 47

4.1.3为什么使用RFA 49

4.2为什么RFA对于调试Java非常重要? 49

第5章 编写代码避开漏洞 51

5.1通用文字处理器 52

5.1.1使用Microsoft Word 55

5.2使用最好的Java编辑器 65

5.3编辑窍门 66

5.3.1使笔误自我显露 69

5.3.2扩展拷贝/粘贴缓冲区 69

5.3.3使用自动更正功能清除错误和保存输入 72

5.4练习拼写检查器 74

5.5按照先头后尾再中间的顺序书写 75

5.6 QQQ书签 76

5.7 3X5的打孔卡片 77

5.8使用已知的Java子集 79

5.9先注释后代码 80

5.10牢记语言之间的区别 81

5.10.1 Java和C/C++++ 81

5.10.2 Java和Visual Basic(VB)之间的主要区别 85

5.11集成开发环境(IDE) 89

5.11.1 JBuilder 90

5.11.2 JDK Commander 92

5.11.3 Mojo 92

5.11.4 VisualCafe 92

5.12漏洞类别 94

第二部分 清除Java漏洞 97

第6章 漏洞类别 97

6.1设计漏洞 98

6.1.1条件总是以2的幂数成对出现 98

6.2语法漏洞 100

6.2.1代码生成器 100

6.2.2代码生成器的特性 103

6.2.3类似Lint的检验程序 105

6.3逻辑漏洞 113

6.3.1逻辑性实际错误 113

6.4解决神秘之处 118

6.5数学漏洞 119

6.5.1接近边界值的数学问题 120

6.5.2布尔变量 121

6.5.3不常用的操作符:移位 124

6.6罕见的漏洞 129

6.6.1数据导致的漏洞 130

6.7副作用漏洞 130

6.8优化引起的漏洞 131

6.9假冒的漏洞 132

第7章 心理训练 135

7.1如何保持思维的一贯性 136

7.1.1使用纯粹的个人习惯 136

7.2不要混合使用深度搜索和广度搜索 142

7.3何时调试 144

7.4环境 145

第8章Debugger的可怕威力 147

8.1免费的JavaDebugger(JDB) 149

8.1.1安装 149

8.1.2简介 149

8.1.3命令参考 150

8.2第三方Debugger 151

8.2.1 Assure 152

8.2.2 JBuilder 158

8.2.3 JProbe 165

8.2.4 Visual Cafe 171

第9章 调试策略 183

9.1集成最好资源 184

9.2分解漏洞 184

9.2.1开始修改 185

9.2.2猎枪的方法 186

9.2.3根据推论调试 186

9.2.4二进制漏洞搜索 188

9.2.5测试 191

9.3卡住时问些问题 193

第10章 测试 195

10.1定位后击垮漏洞 196

10.1.1武装你的代码 196

10.1.2条件编译 197

10.1.3漏洞在何处? 197

10.1.4黑盒测试 203

10.1.5白盒测试 204

10.1.6全逻辑测试 206

10.2制造更好的苍蝇拍 206

10.2.1 Macro Recorder 207

10.2.2 Best Practices Analyzer 207

10.2.3 Static Coverage Analyzer 208

10.2.4 Dynamic Coverage Analyzer 208

10.2.5 Bug Tracker 208

10.2.6 Test Data Assistant 210

10.2.7何时停止测试 210

10.2.8播撒错误的种子 215

10.2.9你需要第二台计算机 216

10.3 Java的商业软件工具 219

第11章 线程化环境 223

11.1回顾古老的并行算法 225

11.2并行计算漏洞 227

11.2.1 Daemon和user线程 227

11.2.2 Java本身的防护 227

11.2.3循环并行化 228

11.2.4处理输入和输出 228

11.2.5异步任务 230

11.2.6定时程序 231

11.2.7对时间敏感的线程漏洞 232

11.3预防线程崩溃 235

11.3.1使用循环锁解救 237

11.3.2使用监督程序和信号量锁定 239

11.3.3监督程序和信号量的详细内容 242

11.3.4一些线程使用经验 243

11.3.5性能问题 245

11.4线程安全 245

11.5预防措施 246

第12章 走开的人 247

12.1用户如何查觉漏洞 248

12.1.1让你的客户喜欢你 250

12.2定义造成的漏洞混乱 252

12.3还有什么可能出错? 253

12.4组成完美错误信息的元素 253

12.4.1使用用户的语言描述 253

12.4.2不要过于简洁 254

12.4.3小心选择词汇 254

12.4.4确认是否拼写错误 254

12.4.5道歉永远不会有害 255

12.4.6最好完全解密 255

12.4.7你的用户正处在接近恐慌的状态 255

12.4.8错误消息必须可以缓和情绪 255

12.4.9避免使用任何屈尊的语气 256

12.4.10标准化步骤 256

12.4.11按钮标题 258

12.5格式化错误消息 258

12.6错误消息的内容 259

12.6.1发生了什么事? 259

12.6.2为什么发生? 259

12.6.3其后将发生什么现象? 260

12.6.4现在用户可做什么? 260

12.6.5将来用户能做什么? 261

12.6.6现在用户从何处可以得到帮助? 261

12.6.7用户如何才能帮助开发人员改善情况? 261

12.6.8最近在用户的软件中发生过类似问题否? 262

12.6.9用户应该如何向技术人员描述问题? 264

12.6.10聊天室和帮助室 265

12.6.11软件开发人员将为用户提供什么补偿? 265

12.6.12问题发生时计算机的状态如何? 266

12.6.13漏洞在客户端还是在服务器端? 266

12.6.14打开了哪个数据库、表和字段? 266

12.6.15哪个程序、哪个模块、哪种方法以及哪一行触发了错误? 266

12.6.16当时哪个线程正在活动? 267

12.6.17按照计算机支持的精度,问题究竟在何时发生? 267

12.6.18登录用户是哪一位? 267

12.6.19屏幕或者报告中应该显示什么内容 268

12.7永远按照规范保证自己的软件 268

第三部分 性能 271

第13章 使用最佳的测试策略 271

13.1递增与模块测试 272

13.1.1递增测试的优点 272

13.1.2传统模块测试的优点 273

13.1.3综合测试 273

13.2从上至下测试与从下至上测试 273

13.2.1从上至下测试 273

13.2.2流程图为什么有缺陷 274

13.2.3从下至上测试 275

13.2.4协议 275

13.3原理测试 275

13.4测试流程图的空白处 276

13.5自动测试程序 277

13.5.1自动黑盒测试 281

13.5.2自动白盒测试 281

13.5.3自动回归测试 282

13.5.4自动静态分析 283

13.5.5自动覆盖分析 289

13.5.6 幻想和神话 292

13.6清除漏洞所需的费用 293

13.7其他种类的测试 293

13.8还剩下多少漏洞? 294

附录A 商业设计 297

A.1附加项类库 298

A.2人工智能 298

A.3浏览器及浏览器工具 299

A.4代码生成器 299

A.5协作者 301

A.6编译程序和解释程序 301

A.7数据和网络数据 301

A.8 调试程序 305

A.9文档编写器 306

A.10电子商务 307

A.11编辑器 308

A.12图形开发 308

A.13帮助文档编写器 310

A.14 IDE和开发工具 310

A.15安装与配置 313

A.16国际化 314

A.17 Internet 315

A.18 Java Beans和企业版的Java Beans(EJB) 315

A.19 Java虚拟机 318

A.20 JAR自解压程序 319

A.21制图程序 319

A.22消息程序 319

A.23建模,UML,和CASE工具 320

A.24 Obfuscator和优化程序 323

A.25对象请求代理程序(ORBs) 324

A.26 Profiler 324

A.27报表制作程序 324

A.28安全 326

A.29服务器和Servlet 326

A.30软件开发工具包 328

A.31电子制表软件 328

A.32测试工具和套件 329

A.33跟踪器,工程管理器 329

A.34语音识别 330

A.35 Java文字处理器 330

A.36 XML 330

附录 BJava资源 333

B.1书籍 334

B.2杂志 334

B.3电子杂志 335

B4新闻组 336

B5Web站点 336

B6培训 337

附录C 计算机编程的24条法规 341

附录D Java术语表 345

附录E Word宏 355

E1书签和跳转 356

E2隐藏的文本 357

E3个人注释 359

E4绿色的关键字 359

E5编程帮助 374

E6更多的宏 376

附录F Java信息资源网址一览 377

附录G Java编程常用词汇 381