Microsoft .NET和Windows应用程序调试PDF电子书下载
- 电子书积分:19 积分如何计算积分?
- 作 者:(美)John Robbins著;刘立宇等译
- 出 版 社:北京:清华大学出版社
- 出版年份:2004
- ISBN:7302086265
- 页数:673 页
第Ⅰ部分 调试概述 1
第1章 错误来源和除错方法 3
1.1错误及其调试 3
1.1.1什么是错误 4
1.1.2错误产生的原因和解决办法 7
1.1.3规划调试 14
1.2优秀调试人员的必备技能 15
1.2.1所需技能 15
1.2.2学习各种技能 17
1.3调试过程 18
1.3.1步骤1:重现错误 19
1.3.2步骤2:描述错误 20
1.3.3步骤3:总是假设是您自己造成的错误 21
1.3.4步骤4:分而治之 21
1.3.5步骤5:创造性地思考 21
1.3.6步骤6:借助于工具 22
1.3.8步骤8:验证错误已经被更正 23
1.3.7步骤7:开始大规模调试 23
1.3.9步骤9:学习和与人分享 25
1.3.10调试过程的最终秘密 25
1.3.11本章小结 25
第2章 开始调试 26
2.1跟踪所有更改直至项目完成 26
2.1.1版本控制系统 27
2.1.2错误跟踪系统 30
2.1.3选择适当的系统 31
2.2在进度表中安排时间建立调试系统 32
2.2.1保证所有版本中都带调试符号 33
2.2.2把托管代码中的编译警告视为编译错误 37
2.2.3对于本机代码将大多数编译警告视为编译错误 39
2.2.4了解本机代码中DLL的加载位置 42
2.2.5如何处理托管模块及其基址 46
2.2.6为发布版本设计轻量级的诊断系统 53
2.3必须进行频繁生成和冒烟测试 54
2.3.1频繁生成 54
2.3.2冒烟测试 55
2.4尽早创建安装程序 56
2.5QA必须测试调试版本 57
2.6安装操作系统调试符号并建立符号库 57
2.7本章小结 66
第3章 边编码边调试 67
3.1断言 68
3.1.1如何断言以及断言什么 69
3.1.2在.NETWindows窗体或控制台应用程序中设置断言 78
3.1.3在ASP.NET程序和XMLWeb服务中设置断言 86
3.1.4在本机C++程序中设置断言 97
3.1.5VisualC++中不同类型的断言 101
3.1.6SUPERASSERT 103
3.2跟踪、跟踪、再跟踪 124
3.2.1在Windows窗体应用和控制台.NET应用程序中跟踪 125
3.2.2在ASP.NET应用程序和XMLWEBServices中跟踪 127
3.2.3在本机C++应用程序中跟踪 129
3.3注释、注释、再注释 130
3.4信任自己,但要进行验证(单元测试) 131
3.5本章小结 133
第Ⅱ部分 强大的调试技术 135
第4章 操作系统对调试的支持以及Win32调试器工作原理 137
4.1Windows调试器的类型 138
4.1.1用户模式调试器 138
4.1.2内核模式调试器 140
4.2Windows操作系统对调试对象的支持 142
4.2.1实时(JIT)调试 142
4.2.2在调试器中自动启动(映像文件执行选项) 146
4.3MinDBG:一个简单的Win32调试器 148
4.4WDBG:真正的调试器 168
4.4.1读/写内存 170
4.4.2断点和单步执行 173
4.4.3符号表、符号引擎和堆栈遍历 178
4.4.4StepInto、StepOver和StepOut 185
4.5编写您自己的调试器 186
4.6对WDBG的改进建议 187
4.7本章小结 188
第5章 VisualStudio.NET调试器高级用法 189
5.1.1断点设置技巧 190
5.1高级断点及其用法 190
5.1.2在任何函数位置快速中断 192
5.1.3位置断点智能特性 197
5.2Watch窗口 200
5.2.1在Watch窗口中调用方法 202
5.2.2SetNextStatement命令 203
5.3本章小结 205
6.1.NET程序中的高级断点 206
6.1.1条件表达式 206
第6章 VisualStudio.NET高级.NET调试 206
6.2Watch窗口 211
6.2.1自动展开自定义类型 211
6.3提示与技巧 214
6.3.1DebuggerStepThroughAttribute和DebuggerHiddenAttribute 214
6.3.2混合模式调试 215
6.3.3远程调试 216
6.4ILDASM和Microsoft中间语言 218
6.4.1开始学习ILDASM 219
6.4.2公共语言运行库(CLR)基础 224
6.4.3MSIL、局部变量和参数 225
6.4.4重要指令 226
6.5其他逆向工程工具 232
6.6本章小结 233
第7章 VisualStudio.NET本机代码高级调试技术 234
7.1本机应用程序的高级断点 234
7.1.1高级断点语法 234
7.1.2系统或导出函数的断点 236
7.1.3条件表达式 238
7.1.4数据断点 240
7.1.5更好的数据断点 243
7.2Watch窗口 243
7.2.1数据的格式化和表达式的计算 243
7.2.2在Watch窗口中记录代码执行时间 246
7.2.3未归档的伪寄存器 246
7.2.4自动展开自己的类型 246
7.3远程调试 254
7.4.1调试插入的代码 256
7.4提示与技巧 256
7.4.2Memory窗口和自动内存计算 257
7.4.3监视异常 257
7.4.4处理符号的更多技巧 260
7.4.5与Windows2000进程分离 260
7.4.6处理转储文件 261
7.5x86汇编语言 263
7.5.1CPU基础 263
7.5.2浅谈VisualC++.NET内联汇编器 268
7.5.3您需要了解的指令 269
7.5.4通用序列:函数的入口和出口 272
7.5.5调用过程和返回 274
7.5.6调用约定 275
7.5.7变量访问:全局变量、参数和局部变量 280
7.5.8更多需要了解的指令 285
7.5.9字符串操作 290
7.5.10常见的汇编语言结构 294
7.5.11结构引用和类引用 296
7.5.12完整的示例 297
7.5.13Disassembly窗口 300
7.5.14手动查看堆栈 303
7.5.15提示与技巧 306
7.6本章小结 307
第8章 WinDBG的高级本机代码调试技术 309
8.1要点回顾 310
8.2基础知识 312
8.3调试环境 315
8.3.2确保加载了正确的符号 316
8.3.1获得帮助信息 316
8.3.3进程和线程 320
8.4使用Command窗口进行普通调试 325
8.4.1查看和计算变量 325
8.4.2执行、步进和跟踪 327
8.4.3断点 332
8.4.4异常和事件 334
8.4.5控制WinDBG 336
8.5.1加载和控制扩展 338
8.5神奇的扩展命令 338
8.5.2重要的扩展命令 339
8.6处理转储文件 343
8.6.1创建转储文件 343
8.6.2打开转储文件 345
8.6.3调试转储文件 346
8.7SonofStrike(SOS)扩展 346
8.7.1使用SOS 347
8.8本章小结 353
第Ⅲ部分 NET的强大调试工具和技术 355
第9章 扩展VisualStudio.NETIDE 357
9.1使用宏进行扩展 358
9.1.1宏的参数 360
9.1.2与项目有关的问题 361
9.1.3代码元素 362
9.2CommenTater:能解决共同面临的棘手问题吗? 364
9.3外接程序简介 372
9.3.1修改外接程序向导生成的代码 373
9.3.2处理工具栏按钮问题 376
9.3.3创建工具窗口 377
9.3.4使用托管代码创建选项属性页 379
9.4SuperSaver外接程序 383
9.5SettingsMaster外接程序 388
9.5.1SettingsMaster的实现要点 395
9.5.2对SettingsMaster的改进建议 396
9.6本章小结 396
10.1ProfilingAPI简介 397
第10章 托管异常的监视 397
10.1.1启动您的分析器 404
10.2ProfilerLib 405
10.3ExceptionMon 407
10.3.1进程内调试与ExceptionMon 408
10.4.NET中异常的使用 414
10.5本章小结 416
第11章 流程跟踪 417
11.1在ProfilingAPI中钩挂函数 417
11.1.2实现钩子函数 418
11.1.1请求Enter和Leave通知 418
11.1.3内联 419
11.1.4FunctionIDMapper函数 420
11.2使用FlowTrace 421
11.3FlowTrace实现中的主要问题 422
11.4对FlowTrace的改进建议 424
11.5本章小结 424
第Ⅳ部分 本机代码的强大调试工具和技术 425
第12章 通过崩溃时返回的地址找到源文件和行信息 427
12.1创建和读取MAP文件 429
12.1.1MAP文件内容 430
12.1.2寻找源文件、函数名和行号 433
12.1.3PDB2MAP—崩溃发生后的Map文件 434
12.2使用CrashFinder 437
12.2.1实现要点 439
12.3对CrashFinder的改进建议 446
12.4本章小结 446
第13章 崩溃处理机制 447
13.1.2结构化异常处理机制 448
13.1结构化异常处理机制和异常处理机制 448
13.1.2C++异常处理机制 451
13.1.3避免使用C++异常处理 452
13.1.4不要使用_set_se_translator 456
13.2SetUnhandledExceptionFilterAPI函数 457
13.3使用CrashHandlerAPI函数 459
13.4转换EXCEPTION_POINTERS结构 486
13.5小型转储(Minidump) 488
13.5.1MiniDumpWriteDumpAPI 488
13.5.2关于MiniDumpWriteDump 490
13.6本章小结 498
第14章 调试Windows服务和加载到服务中的DLL 499
14.1服务的基础知识 499
14.1.1API要点 500
14.1.2安全问题 501
14.2调试服务 502
14.2.1调试核心代码 502
14.2.2调试基本服务 503
14.3本章小结 509
第15章 多线程死锁 510
15.1多线程编程提示和技巧 510
15.1.1不要使用多线程 511
15.1.2不要过多使用多线程 511
15.1.3只在很小的离散程序段中使用多线程 511
15.1.4在最低级别同步 512
15.1.5旋转临界区 515
15.1.6不要使用CreateThread/ExitThread 516
15.1.7默认的内存管理器可能令程序失败 517
15.1.8当场进行转储 518
15.1.9检查代码——并再次检查代码 519
15.1.10在多处理器机器上进行测试 519
15.2DeadlockDetection的要求 522
15.3关于DeadlockDetection的高级设计问题 523
15.4使用DeadlockDetection 524
15.5实现DeadlockDetection 527
15.5.1钩挂导入函数 527
15.5.2实现要点 536
15.6对DeadlockDetection的改进建议 550
15.7本章小结 551
第16章 自动化测试 552
16.1单元测试的难点:用户界面 552
16.2对Tester的要求 553
16.3使用Tester 554
16.3.1Tester脚本 554
16.3.2记录脚本 559
16.4.1TESTER.DLL通知和回放的实现 562
16.4实现Tester 562
16.4.2实现TESTREC.EXE 578
16.5对Tester的改进建议 589
16.6本章小结 590
第17章 调试C运行时库和内存管理 591
17.1调试C运行时库的特性 592
17.2使用调试C运行时库 593
17.2.1DCRT中的缺陷 594
17.2.2DCRT函数 598
17.3为应用程序选择合适的C运行时库 599
17.4使用MemDumperValidator 601
17.4.1在C++中使用MenDumperValidator 608
17.4.2在C语言中使用MenDumperValidator 609
17.4.3深层验证 610
17.5实现MemDumperValidator 614
17.5.1在C++中初始化和终止 616
17.5.2泄漏报告都到哪儿去了? 617
17.6使用MemStress 617
17.6.1有趣的压力测试问题 619
17.7操作系统堆 620
17.8发现内存问题的技巧 622
17.8.1发现未初始化的内存写入问题 622
17.8.2发现内存溢出 623
17.9重要开关 629
17.9.1运行时检查开关 629
17.9.2缓冲区安全检查开关 635
17.10本章小结 636
第18章 FastTrace:用于服务器应用程序的高性能跟踪工具 637
18.1基本问题和解决方案 638
18.2使用FastTrace 638
18.2.1合并跟踪日志文件 640
18.3FastTrace的实现 641
18.4本章小结 641
第19章 优化工作集 642
19.1工作集调整 642
19.2使用SWS 646
19.2.1设置SWS编译 647
19.2.2使用SWS运行应用程序 648
19.2.3生成和使用排序文件 650
19.3实现SWS 651
19.3.1_penter函数 651
19.3.2.SWS文件格式和符号枚举 656
19.3.3运行时符号问题和模块调整 661
19.4对SWS的改进建议 664
19.5本章小结 664
附录A:阅读Dr.Watson日志 665
- 《钒产业技术及应用》高峰,彭清静,华骏主编 2019
- 《现代水泥技术发展与应用论文集》天津水泥工业设计研究院有限公司编 2019
- 《英汉翻译理论的多维阐释及应用剖析》常瑞娟著 2019
- 《数据库技术与应用 Access 2010 微课版 第2版》刘卫国主编 2020
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《虚拟流域环境理论技术研究与应用》冶运涛蒋云钟梁犁丽曹引等编著 2019
- 《当代翻译美学的理论诠释与应用解读》宁建庚著 2019
- 《第一性原理方法及应用》李青坤著 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《教师教育系列教材 心理学原理与应用 第2版 视频版》郑红,倪嘉波,刘亨荣编;陈冬梅责编 2020
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019