C/C++代码调试的艺术
全新正版 极速发货
¥
56.82
6.3折
¥
89.8
全新
库存8件
作者张海洋
出版社人民邮电出版社
ISBN9787115554635
出版时间2021-02
装帧平装
开本16开
定价89.8元
货号1202293450
上书时间2024-09-05
商品详情
- 品相描述:全新
- 商品描述
-
目录
章C/C++调试基本知识1
1.1BUG与Debug1
1.2为什么选择C/C++3
1.3什么是调试器4
第2章VisualC++调试基本功能5
2.1VisualC++简介5
2.1.1VC2019版本选择7
2.1.2VC2019安装9
2.2断点管理10
2.2.1设置/删除断点10
2.2.2禁用断点11
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.1Assert宏简介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.6VC调试常用快捷键和组合键列表55
第3章Linux系统gdb调试基本功能57
3.1LinuxC/C++编程基本知识57
3.1.1开发环境安装58
3.1.2开发个C/C++程序61
3.2gdb简介68
3.2.1gdb的安装69
3.2.2gdb常用功能概览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线程管理116
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查看变量类型127
3.14.5跳转执行130
3.14.6窗口管理132
3.14.7调用Shell命令133
3.14.8assert宏使用134
3.14.9gdb常用命令列表136
第4章多线程死锁调试141
4.1创建多线程142
4.2多线程的同步144
4.3C++标准库中的锁146
4.3.1std::mutex类147
4.3.2std::timed_mutex类149
4.3.3std::recursive_mutex和std::recursive_timed_mutex149
4.4死锁调试150
4.4.1Windows死锁调试151
4.4.2Linux系统中的死锁调试153
4.4.3死锁条件156
4.4.4解决死锁157
第5章调试动态库160
5.1Windows系统动态库开发与调试161
5.1.1创建动态库161
5.1.2使用动态库164
5.1.3调试动态库165
5.2Linux系统动态库开发与调试170
5.2.1创建动态库171
5.2.2使用动态库174
5.2.3调试动态库177
第6章内存检查183
6.1VC调试器和C/C++内存检查机制183
6.1.1内存泄漏测试程序184
6.1.2使用VC运行时库函数来检测内存泄漏186
6.1.3检测堆内存破坏(堆溢出)193
6.1.4其他调试函数197
6.2Linux系统内存检查198
6.2.1检查内存泄漏198
6.2.2检查堆溢出200
6.2.3检查栈溢出201
6.2.4检查全局内存溢出202
6.2.5检查释放后继续使用203
第7章远程调试205
7.1远程调试简介205
7.2VisualC++远程调试206
7.2.1准备测试程序206
7.2.2准备目标机环境206
7.2.3启动远程调试209
7.3Linux系统gdb远程调试215
7.3.1准备测试程序215
7.3.2准备目标机环境216
7.3.3启动调试216
7.4使用VC远程调试Linux程序219
7.5使用VC创建Linux程序并调试221
第8章转储文件调试分析225
8.1Windows系统中的转储文件分析225
8.1.1转储文件死锁调试分析225
8.1.2崩溃转储调试分析228
8.2Linux系统中的转储文件分析234
8.2.1内核转储文件调试分析死锁234
8.2.2内核转储文件调试分析程序崩溃问题238
第9章发行(Release)版调试242
9.1在VC中调试发行版242
9.1.1去优化测试242
9.1.2保留优化调试245
9.2在gdb中调试发行版249
9.2.1从调试版中提取调试符号251
9.2.2直接使用调试版作为符号源252
0章调试不错话题255
10.1断点的秘密255
10.2你好,烫258
10.3与Windows调试相关的API261
10.3.1输出窗口输出信息262
10.3.2检测是否在调试器运行262
10.3.3Windows调试API列表263
10.4与Linux调试相关的系统调用264
1章调试扩展知识265
11.1Windows驱动开发调试入门265
11.1.1环境准备265
11.1.2创建Helloworld驱动项目266
11.1.3编译、构建驱动267
11.1.4部署驱动267
11.1.5安装驱动程序271
11.1.6调试驱动272
11.2WinDbg简介273
11.2.1直接启动应用程序进行调试273
11.2.2附加到进程274
11.2.3调试转储文件276
11.2.4WinDbg命令列表276
11.3Linux内核驱动开发简介279
11.3.1环境准备279
11.3.2开发Helloworld280
11.3.3加载和卸载驱动281
11.4Linux内核转储文件调试分析283
11.4.1Ubuntu系统283
11.4.2在CentOS系统中配置内核转储285
11.4.3调试分析内核转储文件287
内容摘要
本书围绕C/C++程序调试这一主题,系统深入地介绍了在Windows和Linux操作系统上如何高效地调试C/C++程序。本书分为l1章,内容涵盖了程序调试的基本知识、VisualC++调试程序的基本功能与技巧、Linux系统中gdb工具的使用、死锁调试、动态库调试、内存泄漏检查、远程调试、崩溃转储文件分析、发行版调试,以及调试的不错话题和调试扩展方面的知识。本书作为学习C/C++调试技术的重要资料,讲解通俗易懂,选取的示例注重理论与实际的联系。无论是C/C++的初学者,还是经验丰富的开发人员,都会从中受益。
主编推荐
·本书以Windows和Linux系统为平台,介绍了C/C++程序的代码调试和分析的基本操作以及相应技巧。
·此外,本书还以真实程序中经常出现的一些问题,比如死锁、动态库调试、内存检查、崩溃转储文件分析等,进行了详细介绍,并给出了相应的解决方案。
·本书注重理论与实际的联系,所选示例通俗易懂,适合每一位想要提升C/C++代码调试技能的人员阅读。
·其他编程语言的开发人员也可以触类旁通,将书中学到的代码调试之道用于自己的日常编程工作中。
·提供源代码。
所谓代码调试,是指在将编写的代码投入实际运行之前,用手工或编译程序等方法进行测试,修正程序代码中的语法错误和逻辑错误的过程。代码调试对成功的程序开发来说至关重要。无论是资深的程序开发人员,还是开发新人,在编码过程中都需要通过调试代码来确保程序的正确性,确保执行结果符合预期。然而,代码调试绝非是一朝一夕就可以掌握的程序开发技能。
本书包含如下内容:
C/C++调试基本知识
Visual C++调试基本功能
Linux系统gdb调试基本功能
多线程死锁调试
调试动态库
内存检查
远程调试
转储文件调试分析
发行(Release)版调试
调试不错话题
调试扩展知识
— 没有更多了 —
以下为对购买帮助不大的评价