新書推薦:
《
教学创新大赛备赛手册
》
售價:NT$
347.0
《
清末想象:中国科幻小说的兴起
》
售價:NT$
286.0
《
二月河文集:长篇历史小说典藏版(康熙+雍正+乾隆套装全十三册)
》
售價:NT$
3407.0
《
异彩辉煌:魏晋南北朝文学、绘画、书法关系研究(浙江大学文学院学术文库)
》
售價:NT$
653.0
《
金石昆虫草木状:绝美中国博物手绘
》
售價:NT$
1520.0
《
6G智能超表面无线信道环境自适应构建技术
》
售價:NT$
388.0
《
民国词史考论
》
售價:NT$
959.0
《
不要再沉迷优化人生
》
售價:NT$
301.0
編輯推薦:
1.Effective系列产品,专业调试指南,面向高级开发者的效率工具书
2.分阶段解析调试策略与工具,全面覆盖调试全流程
3.66个实战技巧,直击复杂故障本质
4.技术含金量高,被众多开发者与企业广泛认可
5.帮助读者快速掌握调试技能,减少bug引发的时间与经济损失
內容簡介:
本书分为8章,共包含66个条目。本书首先讲解了调试策略(第1章)、调试方法(第2章)以及调试时所用的工具与技术(第3章),旨在帮助读者调试各类软件故障和系统故障。紧接着介绍了可应用于调试工作各阶段的技术,涵盖使用调试器(第4章)、编写程序(第5章)、编译软件(第6章)和运行系统(第7章)等阶段。本书最后一章(第8章)专注于介绍一些特定的调试工具和调试技术,这些工具和技术用于定位多线程和并发代码中那些棘手的bug。
關於作者:
迪欧米迪斯·斯宾奈里斯(Diomidis Spinellis)是希腊雅典经济与商业大学管理科学与技术系教授。他的研究涵盖软件工程、IT安全和云系统工程。他撰写了两本屡获殊荣的技术图书,《代码阅读方法与实践》(Code Reading: The Open Source Perspective)和《高质量程序设计艺术》(Code Quality: The Open Source Perspective)。他曾是IEEE Software杂志编辑委员会成员长达十年之久,并定期为“Tools of the Trade”专栏撰稿。他不仅为OS X和BSD UNIX贡献过代码,还是UMLGraph、CScout和其他一些开源的软件包、库和工具的开发者。他拥有英国帝国理工学院的软件工程硕士和计算机科学博士学位。他是ACM和IEEE的高级会员。在2015至2018年期间,他一直担任IEEE Software杂志主编。
目錄 :
第 1 章 宏观策略 1
条目 1:通过问题跟踪系统处理所有问题 1
条目 2:使用有针对性的查询在网上搜索与问题相关的见解 3
条目 3:确认前置条件和后置条件均已满足 5
条目 4:从问题入手,自下而上追查 bug;从程序开始,自上而下追查 bug 6
条目 5:寻找正常系统和故障系统之间的差异 8
条目 6:使用软件自带的调试工具 10
条目 7:多样化你的构建和执行环境 14
条目 8:将工作重点放在最重要的问题上 17
第 2 章 通用方法与实践 20
条目 9:为调试的成功做好准备工作 20
条目 10:确保问题能够高效重现 22
条目 11:尽可能缩短从做出修改到看到结果的时间 24
条目 12:将复杂的测试场景自动化 25
条目 13:尽量比较全面地将调试数据展示出来 27
条目 14:考虑更新软件 29
条目 15:查阅第三方软件的源代码,深入了解其正确使用方式 30
条目 16:使用专门的监控和测试设备 32
条目 17:让故障的影响凸显出来 34
2 目录
条目 18:支持在自己的桌面上调试复杂系统 36
条目 19:将调试任务自动化 38
条目 20:在调试前后做好清理工作 39
条目 21:修复所有犯同样错误的代码 40
第 3 章 通用工具与技术 42
条目 22:使用 UNIX 命令行工具分析调试数据 42
条目 23:命令行工具的各种选项和习惯用法 47
条目 24:用编辑器研究调试数据 49
条目 25:优化你的工作环境 51
条目 26:使用版本控制系统追踪 bug 的原因和历史 55
条目 27:使用监控工具处理包含多个独立进程的系统 57
第 4 章 调试器使用技巧 61
条目 28:编译代码时启用符号调试 61
条目 29:单步执行代码 65
条目 30:使用代码和数据断点 66
条目 31:熟悉反向调试 68
条目 32:沿着例程之间的调用关系寻找问题 71
条目 33:通过检查变量和表达式的值查找错误 72
条目 34:将调试器附加到正在运行的进程上 74
条目 35:处理核心转储文件 77
条目 36:配置优化自己的调试工具 79
条目 37:查看汇编代码和原始内存 82
第 5 章 编程技巧 86
条目 38:审查并手动执行可疑代码 86
条目 39:与同事一起审查代码并推理问题 88
目录 3
条目 40:添加调试功能 89
条目 41:添加日志语句 92
条目 42:使用单元测试 96
条目 43:使用断言 99
条目 44:通过扰动被调试程序来验证自己的假设 101
条目 45:尽量缩小可以正常工作的示例和故障代码之间的差异 102
条目 46:简化可疑代码 103
条目 47:考虑用另一种语言重写可疑代码 106
条目 48:改进可疑代码的可读性和结构 107
条目 49:从根源上解决问题,而不是解决表象 110
第 6 章 编译时技术 112
条目 50:检查生成的代码 112
条目 51:使用静态程序分析工具 115
条目 52:通过配置保证构建和执行的确定性 119
条目 53:对调试库和所执行的检查进行配置 121
第 7 章 运行时技术 126
条目 54:通过构建测试用例来找到错误 126
条目 55:快速失败 130
条目 56:检查应用程序的日志文件 131
条目 57:剖析系统和进程的运行情况 134
条目 58:跟踪代码的执行 138
条目 59:使用动态程序分析工具 142
第 8 章 调试多线程代码 145
条目 60:利用事后调试分析死锁 145
条目 61:捕获和重现 151
4 目录
条目 62:借助专用工具来发现死锁和竞争条件 156
条目 63:隔离并消除非确定性 161
条目 64:通过观察资源竞争情况来研究可伸缩性问题 163
条目 65:使用性能计数器定位伪共享 166
条目 66:考虑使用更高级别的抽象重写代码 169