《高效C/C++调试》是关于软件调试技术的深度探索,融合了作者的实践智慧。书中不仅指导读者如何使用专业的调试工具,还介绍了如何宏观和微观地分析问题,并**限度地发挥调试器功能。此外,书中还深入解读了调试背后的技术原理,如调试符号、内存管理及系统内核对内存的操作机制,以揭示内存管理的关键性和复杂性。 除了介绍基础概念外,本书还涵盖了许多增强调试能力的工具与插件。尽管焦点集中在C/C++,但其中的策略与技巧具有普适性,适用于多种编程语境。内容包括从内存泄漏预防调试、Linux下的eBPF和strace调试方法,到Kubernetes容器调试,再到C++20的协程与崩溃信息收集策略。 《高效C/C++调试》主要面向具有C/C++编程基础的读者,同时也非常适合对软件技术原理有深入探索兴趣的读者以及追求高效调试技巧的开发人员。
| 分类 | 计算机-计算机综合 |
|---|---|
| 出版社 | 清华大学出版社 |
| 出版时间 | 2023-11-01 00:00:00 |
| ISBN | 9787302649717 |
目录 114 章
- 封面 10 字
- 版权信息 132 字
- 作者简介 315 字
- 内容简介 357 字
- 序一 3,960 字
- 序二 587 字
- 第1章 调试符号和调试器 624 字
- 1.1 调试符号 5,171 字
- 1.2 实战故事1:数据类型的不一致 1,173 字
- 1.3 调试器的内部结构 3,051 字
- 1.4 技巧和注意事项 7,858 字
- 1.5 本章小结 280 字
- 第2章 堆数据结构 2,174 字
- 2.1 理解内存管理器 7,826 字
- 2.2 利用堆元数据 1,537 字
- 2.3 本章小结 229 字
- 第3章 内存损坏 1,023 字
- 3.1 内存是怎么损坏的 2,973 字
- 3.2 调试内存损坏 6,856 字
- 3.3 实战故事2:神秘的字节序转换 6,365 字
- 3.4 实战故事3:覆写栈变量 1,666 字
- 3.5 本章小结 157 字
- 第4章 C++对象布局 392 字
- 4.1 对齐和大小端 1,917 字
- 4.2 C++对象布局 5,564 字
- 4.3 实战故事4:访问已经释放的数据 451 字
- 4.4 搜索引用树 4,156 字
- 4.5 本章小结 224 字
- 第5章 优化后的二进制 676 字
- 5.1 调试版和发行版的区别 2,748 字
- 5.2 调试优化代码的挑战 3,025 字
- 5.3 汇编代码介绍 8,896 字
- 5.4 分析优化后的代码 2,856 字
- 5.5 调试优化后的代码示例 3,732 字
- 5.6 本章小结 396 字
- 第6章 进程镜像 1,204 字
- 6.1 二进制文件格式 2,167 字
- 6.2 运行期加载和链接 3,864 字
- 6.3 进程映射表 9,779 字
- 6.4 本章小结 196 字
- 第7章 调试多线程程序 537 字
- 7.1 竞争条件 1,149 字
- 7.2 它是竞争条件吗 1,570 字
- 7.3 调试竞争条件 618 字
- 7.4 实战故事5:记录重要区域 892 字
- 7.5 死锁 1,786 字
- 7.6 本章小结 293 字
- 第8章 更多调试方法 272 字
- 8.1 重现错误 4,205 字
- 8.2 防止未来的bug 3,408 字
- 8.3 不要忘记这些调试规则 1,265 字
- 8.4 逆向调试 1,504 字
- 8.5 本章小结 159 字
- 第9章 拓展调试器能力 527 字
- 9.1 使用Python拓展GDB 2,429 字
- 9.2 GDB自定义命令 1,375 字
- 9.3 本章小结 126 字
- 第10章 内存调试工具 1,147 字
- 10.1 ptmalloc's MALLOC_CHECK_ 1,566 字
- 10.2 Google Address Sanitizer 1,184 字
- 10.3 AccuTrak 6,272 字
- 10.4 有效地调试内存损坏 2,685 字
- 10.5 实战故事6:内存管理器的崩溃问题 3,988 字
- 10.6 本章小结 348 字
- 第11章 Core Analyzer 1,012 字
- 11.1 使用示例 1,439 字
- 11.2 主要功能 2,642 字
- 11.3 本章小结 190 字
- 第12章 更多调试工具 308 字
- 12.1 strace 870 字
- 12.2 实战故事7:僵尸进程 1,520 字
- 12.3 Perf 617 字
- 12.4 eBPF 2,421 字
- 12.5 实战故事8:链接问题 2,654 字
- 12.6 实战故事9:临时变量的生命周期 1,577 字
- 12.7 本章小结 195 字
- 第13章 崩溃发送机制 1,349 字
- 13.1 客户端 671 字
- 13.2 远程报告收集服务器 496 字
- 13.3 终端集成器 250 字
- 13.4 本章小结 448 字
- 第14章 内存泄漏 298 字
- 14.1 为什么RAII是基石 581 字
- 14.2 分析 1,868 字
- 14.3 调试内存泄漏 1,325 字
- 14.4 本章小结 194 字
- 第15章 协程 501 字
- 15.1 C++协程 987 字
- 15.2 协程的切分点 790 字
- 15.3 协程之诺 1,634 字
- 15.4 本章小结 189 字
- 第16章 远程调试 934 字
- 16.1 GDB远程调试 1,090 字
- 16.2 Visual Studio远程调试 720 字
- 16.3 本章小结 252 字
- 第17章 容器世界 596 字
- 17.1 容器示例 608 字
- 17.2 容器应用 1,330 字
- 17.3 C/C++容器调试 434 字
- 17.4 实战故事10:CrashLoopBackOff 726 字
- 17.5 实战故事11:liveness failure 1,170 字
- 17.6 本章小结 145 字
- 第18章 尽量不要调试程序 141 字
- 18.1 借助编译器来提前发现错误 462 字
- 18.2 编写简短的实验代码 444 字
- 18.3 日志和监控 1,173 字
- 18.4 遵循最佳编码实践 327 字
- 18.5 本章小结 139 字
- 附录A 调试混合语言 191 字
- 使用C++ JNI的Java程序 613 字
- 附录B 在Windows/x86环境下进行程序调试 155 字
- B.1 PE文件格式 1,771 字
- B.2 Windows Minidump格式 1,021 字
- 附录C 一个简单的C++ coroutine程序 186 字
这本书还没有同步到划线。
序一
我常常听到类似的抱怨和借口——“这是我见过最奇怪的事情”,“这段代码存在了这么多年,如果它有bug,早该失败了”,或者“我已经审阅我的代码好多遍了,这是不可能发生的”
💭 我以后遇到bug,一定不要说这些。嗯,不推脱,找bug。嗯,嘴可能没脑子好使,得控制🌚
这本书还没有写书评。