前言
第一章 简介和范围
1.1 事件驱动的范例
1.2 迎战错误
1.3 错误源和错误分类
1.4 最小化错误的数量
1.5 最小化错误的代价
1.6 章节概要
第二章 Win32的存储管理系统
2.1 虚拟地址空间
2.2 堆
2.3 堆函数
2.4 虚拟存储函数
2.5 章节概要
第三章 Visual C++的调试环境
3.1 断言(Assertion)
3.2 非法访问(Access Volation)
3.3 VERIFY
3.4 调试环境
3.5 调试和发布
3.6 映像文件(Map File)
3.7 C运行时库的支持
3.8 Dump函数
3.9 例外(Exception)
3.10 例外处理的比较:C++,MFC和Win32
3.11 返回值
3.12 类CMemoryState
3.13 钩住内存分配
3.14 类型转换(Casts)
3.15 GetLastError()
3.16 验证指针和字符串
3.17 章节概要
第四章 Visual C++调试器
4.1 纵览
4.2 调试工具条
4.3 Call Stack窗口
4.4 程序问题
4.5 DLL
4.6 just-in-time(现场)调试
4.7 Visual C++编译器错误
4.8 编译器的Pragma
4.9 代码移植
4.10 章节概要
第五章 其他的调试工具
5.1 MFC Tracer
5.2 Stress
5.3 Spy++
5.4 Browse
5.5 DDESpy
5.6 Profiler
5.7 Process Viewer
5.8 ErrLook工具
5.9 WinDiff工具
5.10 章节概要
第六章 商业的调试器和工程工具
6.1 BoundsChecker,vsual C++版
6.2 CodeWizard
6.3 代码管理系统(Code Management System)
6.4 程序测试
6.5 Microsoft Visual Test
6.6 BugCollector Pro
6.7 支持软件
6.8 章节概要
第七章 调试数据库程序
7.1 数据库设计和规范化
7.2 ODBC
7.3 DAO
7.4 选择数据库类
7.5 数据库错误
7.6 SQL
7.7 SQL调试的局限性
7.8 SQL数据类型
7.9 章节概要
第八章 常见的错误和特殊问题
8.1 bool的尺寸
8.2 非整数(non-integer)被零除
8.3 在调用-findfirst()或者-findmext()之后调用-findclose()
8.4 C的运行时-expand()函数失败后返回NULL
8.5 三元操作符(Ternary Conditional)
8.6 try块和Switch语句
8.7 sizeof()和数组
8.8 URLMON.DLL
8.9 非法访问(Access Violatlon)
8.10 排字错误
8.11 Clean命令文档中的错误
8.12 Windbg不能使用Visual C++ vs.0的调试信息
8.13 ATL发布版本中的错误
8.14 /WS:AGGRESSIVE链接器选项
8.15 选项优先和CL环境变量
8.16 /Zm选项
8.17 缺少的类型定义错误(Missing Type Definition Error)
8.18 关键字-emul()和-emulu()没有定义
8.19 链接器的/OPT:ICF选项
8.20 在装载NT符号的情况下调试Windows API函数
8.21 Resolving Error RC2104
8.22 编译警告(Level4)C4238
8.23 编译警告(Level3)C4800
8.24 编译警告(Level1)C4804
8.25 编译警告(Level1)C4806
8.26 编译警告(Level1)C4807
8.27 编译警告(Level1)C4808
8.28 章节概要
第九章 一般的Windows错误
9.1 位图按钮(Bitmapped Button)
9.2 单选按钮(Radio Button)成员变量
9.3 同库的连接
9.4 坐标系统(Coordinate System)
9.5 窗口句柄和设备上下文(Device Context)
9.6 字符串和数组
9.7 捕捉WM-HELP
9.8 章节概要
附录A ODBC错误码
附录B SQLState值
附录C DDEML错误码