C/C++代码调试的艺术(第2版)
全新正版 极速发货
¥
60.6
5.5折
¥
109.8
全新
库存4件
作者张海洋
出版社人民邮电出版社
ISBN9787115608062
出版时间2023-04
装帧平装
开本16开
定价109.8元
货号31701733
上书时间2024-06-05
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
张海洋,云坞科技联合创立人,清华大学计算机专业毕业,从事软件开发近20年,曾在外企工作10余年,长期工作在开发一线,已经申请软件发明专利10余项。精通C/C++、Python等编程语言,在Windows驱动、Linux驱动、Windows/Linux系统开发和调试方面具有丰富的经验。
目录
第 1章 C/C++调试基本知识1
1.1 BUG与Debug1
1.2 为什么选择C/C++3
1.3 什么是调试器4
第 2章 Visual C++调试基本功能5
2.1 Visual C++简介5
2.1.1 VC 2019版本选择7
2.1.2 VC 2019安装8
2.2 断点管理9
2.2.1 设置/删除断点10
2.2.2 禁用断点10
2.2.3 查看所有断点11
2.3 调试执行14
2.3.1 启动调试14
2.3.2 逐语句执行15
2.3.3 逐过程执行17
2.3.4 跳出执行17
2.3.5 运行到光标处17
2.3.6 多次执行代码18
2.4 监视/快速监视20
2.4.1 快速监视20
2.4.2 监视窗口21
2.4.3 表达式支持23
2.5 内存查看25
2.5.1 字符串内存布局26
2.5.2 整型变量内存布局27
2.6 通过“局部变量”窗口和“自动”窗口查看变量28
2.6.1 “局部变量”窗口查看变量28
2.6.2 “自动”窗口查看变量30
2.7 即时窗口31
2.7.1 显示变量的值31
2.7.2 执行内嵌函数32
2.8 调用堆栈32
2.8.1 调用堆栈基本信息33
2.8.2 设置符号信息33
2.9 多线程管理36
2.9.1 创建多线程测试项目36
2.9.2 开始调试多线程程序37
2.10 查看错误码40
2.11 调试宏assert使用43
2.11.1 assert宏简介44
2.11.2 使用assert宏的注意事项45
2.12 其他46
2.12.1 编辑并继续调试46
2.12.2 字符串可视化工具47
2.12.3 条件断点48
2.12.4 函数断点51
2.12.5 数据断点52
2.12.6 VC调试时常用的快捷键和组合键列表55
第3章 Linux系统下gdb调试基本功能57
3.1 Linux系统下C/C++编程的基本知识57
3.1.1 开发环境安装58
3.1.2 开发第 一个C/C++程序61
3.2 gdb简介68
3.2.1 gdb的安装68
3.2.2 gdb常用功能概览70
3.3 调试执行71
3.3.1 启动调试71
3.3.2 启动调试并添加参数74
3.3.3 附加到进程75
3.4 断点管理77
3.4.1 设置断点77
3.4.2 启用/禁用断点86
3.4.3 启用断点一次87
3.4.4 启用断点并删除88
3.4.5 启用断点并命中N次89
3.4.6 忽略断点前N次命中90
3.4.7 查看断点90
3.4.8 删除断点91
3.5 程序执行92
3.5.1 启动程序92
3.5.2 继续运行93
3.5.3 继续运行并跳过当前断点N次94
3.5.4 继续运行直到当前函数执行完成94
3.5.5 单步执行95
3.5.6 逐过程执行96
3.6 查看当前函数参数96
3.7 查看/修改变量的值97
3.7.1 使用gdb内嵌函数98
3.7.2 查看结构体/类的值99
3.7.3 查看数组101
3.8 自动显示变量的值102
3.9 查看源代码104
3.10 查看内存106
3.11 查看寄存器109
3.12 查看调用栈111
3.12.1 查看栈回溯信息112
3.12.2 切换栈帧113
3.12.3 查看帧信息115
3.13 线程管理115
3.13.1 查看所有线程信息118
3.13.2 切换线程118
3.13.3 为线程设置断点119
3.13.4 为线程执行命令120
3.14 其他121
3.14.1 观察点121
3.14.2 捕获点124
3.14.3 搜索源代码126
3.14.4 查看变量类型128
3.14.5 跳转执行130
3.14.6 窗口管理132
3.14.7 调用Shell命令134
3.14.8 assert宏使用135
3.14.9 gdb常用命令列表137
第4章 多线程死锁调试141
4.1 创建多线程142
4.2 多线程的同步144
4.3 C++标准库中的锁146
4.3.1 std::mutex类146
4.3.2 std::timed_mutex类149
4.3.3 std::recursive_mutex和std::recursive_timed_mutex149
4.4 死锁调试150
4.4.1 Windows系统中的死锁调试151
4.4.2 Linux系统中的死锁调试153
4.4.3 死锁条件156
4.4.4 解决死锁157
第5章 调试动态库160
5.1 Windows系统动态库开发与调试161
5.1.1 创建动态库161
5.1.2 使用动态库164
5.1.3 调试动态库165
5.2 Linux系统动态库开发与调试170
5.2.1 创建动态库171
5.2.2 使用动态库174
5.2.3 调试动态库177
第6章 内存检查183
6.1 VC调试器和C/C++内存检查机制183
6.1.1 内存泄漏测试程序184
6.1.2 使用VC运行时库函数来检测内存泄漏186
6.1.3 检测堆内存破坏(堆溢出)193
6.1.4 使用数据断点来定位堆内存破坏问题196
6.1.5 使用地址擦除系统(AddressSanitizer)来定位内存问题206
6.1.6 其他调试函数214
6.2 Linux系统内存检查215
6.2.1 检查内存泄漏215
6.2.2 检查堆溢出217
6.2.3 检查栈溢出218
6.2.4 检查全局变量的内存溢出219
6.2.5 检查内存被释放后继续使用220
第7章 远程调试222
7.1 远程调试简介222
7.2 Visual C++远程调试223
7.2.1 准备测试程序223
7.2.2 准备目标机环境223
7.2.3 启动远程调试226
7.3 Linux系统gdb远程调试232
7.3.1 准备测试程序232
7.3.2 准备目标机环境233
7.3.3 启动调试233
7.4 使用VC远程调试Linux程序236
7.5 使用VC创建Linux程序并调试238
第8章 转储文件调试分析242
8.1 Windows系统中的转储文件分析242
8.1.1 转储文件死锁调试分析242
8.1.2 崩溃转储调试分析245
8.2 Linux系统中的转储文件分析251
8.2.1 内核转储文件调试分析死锁251
8.2.2 内核转储文件调试分析程序崩溃问题255
第9章 发行(Release)版调试259
9.1 在VC中调试发行版259
9.1.1 去优化测试259
9.1.2 保留优化调试262
9.2 在gdb中调试发行版266
9.2.1 从调试版中提取调试符号268
9.2.2 直接使用调试版作为符号源269
第 10章 调试高级话题272
10.1 断点的秘密272
10.2 你好,烫275
10.3 与Windows调试相关的API278
10.3.1 输出窗口输出信息279
10.3.2 检测是否在调试器运行279
10.3.3 Windows调试API列表280
10.4 与Linux调试相关的系统调用281
10.5 使用gdb为软件制作补丁281
10.5.1 为有源码软件制作软件补丁282
10.5.2 为无源码软件制作软件补丁285
10.6 使用gdb“破解”软件密码287
第 11章 调试扩展知识292
11.1 Windows驱动开发调试入门292
11.1.1 环境准备292
11.1.2 创建Helloworld驱动项目293
11.1.3 编译、构建驱动294
11.1.4 部署驱动294
11.1.5 安装驱动程序298
11.1.6 调试驱动299
11.2 WinDbg简介300
11.2.1 直接启动应用程序进行调试300
11.2.2 附加到进程301
11.2.3 调试转储文件303
11.2.4 WinDbg命令列表303
11.3 Linux内核驱动开发简介306
11.3.1 环境准备306
11.3.2 开发Helloworld307
11.3.3 加载和卸载驱动308
11.4 Linux内核转储文件调试分析310
11.4.1 Ubuntu系统310
11.4.2 在CentOS系统中配置内核转储312
11.4.3 分析内核转储文件314
11.5 Visual Studio 2022调试新特性介绍316
11.5.1 临时断点316
11.5.2 断点行为控制318
11.5.3 依赖断点319
11.5.4 强制运行到光标处321
11.5.5 强制运行到单击处321
11.5.6 附加到进程321
内容摘要
本书围绕C/C++程序调试这一主题,系统深入地介绍了在Windows和Linux操作系统上如何高效地调试C/C++程序。
本书分为11章,内容涵盖了程序调试的基本知识、VisualC++调试的基本功能与技巧、Linux系统中gdb工具的使用、死锁调试、动态库调试、内存检查、远程调试、转储文件调试分析、发行版调试,以及调试的高级话题和调试方面的扩展知识。
本书作为学习C/C++调试技术的重要资料,讲解通俗易懂,选取的示例注重理论与实际的联系。
— 没有更多了 —
以下为对购买帮助不大的评价