欢迎光临本店     登录 注册   加入收藏
  •   
欢迎光临清华大学出版社第三事业部!

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

当前位置: 首页 > 外版图书 > 计算机与互联网 > Microsoft .NET和Windows应用程序调试

浏览历史

Microsoft .NET和Windows应用程序调试

Microsoft .NET和Windows应用程序调试

prev next

  • 商品货号:01182005-8-20-611
  • 商品重量:0克
    作者:(美)John Robbins 著 刘立宇 杜志秀 陈菊明 龚祥国 译
    图书书号/ISBN:7-302-08626-5
    出版日期:2004-06-01
    印张:43.25
    字数:1020千字
    开本:16
  • 上架时间:2005-09-04
    商品点击数:1192
  • 定价:¥82.00元
    本店售价:¥43.25元
    注册用户:¥43.25元
    vip:¥41.09元
    黄金等级:¥38.93元
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:

内容简介:

商品附加资源

本书是《应用程序调试技术》一书的更新版本。全书共分4大部分,分别是“调试概述”、“强大的调试技术”、“.NET的强大工具和技术”和“本机代码的强大工具和技术”。 作者以自己的多年编程和丰富的调试经验,全面介绍了各种调试,从XML Web服务和ASP.NET调试到Windows服务与异常的调试。还介绍了错误和故障的类型,各种调试器的功能和工作原理,以及本机代码和托管代码的调试等。 本书适用于有一定开发经验的中高级开发人员和调试人员。
第Ⅰ部分 调试概述 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.7 步骤7:开始大规模调试 23
1.3.8 步骤8:验证错误 已经被更正 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.5 QA必须测试调试版本 57
2.6 安装操作系统调试符号
并建立符号库 57
2.7 本章小结 66
第3章 边编码边调试 67
3.1 断言 68
3.1.1 如何断言以及断言什么 69
3.1.2 在.NET Windows窗体
或控制台应用程序中
设置断言 78
3.1.3 在ASP.NET程序和XML Web服务中设置断言 86
3.1.4 在本机C++程序中 设置断言 97
3.1.5 Visual C++中不同 类型的断言 101
3.1.6 SUPERASSERT 103
3.2 跟踪、跟踪、再跟踪 124
3.2.1 在Windows窗体应用和 控制台.NET应用程序中 跟踪 125
3.2.2 在ASP.NET应用程序和 XML WEB Services中 跟踪 127
3.2.3 在本机C++应用 程序中跟踪 129
3.3 注释、注释、再注释 130
3.4 信任自己,但要进行验证
(单元测试) 131
3.5 本章小结 133
第Ⅱ部分 强大的调试技术 135
第4章 操作系统对调试的支持以及 Win32调试器工作原理 137
4.1 Windows调试器的类型 138
4.1.1 用户模式调试器 138
4.1.2 内核模式调试器 140
4.2 Windows操作系统对调试
对象的支持 142
4.2.1 实时(JIT)调试 142
4.2.2 在调试器中自动启动 (映像文件执行选项) 146
4.3 MinDBG:一个简单的
Win32调试器 148
4.4 WDBG:真正的调试器 168
4.4.1 读/写内存 170
4.4.2 断点和单步执行 173
4.4.3 符号表、符号引擎和 堆栈遍历 178
4.4.4 Step Into、Step Over和 Step Out 185
4.5 编写您自己的调试器 186
4.6 对WDBG的改进建议 187
4.7 本章小结 188
第5章 Visual Studio .NET 调试器高级用法 189
5.1 高级断点及其用法 190
5.1.1 断点设置技巧 190
5.1.2 在任何函数位置 快速中断 192
5.1.3 位置断点智能特性 197
5.2 Watch窗口 200
5.2.1 在Watch窗口中 调用方法 202
5.2.2 Set Next Statement命令 203
5.3 本章小结 205
第6章 Visual Studio .NET 高级.NET调试 206
6.1 .NET程序中的高级断点 206
6.1.1 条件表达式 206
6.2 Watch窗口 211
6.2.1 自动展开自定义类型 211
6.3 提示与技巧 214
6.3.1 DebuggerStepThroughAttribute
和DebuggerHiddenAttribute 214
6.3.2 混合模式调试 215
6.3.3 远程调试 216
6.4 ILDASM和Microsoft中间语言 218
6.4.1 开始学习ILDASM 219
6.4.2 公共语言运行库 (CLR)基础 224
6.4.3 MSIL、局部变量和参数 225
6.4.4 重要指令 226
6.5 其他逆向工程工具 232
6.6 本章小结 233
第7章 Visual Studio .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.2 Watch窗口 243
7.2.1 数据的格式化和 表达式的计算 243
7.2.2 在Watch窗口中记录 代码执行时间 246
7.2.3 未归档的伪寄存器 246
7.2.4 自动展开自己的类型 246
7.3 远程调试 254
7.4 提示与技巧 256
7.4.1 调试插入的代码 256
7.4.2 Memory窗口和自动 内存计算 257
7.4.3 监视异常 257
7.4.4 处理符号的更多技巧 260
7.4.5 与Windows 2000 进程分离 260
7.4.6 处理转储文件 261
7.5 x86汇编语言 263
7.5.1 CPU基础 263
7.5.2 浅谈Visual C++ .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.13 Disassembly窗口 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.1 获得帮助信息 316
8.3.2 确保加载了正确的符号 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 神奇的扩展命令 338
8.5.1 加载和控制扩展 338
8.5.2 重要的扩展命令 339
8.6 处理转储文件 343
8.6.1 创建转储文件 343
8.6.2 打开转储文件 345
8.6.3 调试转储文件 346
8.7 Son of Strike (SOS)扩展 346
8.7.1 使用SOS 347
8.8 本章小结 353
第Ⅲ部分 .NET的强大调试 工具和技术 355
第9章 扩展Visual Studio .NET IDE 357
9.1 使用宏进行扩展 358
9.1.1 宏的参数 360
9.1.2 与项目有关的问题 361
9.1.3 代码元素 362
9.2 CommenTater:能解决共同
面临的棘手问题吗? 364
9.3 外接程序简介 372
9.3.1 修改外接程序向导 生成的代码 373
9.3.2 处理工具栏按钮问题 376
9.3.3 创建工具窗口 377
9.3.4 使用托管代码创建 选项属性页 379
9.4 SuperSaver外接程序 383
9.5 SettingsMaster外接程序 388
9.5.1 SettingsMaster的 实现要点 395
9.5.2 对SettingsMaster的 改进建议 396
9.6 本章小结 396
第10章 托管异常的监视 397
10.1 Profiling API简介 397
10.1.1 启动您的分析器 404
10.2 ProfilerLib 405
10.3 ExceptionMon 407
10.3.1 进程内调试与 ExceptionMon 408
10.4 .NET中异常的使用 414
10.5 本章小结 416
第11章 流程跟踪 417
11.1 在Profiling API中钩挂函数 417
11.1.1 请求Enter和 Leave通知 418
11.1.2 实现钩子函数 418
11.1.3 内联 419
11.1.4 FunctionIDMapper函数 420
11.2 使用FlowTrace 421
11.3 FlowTrace实现中的主要问题 422
11.4 对FlowTrace的改进建议 424
11.5 本章小结 424
第Ⅳ部分 本机代码的强大 调试工具和技术 425
第12章 通过崩溃时返回的地址 找到源文件和行信息 427
12.1 创建和读取MAP文件 429
12.1.1 MAP文件内容 430
12.1.2 寻找源文件、函数
名和行号 433
12.1.3 PDB2MAP-崩溃 发生后的Map文件 434
12.2 使用CrashFinder 437
12.2.1 实现要点 439
12.3 对CrashFinder的改进建议 446
12.4 本章小结 446
第13章 崩溃处理机制 447
13.1 结构化异常处理机制和
C++异常处理机制 448
13.1.2 结构化异常处理机制 448
13.1.2 C++异常处理机制 451
13.1.3 避免使用C++异常处理 452
13.1.4 不要使用_set_se_ translator 456
13.2 SetUnhandledExceptionFilter
API函数 457
13.3 使用CrashHandler API函数 459
13.4 转换EXCEPTION_POINTERS
结构 486
13.5 小型转储(Minidump) 488
13.5.1 MiniDumpWrite Dump API 488
13.5.2 关于MiniDumpWrite Dump 490
13.6 本章小结 498
第14章 调试Windows服务和 加载到服务中的DLL 499
14.1 服务的基础知识 499
14.1.1 API要点 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.2 DeadlockDetection的要求 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.1 Tester脚本 554
16.3.2 记录脚本 559
16.4 实现Tester 562
16.4.1 TESTER.DLL通知和 回放的实现 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.1 DCRT中的缺陷 594
17.2.2 DCRT函数 598
17.3 为应用程序选择合适的
C运行时库 599
17.4 使用MemDumperValidator 601
17.4.1 在C++中使用Men DumperValidator 608
17.4.2 在C语言中使用Men DumperValidator 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.3 FastTrace的实现 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

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha