《高效C/C++调试》内容简介与阅读建议

获取这本书 暂无已核验电子书资源
下载
作者
严琦
分类
科技技术
出版年份
2024
出版社
清华大学出版社
语言
中文
豆瓣评分
★ 6.7

《高效C/C++调试》内容简介

《高效C/C++调试》是关于软件调试技术的深度探索,融合了作者的实践智慧。书中不仅指导读者如何使用专业的调试工具,还介绍了如何宏观和微观地分析问题,并最大限度地发挥调试器功能。此外,书中还深入解读了调试背后的技术原理,如调试符号、内存管理及系统内核对内存的操作机制,以揭示内存管理的关键性和复杂性。

《高效C/C++调试》书籍信息摘要

《高效C/C++调试》内容简介与阅读建议,作者 严琦,科技技术,2024年。获取前建议核对作者、出版社、年份、ISBN、版本和正版渠道。相关主题:调试符号、内存损坏、高效调试、计算机类。

《高效C/C++调试》适合哪些读者?

适合希望系统学习技术概念、实践方法、工具使用和行业知识的读者。 评分 6.7 可作为选书参考。

获取建议

《高效C/C++调试》怎么获取更合适?

优先确认版本和阅读目的;下载区只展示已核验的公版、授权、开放许可或官方试读资源。

下载

暂无已核验电子书资源;本站不展示未授权完整文件。

下载

版本

优先选择作者、译者、出版社、出版年份和 ISBN 信息明确的版本;经典作品可优先选择校注、导读或权威出版社版本。

目录

  1. 第1章 调试符号和调试器 1
  2. 1.1 调试符号 1
  3. 1.1.1 调试符号概览 2
  4. 1.1.2 DWARF格式 3
  5. 1.2 实战故事1:数据类型的不一致 14
  6. 1.3 调试器的内部结构 16
  7. 1.3.1 用户界面 16
  8. 1.3.2 符号管理模块 16
展开全部(共 193 章节)
  1. 1.3.3 目标管理模块 17
  2. 1.4 技巧和注意事项 21
  3. 1.4.1 特殊的调试符号 21
  4. 1.4.2 改变执行及其副作用 24
  5. 1.4.3 符号匹配的自动化 25
  6. 1.4.4 后期分析 26
  7. 1.4.5 内存保护 27
  8. 1.4.6 断点不工作 27
  9. 1.5 本章小结 28
  10. 第2章 堆数据结构 29
  11. 2.1 理解内存管理器 30
  12. 2.1.1 ptmalloc 31
  13. 2.1.2 TCMalloc 34
  14. 2.1.3 多个堆 38
  15. 2.2 利用堆元数据 39
  16. 2.3 本章小结 42
  17. 第3章 内存损坏 43
  18. 3.1 内存是怎么损坏的 44
  19. 3.1.1 内存溢出与下溢 44
  20. 3.1.2 访问释放的内存 45
  21. 3.1.3 使用未初始化的值 46
  22. 3.2 调试内存损坏 47
  23. 3.2.1 初始调查 49
  24. 3.2.2 内存调试工具 53
  25. 3.2.3 堆与栈内存损坏对比 53
  26. 3.2.4 工具箱 54
  27. 3.3 实战故事2:神秘的字节序转换 55
  28. 3.3.1 症状 55
  29. 3.3.2 分析和调试 56
  30. 3.3.3 错误和有价值的点 64
  31. 3.4 实战故事3:覆写栈变量 65
  32. 3.4.1 症状 65
  33. 3.4.2 分析和调试 65
  34. 3.5 本章小结 68
  35. 第4章 C++对象布局 69
  36. 4.1 对齐和大小端 69
  37. 4.1.1 对齐 69
  38. 4.1.2 大小端 70
  39. 4.2 C++对象布局 71
  40. 4.3 实战故事4:访问已经释放的数据 94
  41. 4.3.1 症状 94
  42. 4.3.2 分析和调试 94
  43. 4.4 搜索引用树 95
  44. 4.5 本章小结 101
  45. 第5章 优化后的二进制 102
  46. 5.1 调试版和发行版的区别 102
  47. 5.2 调试优化代码的挑战 106
  48. 5.3 汇编代码介绍 108
  49. 5.3.1 寄存器 109
  50. 5.3.2 指令集 111
  51. 5.3.3 程序汇编的结构 113
  52. 5.3.4 函数调用习惯 116
  53. 5.4 分析优化后的代码 127
  54. 5.5 调试优化后的代码示例 130
  55. 5.6 本章小结 141
  56. 第6章 进程镜像 142
  57. 6.1 二进制文件格式 144
  58. 6.2 运行期加载和链接 148
  59. 6.3 进程映射表 153
  60. 6.3.1 可执行文件 154
  61. 6.3.2 共享库 156
  62. 6.3.3 线程栈 157
  63. 6.3.4 无名区域 157
  64. 6.3.5 拦截 158
  65. 6.3.6 链接时替换 158
  66. 6.3.7 预先加载代理函数 159
  67. 6.3.8 修改导入和导出表 159
  68. 6.3.9 对目标函数进行手术改变 164
  69. 6.3.10 核心转储文件格式 166
  70. 6.3.11 核心转储文件分析工具 169
  71. 6.4 本章小结 170
  72. 第7章 调试多线程程序 171
  73. 7.1 竞争条件 171
  74. 7.2 它是竞争条件吗 172
  75. 7.3 调试竞争条件 174
  76. 7.4 实战故事5:记录重要区域 175
  77. 7.4.1 症状 175
  78. 7.4.2 分析调试 175
  79. 7.5 死锁 177
  80. 7.6 本章小结 179
  81. 第8章 更多调试方法 180
  82. 8.1 重现错误 180
  83. 8.1.1 归因 181
  84. 8.1.2 收集环境信息 182
  85. 8.1.3 重建环境 184
  86. 8.2 防止未来的bug 184
  87. 8.2.1 知识保留和传递 185
  88. 8.2.2 增强提前检查 185
  89. 8.2.3 编写更好调试的代码 185
  90. 8.3 不要忘记这些调试规则 189
  91. 8.3.1 分治法 189
  92. 8.3.2 退一步,获取新的观点 189
  93. 8.3.3 保留调试历史 190
  94. 8.4 逆向调试 190
  95. 8.4.1 rr:Record and Replay 191
  96. 8.4.2 rr注意事项 191
  97. 8.5 本章小结 192
  98. 第9章 拓展调试器能力 193
  99. 9.1 使用Python拓展GDB 193
  100. 9.1.1 美化输出 194
  101. 9.1.2 编写自己的美观打印器 195
  102. 9.1.3 将重复的工作变成一个命令 197
  103. 9.1.4 更快地调试bug 198
  104. 9.1.5 使用Python设置断点 200
  105. 9.1.6 通过命令行来启动程序和设置断点 203
  106. 9.2 GDB自定义命令 203
  107. 9.3 本章小结 206
  108. 第10章 内存调试工具 207
  109. 10.1 ptmalloc’s MALLOC_CHECK_ 208
  110. 10.2 Google Address Sanitizer 212
  111. 10.3 AccuTrak 213
  112. 10.4 有效地调试内存损坏 225
  113. 10.5 实战故事6:内存管理器的崩溃问题 228
  114. 10.5.1 症状 229
  115. 10.5.2 分析和调试 229
  116. 10.6 本章小结 235
  117. 第11章 Core Analyzer 236
  118. 11.1 使用示例 237
  119. 11.2 主要功能 239
  120. 11.2.1 搜索引用的对象(水平搜索) 239
  121. 11.2.2 查询地址及其底层对象(垂直搜索) 240
  122. 11.2.3 内存模式分析 241
  123. 11.2.4 查询堆内存块 242
  124. 11.2.5 堆遍历(检查整个堆以发现损坏并获取内存使用统计) 242
  125. 11.3 本章小结 246
  126. 第12章 更多调试工具 247
  127. 12.1 strace 247
  128. 12.1.1 常用功能 247
  129. 12.1.2 常用附加选项 248
  130. 12.2 实战故事7:僵尸进程 248
  131. 12.2.1 遇到难题 248
  132. 12.2.2 揭示bug的真相 249
  133. 12.3 Perf 249
  134. 12.4 eBPF 250
  135. 12.4.1 准备环境 251
  136. 12.4.2 编写代码 251
  137. 12.4.3 编译程序 252
  138. 12.4.4 加载和运行程序 254
  139. 12.5 实战故事8:链接问题 255
  140. 12.5.1 切入 255
  141. 12.5.2 更奇怪的事情 258
  142. 12.5.3 柳暗花明 259
  143. 12.5.4 补充 260
  144. 12.5.5 结论 261
  145. 12.6 实战故事9:临时变量的生命周期 261
  146. 12.7 本章小结 264
  147. 第13章 崩溃发送机制 265
  148. 13.1 客户端 266
  149. 13.2 远程报告收集服务器 267
  150. 13.3 终端集成器 268
  151. 13.4 本章小结 268
  152. 第14章 内存泄漏 269
  153. 14.1 为什么RAII是基石 269
  154. 14.2 分析 270
  155. 14.3 调试内存泄漏 273
  156. 14.4 本章小结 275
  157. 第15章 协程 276
  158. 15.1 C++协程 277
  159. 15.2 协程的切分点 279
  160. 15.3 协程之诺 281
  161. 15.4 本章小结 283
  162. 第16章 远程调试 284
  163. 16.1 GDB远程调试 285
  164. 16.2 Visual Studio远程调试 286
  165. 16.3 本章小结 287
  166. 第17章 容器世界 288
  167. 17.1 容器示例 288
  168. 17.2 容器应用 289
  169. 17.3 C/C++容器调试 291
  170. 17.4 实战故事10:CrashLoopBackOff 292
  171. 17.5 实战故事11:liveness failure 292
  172. 17.6 本章小结 294
  173. 第18章 尽量不要调试程序 295
  174. 18.1 借助编译器来提前发现错误 295
  175. 18.2 编写简短的实验代码 295
  176. 18.3 日志和监控 296
  177. 18.3.1 日志 296
  178. 18.3.2 监控 297
  179. 18.4 遵循最佳编码实践 297
  180. 18.5 本章小结 298
  181. 附录A 调试混合语言 299
  182. 附录B 在Windows/x86环境下进行程序调试 301
  183. B.1 PE文件格式 301
  184. B.2 Windows Minidump格式 306
  185. 附录C 一个简单的C++ coroutine程序 309

常见问题

《高效C/C++调试》适合谁读?

适合希望系统学习技术概念、实践方法、工具使用和行业知识的读者。 评分 6.7 可作为选书参考。

《高效C/C++调试》阅读难度高吗?

建议先看简介、目录、作者和相关书籍,再判断是否适合当前阶段阅读。

《高效C/C++调试》纸质书值得买吗?

当前暂未接入已核验的纸质书购买链接,建议通过出版社、京东、当当等正版渠道核对版本后购买。

《高效C/C++调试》哪个版本更适合?

优先选择作者、译者、出版社、出版年份和 ISBN 信息清楚的版本;经典作品可优先选择校注、导读或权威出版社版本。

在哪里可以合法获取《高效C/C++调试》?

当前没有确认授权的电子书下载资源,也暂未接入已核验购买链接;商业出版物不提供未授权下载,建议通过出版社、京东、当当或官方电子书平台核对获取。

如何继续查找《高效C/C++调试》相关书籍?

可以进入 严琦 作者页查看其他作品,也可以通过分类、标签、排行榜、人工推荐和“读完这本还可以读”继续发现相近主题。

手机扫码下载

使用手机扫描二维码

扫码后会直接打开下载链接。

电子书下载二维码

手机端点击下载会直接跳转,无需扫码。