返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:

  • 正版新书]高效C/C++调试(美)严琦,卢宪廷9787302649717
  • 全店均为全新正版书籍,欢迎选购!新疆西藏青海(可包挂刷).港澳台及海外地区bu bao快递
    • 作者: (美)严琦,卢宪廷著 | (美)严琦,卢宪廷编 | (美)严琦,卢宪廷译 | (美)严琦,卢宪廷绘
    • 出版社: 清华大学出版社
    • 出版时间:2024-01-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    君凤文轩图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: (美)严琦,卢宪廷著| (美)严琦,卢宪廷编| (美)严琦,卢宪廷译| (美)严琦,卢宪廷绘
    • 出版社:清华大学出版社
    • 出版时间:2024-01-01
    • 版次:1
    • 印次:1
    • 字数:498000
    • 页数:664
    • 开本:32开
    • ISBN:9787302649717
    • 版权提供:清华大学出版社
  • 作者: (美)严琦,卢宪廷
  • 著: (美)严琦,卢宪廷 译
  • 装帧: 平装
  • 印次: 1
  • 定价: 99
  • ISBN: 9787302649717
  • 出版社: 清华大学出版社
  • 开本: 32开
  • 印刷时间: 暂无
  • 语种: 暂无
  • 出版时间: 2024-01-01
  • 页数: 664
  • 外部编号: 五三B97320
  • 版次: 1
  • 成品尺寸: 暂无
  • 第1章 调试符号和调试器 1

    1.1 调试符号 1

    1.1.1 调试符号概览 2

    1.1.2 DWARF格式 3

    1.2 实战故事1:数据类型的不一致 14

    1.3 调试器的内部结构 16

    1.3.1 用户界面 16

    1.3.2 符号管理模块 16

    1.3.3 目标管理模块 17

    1.4 技巧和注意事项 21

    1.4.1 特殊的调试符号 21

    1.4.2 改变执行及其副作用 24

    1.4.3 符号匹配的自动化 25

    1.4.4 后期分析 26

    1.4.5 内存保护 27

    1.4.6 断点不工作 27

    1.5 本章小结 28

    第2章 堆数据结构 29

    2.1 理解内存管理器 30

    2.1.1 ptmalloc 31

    2.1.2 TCMalloc 34

    2.1.3 多个堆 38

    2.2 利用堆元数据 39

    2.3 本章小结 42

    第3章 内存损坏 43

    3.1 内存是怎么损坏的 44

    3.1.1 内存溢出与下溢 44

    3.1.2 访问释放的内存 45

    3.1.3 使用未初始化的值 46

    3.2 调试内存损坏 47

    3.2.1 初始调查 49

    3.2.2 内存调试工具 53

    3.2.3 堆与栈内存损坏对比 53

    3.2.4 工具箱 54

    3.3 实战故事2:神秘的字节序转换 55

    3.3.1 症状 55

    3.3.2 分析和调试 56

    3.3.3 错误和有价值的点 64

    3.4 实战故事3:覆写栈变量 65

    3.4.1 症状 65

    3.4.2 分析和调试 65

    3.5 本章小结 68

    第4章 C++对象布局 69

    4.1 对齐和大小端 69

    4.1.1 对齐 69

    4.1.2 大小端 70

    4.2 C++对象布局 71

    4.3 实战故事4:访问已经释放的数据 94

    4.3.1 症状 94

    4.3.2 分析和调试 94

    4.4 搜索引用树 95

    4.5 本章小结 101

    第5章 优化后的二进制 102

    5.1 调试版和发行版的区别 102

    5.2 调试优化代码的挑战 106

    5.3 汇编代码介绍 108

    5.3.1 寄存器 109

    5.3.2 指令集 111

    5.3.3 程序汇编的结构 113

    5.3.4 函数调用习惯 116

    5.4 分析优化后的代码 127

    5.5 调试优化后的代码示例 130

    5.6 本章小结 141

    第6章 进程镜像 142

    6.1 二进制文件格式 144

    6.2 运行期加载和链接 148

    6.3 进程映射表 153

    6.3.1 可执行文件 154

    6.3.2 共享库 156

    6.3.3 线程栈 157

    6.3.4 无名区域 157

    6.3.5 拦截 158

    6.3.6 链接时替换 158

    6.3.7 预先加载代理函数 159

    6.3.8 修改导入和导出表 159

    6.3.9 对目标函数进行手术改变 164

    6.3.10 核心转储文件格式 166

    6.3.11 核心转储文件分析工具 169

    6.4 本章小结 170

    第7章 调试多线程程序 171

    7.1 竞争条件 171

    7.2 它是竞争条件吗 172

    7.3 调试竞争条件 174

    7.4 实战故事5:记录重要区域 175

    7.4.1 症状 175

    7.4.2 分析调试 175

    7.5 死锁 177

    7.6 本章小结 179

    第8章 更多调试方法 180

    8.1 重现错误 180

    8.1.1 归因 181

    8.1.2 收集环境信息 182

    8.1.3 重建环境 184

    8.2 防止未来的bug 184

    8.2.1 知识保留和传递 185

    8.2.2 增强提前检查 185

    8.2.3 编写更好调试的代码 185

    8.3 不要忘记这些调试规则 189

    8.3.1 分治法 189

    8.3.2 退一步,获取新的观点 189

    8.3.3 保留调试历史 190

    8.4 逆向调试 190

    8.4.1 rr:Record and Replay 191

    8.4.2 rr注意事项 191

    8.5 本章小结 192

    第9章 拓展调试器能力 193

    9.1 使用Python拓展GDB 193

    9.1.1 美化输出 194

    9.1.2 编写自己的美观打印器 195

    9.1.3 将重复的工作变成一个命令 197

    9.1.4 更快地调试bug 198

    9.1.5 使用Python设置断点 200

    9.1.6 通过命令行来启动程序和设置断点 203

    9.2 GDB自定义命令 203

    9.3 本章小结 206

    第10章 内存调试工具 207

    10.1 ptmalloc’s MALLOC_CHECK_ 208

    10.2 Google Address Sanitizer 212

    10.3 AccuTrak 213

    10.4 有效地调试内存损坏 225

    10.5 实战故事6:内存管理器的崩溃问题 228

    10.5.1 症状 229

    10.5.2 分析和调试 229

    10.6 本章小结 235

    第11章 Core Analyzer 236

    11.1 使用示例 237

    11.2 主要功能 239

    11.2.1 搜索引用的对象(水平搜索) 239

    11.2.2 查询地址及其底层对象(垂直搜索) 240

    11.2.3 内存模式分析 241

    11.2.4 查询堆内存块 242

    11.2.5 堆遍历(检查整个堆以发现损坏并获取内存使用统计) 242

    11.3 本章小结 246

    第12章 更多调试工具 247

    12.1 strace 247

    12.1.1 常用功能 247

    12.1.2 常用附加选项 248

    12.2 实战故事7:僵尸进程 248

    12.2.1 遇到难题 248

    12.2.2 揭示bug的真相 249

    12.3 Perf 249

    12.4 eBPF 250

    12.4.1 准备环境 251

    12.4.2 编写代码 251

    12.4.3 编译程序 252

    12.4.4 加载和运行程序 254

    12.5 实战故事8:链接问题 255

    12.5.1 切入 255

    12.5.2 更奇怪的事情 258

    12.5.3 柳暗花明 259

    12.5.4 补充 260

    12.5.5 结论 261

    12.6 实战故事9:临时变量的生命周期 261

    12.7 本章小结 264

    第13章 崩溃发送机制 265

    13.1 客户端 266

    13.2 远程报告收集服务器 267

    13.3 终端集成器 268

    13.4 本章小结 268

    第14章 内存泄漏 269

    14.1 为什么RAII是基石 269

    14.2 分析 270

    14.3 调试内存泄漏 273

    14.4 本章小结 275

    第15章 协程 276

    15.1 C++协程 277

    15.2 协程的切分点 279

    15.3 协程之诺 281

    15.4 本章小结 283

    第16章 远程调试 284

    16.1 GDB远程调试 285

    16.2 Visual Studio远程调试 286

    16.3 本章小结 287

    第17章 容器世界 288

    17.1 容器示例 288

    17.2 容器应用 289

    17.3 C/C++容器调试 291

    17.4 实战故事10:CrashLoopBackOff 292

    17.5 实战故事11:liveness failure 292

    17.6 本章小结 294

    第18章 尽量不要调试程序 295

    18.1 借助编译器来提前发现错误 295

    18.2 编写简短的实验代码 295

    18.3 日志和监控 296

    18.3.1 日志 296

    18.3.2 监控 297

    18.4 遵循很好编码实践 297

    18.5 本章小结 298

    附录A 调试混合语言 299

    附录B 在Windows/x86环境下进行程序调试 301

    B.1 PE文件格式 301

    B.2 Windows Minidump格式 306

    附录C 一个简单的C++ coroutine程序 309

    严琦 毕业于中国科技大学和美国伦斯勒理工学院。 毕业后近三十年里曾先后任职于五家软件技术公司从事技算机编程工作,从初级程序员成长为一个中等规模的软件公司的首席架构师,涉及包括嵌入式系统,有限元分析,计算机辅助设计,商业智能系统等领域,致力于微处理器,编译器,服务器,系统内核等技术。作者有多项开源项目在实际应用中受到公司内外的肯定和感谢,在工作中申请并获批一项软件专利,并有另一项专利在审批中。 卢宪廷 本科毕业于天津大学,研究生东南大学。目前在微策略软件担任高级软件工程师,负责设计和开发优化企业全域搜索引擎;专注于高稳定/事件驱动异步架构/C++/Rust编程。

    《高效C/C++调试》是一本精心编写的实用指南,为软件开发工程师提供了宝贵的调试技巧和知识。作者通过多年的一线经验,深入讲解了如何高效地调试软件内存故障、理解C++对象模型、阅读汇编代码等重要内容。书中还介绍了调试器插件和工具的开发,拓展了开发者的视野。无论是初学者还是有经验的开发人员,都能从本书中获得实际的指导和启发。丰富的实战例子和代码片段让读者更好地理解和应用所学知识。如果你想提升调试能力、掌握C/C++高级内容,并成为实战资质的中高级开发人员,那么这本书绝对是你的不二选择。

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购