《Perl程序调试实用手册》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Martim Brown著;吕俊文,宋黎松等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2001
  • ISBN:7505364561
  • 页数:378 页
图书介绍:本书分析了开发不包含逻辑和语法错误的代码技巧以及调试程序的基本原理,介绍了开发和调试命令行代码的过程和方法及开发Perl程序所遇到的特殊调试问题等。

第一部分 Perl调试概述 3

第1章 绪论 3

1.1 漏洞类型 5

1.1.1 输入漏洞 5

1.1.2 逻辑漏洞 6

1.1.3 执行漏洞 7

1.2 预防漏洞 8

1.2.1 程序设计 8

1.2.2 编辑器 9

1.2.3 格式编排 9

1.2.4 注释 10

1.3 代码修订 11

第二部分 Perl的逻辑和语法 15

第2章 基本的Perl解析规则和陷阱 15

2.1 执行过程 16

2.1.1 体系结构 17

2.1.2 内部对象 17

2.1.3 翻译器 19

2.1.4 操作码 19

2.1.5 编译 22

2.1.6 执行 24

2.1.7 执行总结 24

2.2 语法和解析规则 25

2.2.1 基本语法 25

2.3 注释 26

2.3.1 组件标识 28

2.3.2 优先级 28

2.3.3 空词 42

2.3.4 上下文 43

2.3.5 逻辑值 44

第3章 常见的变量陷阱 45

3.1 创建/使用变量 46

3.1.1 标量 47

3.1.2 数组 47

3.1.3 哈希表 50

3.1.4 列表 53

3.1.5 文件句柄 53

3.1.6 使用defined 53

3.1.7 缺省值 54

3.2 变量范围 54

3.2.1 my的作用范围 54

3.2.2 local的作用范围 55

3.2.3 our的作用范围 56

3.3 特殊变量 56

3.3.1 @_数组 56

3.3.2 $_标量 57

3.3.3 标量$a和$b 58

3.3.4 $1..$9和其他Regex变量 59

3.4 引用 59

3.4.1 标量 59

3.4.2 数组 60

3.4.3 哈希表 60

3.4.4 函数 62

3.4.5 Globs 62

3.4.6 嵌套结构 62

3.4.7 引用类型 64

3.5 对象 64

3.6 变量,引号和插值 65

3.6.1 引号操作符 65

3.6.2 here 文档 66

3.6.3 变量插值和字符串插值 66

第4章 语句陷阱和函数陷阱 69

4.1 测试和比较 70

4.2 循环 70

4.2.1 使用while 70

4.2.2 do{}while循环 71

4.2.3 for和foreach循环 71

4.2.4 控制语句 72

4.3 正则表达式陷阱 73

4.4 函数陷阱 74

4.4.1 alarm 79

4.4.2 binmode 79

4.4.3 chdir 80

4.4.4 chomp 80

4.4.5 chop 80

4.4.6 chown 80

4.4.7 crypt 80

4.4.8 delete 80

4.4.9 each 81

4.4.10 eval 81

4.4.11 exec 81

4.4.12 exists 81

4.4.13 exit 82

4.4.14 fork 82

4.4.15 gmtime/localtime 82

4.4.16 join 82

4.4.17 keys/values 82

4.4.18 map 83

4.4.19 open 83

4.4.20 print 83

4.4.21 sprintf 84

4.4.22 ref 84

4.4.23 scalar 85

4.4.24 seek 85

4.4.25 select(filehandle) 85

4.4.26 select(files) 85

4.4.27 shift、unshift/pop和push 85

第5章 程序设计 87

5.1 分离 88

5.1.1 开发良好的子程序 89

5.1.2 解析参数 89

5.1.3 开发良好的模块 93

5.1.4 开发良好的类 96

5.2 节省时间的技巧 97

5.2.1 原型 97

5.2.2 调度表 100

5.2.3 引用 102

5.3 注释和文档 104

5.3.1 编写注释 104

5.3.2 编制文档 105

第6章 语言/平台移植指南 109

6.1 语言移植陷阱 110

6.1.1 和awk/gawk之间的差异 110

6.1.2 C陷阱 111

6.1.3 sed陷阱 113

6.1.4 emacs陷阱 113

6.1.5 shell脚本陷阱 114

6.1.6 Python陷阱 114

6.2 平台移植陷阱 116

6.2.1 支持的函数 116

6.2.2 常量的兼容性 117

6.2.3 执行环境 117

6.2.4 错误 118

6.2.5 行结束符 118

6.2.6 字符集 118

6.2.7 数据差异 119

6.2.8 文件和路径名 119

6.2.9 模块 119

6.2.10 性能和资源 120

6.2.11 平台移植技巧 120

第三部分 捕获错误 125

第7章 捕获基本错误 125

7.1 为什么检查错误? 128

7.2 为脚本添加错误检查 129

7.2.1 使用if 129

7.2.2 使用unless 129

7.2.3 使用条件操作符 130

7.2.4 使用简化逻辑 130

7.2.5 错误检查准则 131

7.2.6 错误检查预演 131

7.3 需要检查的内容 134

7.4 不需要检查的内容 135

7.4.1 不要检查无关紧要的内容 135

7.4.2 用户输入 135

7.4.3 替换/直译 136

7.5 何时停止检查 136

7.5.1 不要检查两次 136

7.5.2 函数、返回值和嵌套 137

7.6 错误消息和错误号 139

7.7 在脚本内报告错误 139

7.7.1 Warn函数 140

7.7.2 Die函数 140

7.7.3 Propagation和eval 141

7.7.4 定向和标记 142

7.8 在模块内报告错误 143

7.8.1 Carp函数 144

7.8.2 Cluck函数 144

7.8.3 Croak函数 144

7.8.4 Confess函数 145

7.9 在GUIs和Web应用程序内报告错误 145

7.9.1 TK对话 145

7.9.2 Web错误报告 148

第8章 使用编译选项和警告 151

8.1 警告 152

8.1.1 $^W变量 153

8.1.2 早期的warning编译选项 153

8.1.3 Perl 5.6的词法警告 154

8.2 strict编译选项 158

8.2.1 vars选项 159

8.2.2 refs选项 160

8.2.3 subs选项 161

8.3 Perl的其他编译选项 162

8.3.1 autouse 163

8.3.2 base 163

8.3.3 blib 164

8.3.4 常量 164

8.3.5 diagnostics 165

8.3.6 fields 167

8.3.7 integer 168

8.3.8 less 168

8.3.9 lib 168

8.3.10 ops 169

8.3.11 re 169

8.3.12 sigtrap 170

8.3.13 subs 171

8.3.14 vars 172

第9章 人工调试技术 173

9.1 使用print 174

9.1.1 引用信息 175

9.1.2 跟踪执行 176

9.1.3 使用调试选项 177

9.2 使用caller 178

9.3 使用eval 181

9.4 信号 183

9.4.1 作为异常的信号 184

9.4.2 _WARN_信号和_DIE_信号 184

9.5 写日志 187

9.6 重定向STDOUT/STDERR 187

9.6.1 使用日志函数 188

9.6.2 向syslog报告 189

9.6.3 向Windows NT/2000 Event log报告 190

第10章 Perl调试器 193

10.1 使用调试器 194

10.1.1 监视 194

10.1.2 单步方式 195

10.1.3 断点 195

10.2 Perl调试器 195

10.2.1 用户界面 196

10.2.2 调试器命令 197

10.2.3 使用非交互模式 206

10.2.4 定制 207

10.2.5 可供选择的两种界面 208

10.3 ActivePerl调试器 209

10.3.1 调试器界面 209

10.3.2 Registers(寄存器) 211

10.3.3 Proximity面板 212

10.3.4 Watches面板 213

10.3.5 执行语句 213

10.3.6 调试工具 214

10.3.7 书签 217

10.3.8 使用工具 218

10.4 命令行调试 219

10.4.1 标记和解析 220

10.4.2 Stack Snapshots 221

10.4.3 上下文(循环)栈处理 222

10.4.4 跟踪执行 224

10.4.5 方法和重载方案 225

10.4.6 字符串/数值转换 226

10.4.7 显示预处理程序(适用于CPP) 227

10.4.8 内存分配 228

10.4.9 格式处理 228

10.4.10 正则表达式 230

10.4.11 语法树 235

10.4.12 脏检查 236

10.4.13 内存泄漏 236

10.4.14 哈希表卸出 237

10.4.15 分配中间结果暂存器 239

10.4.16 清除 239

10.4.17 线程同步 240

10.5 调试内存使用 242

10.5.1 真正含义 244

第四部分 优化代码 247

第11章 手工优化 247

11.1 跟踪执行 248

11.2 发现资源下降 249

11.2.1 提高速度 249

11.2.2 减少内存 253

第12章 自动优化 255

12.1 Perl剖析器 256

12.1.1 脚本剖析实例 258

12.1.2 一次命中剖析 261

12.1.3 剖析的备选方案 261

12.2 使用编译器 262

12.2.1 后端 263

12.2.2 perlcc前端 273

12.2.3 解释代码和编译代码之间的区别 276

12.3 比较脚本和可执行程序的速度 277

12.3.1 测试 278

12.3.2 归纳结论 281

第五部分 测试代码 285

第13章 测试方法 285

13.1 测试装具模块的角色 286

13.2 测试策略 287

13.2.1 测试示例 287

13.2.2 测试内容 291

13.2.3 界限和范围 291

13.3 建立测试装具模块 293

13.3.1 使用Test模块 294

13.3.2 使用Test∶∶Harness 296

13.3.3 CGI Harness 297

第14章 中断代码 299

14.1 磁盘空间 300

14.2 CPU时间 302

14.3 环境变量 304

14.4 安全和权限 306

14.5 脏数据 306

14.5.1 使用脏模式 306

14.5.2 检查数据和澄清数据 308

14.6 Web服务器 309

14.6.1 Web环境 309

14.6.2 网络通信 310

14.6.3 外部程序 311

14.6.4 用户安全性 311

14.6.5 超时 311

14.7 Web数据 312

14.8 多重执行 313

第六部分 附录 315

附录A 错误交叉参考 315