图书介绍
应用程序调试技术【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- (美)John Robbins著;潘文林,陈武译 著
- 出版社: 北京:清华大学出版社
- ISBN:7900631593
- 出版时间:2001
- 标注页数:452页
- 文件大小:27MB
- 文件页数:473页
- 主题词:程序语言(学科: 程序设计) 程序语言 程序设计
PDF下载
下载说明
应用程序调试技术PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第Ⅰ部分 调试概论3
第1章 错误:问题出在那里,如何解决3
1.1 错误及其调试3
1.1.1 什么是错误3
1.1.2 进程错误及其解决方案5
1.1.3 制定调试计划9
1.2 调试的先决条件10
1.2.1 技能组合10
1.2.2 学习技能组合12
1.3 调试过程13
1.3.1 第1步:复制错误14
1.3.4 第4步:分解并解决错误15
1.3.3 第3步:始终假定错误是你自己的问题15
1.3.2 第2步:描述错误15
1.3.5 第5步:进行有创见的思考16
1.3.6 第6步:杠杆工具16
1.3.7 第7步:开始繁重的调试工作17
1.3.8 第8步:校验错误已被更正17
1.3.9 第9步:学习与交流18
1.3.10 调试过程的决定性秘诀19
1.4 小结19
第2章 开始调试20
2.1 跟踪变更直到项目结束20
2.1.1 版本控制系统21
2.1.2 错误跟踪系统23
2.1.3 选择正确的系统24
2.2.1 用调试符来连编所有的构件25
2.2 制定构建调试系统的进度表25
2.2.2 警告与错误同等重要26
2.2.3 了解在何处装截DLL28
2.2.4 设计发布构件的轻便诊断系统34
2.3 日常连编和冒烟测试是必须遵循的35
2.3.1 日常构件36
2.3.2 冒烟测试37
2.4 立即连编安装程序38
2.5 QA必须对调试构件进行测试38
2.6 小结39
第3章 边编码边调试40
3.1 注意声明41
3.1.1 如何声明,声明什么42
3.1.2 不同类型的Visual C++和Visual Basic声明51
3.1.3 SUPERASSERT59
3.2 跟踪、跟踪、跟踪、再跟踪67
3.3 注意注释68
3.4 相信自己,但要校验(单元测试)69
3.5 小结71
第Ⅱ部分 高效率的调试75
第4章 调试器的工作原理75
4.1 Windows调试器的类型75
4.1.1 用户模式调试器76
4.1.2 内核模式调试器76
4.2 Windows 2000操作系统为调试对象提供的支持81
4.2.1 Windows 2000堆阵检查81
4.2.2 在调试器中自动启动83
4.2.3 快速中断项84
4.3 MinDBG:一个简单的Win32调试器85
4.4 WDBG:真正的调试器96
4.4.1 内存读写操作98
4.4.2 断点和单步执行100
4.4.3 符号表、符号引擎和堆栈遍历109
4.4.4 Step Into、Step Over和Step Out功能126
4.4.5 WDBG调试器的一个有趣的开发问题127
4.5 如果需要编写自己的调试器130
4.6 WDBG调试器之后是什么?131
4.7 小结131
第5章 使用Visual C++调试器进行强有力的调试133
5.1 高级断点及其用法133
5.1.1 高级断点语法和位置断点134
5.1.3 在系统或输出的函数中设置断点136
5.1.2 在任何函数上快速中断136
5.1.4 位置断点修饰符138
5.1.5 全局表达式和条件断点141
5.1.6 Windows消息断点144
5.2 远程调试145
5.3 技巧及窍门148
5.3.1 设置断点148
5.3.2 Watch窗口149
5.4 小结156
第6章 使用x86汇编语言和Visual C++调试器Disassembly窗口进行强有力的调试158
6.1 CPU的基础知识159
6.1.1 寄存器159
6.1.2 指令格式和内存编址162
6.2 关于Visual C++内联汇编器163
6.3.1 堆栈处理164
6.3 需要了解的指令164
6.3.3 常见的序列:函数入口和出口166
6.3.2 最常用的几个简单指令166
6.3.4 变量访问:全局变量、参数和局部变量168
6.3.5 调用进程和返回指令172
6.4 调用约定173
6.5 需要了解的其他指令179
6.5.1 数据处理180
6.5.2 指针处理182
6.5.3 比较和测试183
6.5.4 条约和分支指令183
6.5.5 循环186
6.5.6 字符串处理187
6.6.1 FS寄存器访问191
6.6 常见的汇编语言结构191
6.6.2 结构和类引用192
6.7 完整的例子194
6.8 Disassembly窗口197
6.8.1 导航功能197
6.8.2 在堆栈上查看参数198
6.8.3 Set Next Statement命令200
6.8.4 Memory窗口和Disassembly窗口201
6.9 技巧和诀窍204
6.9.1 Endians205
6.9.2 垃圾代码205
6.9.3 寄存器和Watch窗口205
6.10 小结206
6.9.4 从ASM文件中学习206
第7章 使用Visual Basic调试器进行强有力的调试207
7.1 Visual Basic P代码207
7.1.1 关于P代码的历史教训208
7.1.2 使用P代码衍生出来的问题209
7.2 错误陷阱:Break In或Break On选项211
7.2.1 Break On All Errors功能211
7.2.2 Break On Unhandled Errors功能项212
7.2.3 Break In Class Modules功能项212
7.2.4 对非常好的错误陷阱的最后一条要求212
7.3 Visual Basic调试窗口213
7.3.1 Locals窗口213
7.3.2 Immediate窗口214
7.3.3 Watch窗口215
7.4 技巧和窍门216
7.4.1 将Run To Cursor按钮添加到Debug工具栏上216
7.4.2 不要使用Compile On Demand功能216
7.4.3 Group Project(组合项目)是进行调试的好方法217
7.4.4 Visual Basic调试可能会与现实冲突217
7.5 小结217
第Ⅲ部分 功能强大的工具和技术221
第8章 仅通过崩溃地址就可以找出源代码信息和行信息221
8.1 创建和阅读MAP文件221
8.1.1 MAP文件的内容223
8.1.2 查找函数、源文件和代码行号226
8.2 使用CrashFinder实用程序227
8.2.1 实施要点229
8.3 CrashFinder之后是什么236
8.4 小结237
第9章 崩溃处理程序238
9.1 结构化异常处理与C++异常处理的比较238
9.1.1 结构化异常处理(SEH)239
9.1.2 C++异常处理242
9.1.3 结合使用SEH和C++异常处理243
9.2 SetUnhandledExceptionFilter API函数247
9.3 使用CrashHandler API函数248
9.4 转化EXCEPTION_POINTERS结构283
9.5 小结285
第10章 调试Windows 2000服务和加载到服务中的DLL286
10.1 服务的基本知识286
10.1.1 API问题287
10.1.2 安全性问题288
10.2 调试服务289
10.2.1 调试核心代码289
10.2.2 调试基本服务290
10.2.3 进行实际的调试294
10.3 小结294
第11章 多机器多进程跟踪295
11.1 TraceSrv要求295
11.2 TraceSrv和DCOMCNFG306
11.3 使用TraceSrv的初始化问题308
11.4 TraceView和安全性310
11.5 使用TraceSrv312
11.6 小结314
12.1.1 不要做它316
12.1 多线程提示和技巧316
第12章 多线程死锁316
12.1.2 只在很小的离散部分使用多线程317
12.1.3 在最低级别上同步317
12.1.4 检查代码-并再次检查代码317
12.1.5 在多处理器机器上进行测试318
12.2 DeadlockDetection的要求318
12.3 DeadlockDection的高级设计问题320
12.4 使用DeadlockDetection323
12.5 实现DeadlockDetection325
12.5.1 挂接导入的函数325
12.5.2 实现关键335
12.6 DeadlockDetection的下一步目标是什么?349
12.7 小结350
第13章 自动化测试351
13.1 单元测试的祸根:用户界面351
13.2 Tester要求352
13.3 使用Tester353
13.4 实现Tester358
13.5 Tester的下一步目标是什么?378
13.6 小结379
第14章 限制OutputDebugString调用380
14.1 Also-Ran解决方案380
14.2 LIMODS要求381
14.3 使用LIMODS382
14.3.1 与MFC共存382
14.3.2 从代码中调用LIMODS383
14.3.3 选择从哪个源文件中跟踪386
14.4 实现LIMODS387
14.4.1 确定源代码范围387
14.4.2 解释ROLOM文件388
14.4.3 从LOM文件中排除源文件389
14.4.4 LIMDOSDLL.DLL挂接什么390
14.4.5 处理_cdecl挂钩390
14.4.6 按序数值导出的挂接函数392
14.4.7 一般实现问题396
14.5 LIMODS的下一步目标397
14.6 小结398
第15章 调试C运行时间库399
15.1 调试C运行时间(DCRT)库的功能399
15.2 使用调试C运行时间(DCRT)库400
15.3 为应用程序选择正确的C运行时间库403
15.4 使用MemDumperValidator扩展程序404
15.4.1 在C++环境下使用MemDumperValidator扩展程序413
15.4.2 使用以C编写的MemDumperValidator414
15.4.3 深度确认415
15.5 MemDumperValidstor函数的实现419
15.5.1 C++中的初始化和终止421
15.5.2 所有的内存泄露报告都到何处去了422
15.6 使用MemStress扩展程序424
15.6.1 一个令人感兴趣的重要问题425
15.7 小结426
第Ⅳ部分 附录429
附录A 阅读Dr.Watson记录文件429
附录B 给Windows开发者的资源440
热门推荐
- 3643051.html
- 781148.html
- 161770.html
- 1621044.html
- 3758124.html
- 119134.html
- 1161779.html
- 773078.html
- 2129435.html
- 1412572.html
- http://www.ickdjs.cc/book_1435601.html
- http://www.ickdjs.cc/book_1090121.html
- http://www.ickdjs.cc/book_3074622.html
- http://www.ickdjs.cc/book_3194545.html
- http://www.ickdjs.cc/book_1192072.html
- http://www.ickdjs.cc/book_2594636.html
- http://www.ickdjs.cc/book_3171869.html
- http://www.ickdjs.cc/book_2440650.html
- http://www.ickdjs.cc/book_1375169.html
- http://www.ickdjs.cc/book_2133043.html