第一章 安装Borland C++ 1
1.1 安装Borland C++ 1
目录 1
1.1.1 保护模式和内存管理 2
1.3 HELPME!.DOC文件 4
1.2 README文件 4
1.1.2 运行BC 4
1.1.3 膝上计算机系统 4
1.5 用户化IDE 5
1.4 例程 5
2.1.1 命令行选项 6
2.1 启动和退出 6
第二章 集成环境(IDE)入门 6
2.2.1 菜单条与菜单 8
2.2 组成部分 8
2.1.2 退出Borland C++ 8
2.2.2 Borland C++窗口 12
2.2.4 对话框 14
2.2.3 状态行 14
2.3.1 配置文件 16
2.3 配置和工程文件 16
2.3.2 工程文件 17
2.4 Turbo C++ For Windows的IDE 18
3.1 使用工程管理程序 21
第三章 管理多文件工程 21
3.2 错误跟踪 23
3.2.2 多个源程序文件中的语法错误 24
3.2.1 中止制作 24
3.3 使用不同的文件编译程序 25
3.2.4 自依赖性检查 25
3.2.3 保存或删除消息 25
3.5 Project Manager的其它特点 27
3.4 覆盖库 27
3.5.1 查看工程中的文件 28
3.5.2 工程记事 29
4.1.2 运行BCC 30
4.1.1 DPMIINST 30
第四章 命令行编译器 30
4.1 使用命令行编译器 30
4.1.3 使用选项 31
4.1.4 语法和文件名 35
4.1.6 配置文件 36
4.1.5 应答文件 36
4.2.1 存储模式 37
4.2 编译器选项 37
4.2.3 代码生成选项 38
4.2.2 宏定义 38
4.2.6 出错报告选项 42
4.2.5 源代码选项 42
4.2.4 优化选项 42
4.2.7 段命名控制 44
4.2.8 编译控制选项 45
4.2.9 EMS和扩充内存选项 46
4.2.11 C++成员指针 47
4.2.10 C++虚表 47
4.2.12 模板生成选项 48
4.5 向前兼容性选项 49
4.4 环境选项 49
4.3 连接程序选项 49
4.5.1 查找包含文件和库文件 50
4.5.2 文件查找算法 51
5.1.1 用\续行 53
5.1 空白符 53
第五章 词法 53
5.1.2 注释 54
5.2.1 关键字 55
5.2 单词符号 55
5.2.2 标识符 56
5.2.3 常量 57
5.2.4 分隔符 64
6.1.1 对象 68
6.1 说明 68
第六章 语言结构 68
6.1.5 作用域 69
6.1.4 类型和存储类 69
6.1.2 Lvalue(左*))1.3 Rvalue(右值) 69
6.1.6 可见性 70
6.1.8 翻译单元 71
6.1.7 生存期 71
6.1.9 连接 72
6.2.1 临时定义 73
6.2 说明语法 73
6.2.2 可能的说明 74
6.2.3 外部说明和定义 75
6.2.4 类型说明符 76
6.2.5 类型分类 77
6.2.6 基类型 78
6.2.7 初始化 80
6.2.9 存储类说明符 81
6.2.8 简单说明 81
6.2.10 修饰符 83
6.2.11 复杂说明与说明符 87
6.3.3 指针说明 88
6.3.2 指向函数的指针 88
6.3 指针 88
6.3.1 指向对象的指针 88
6.3.4 指针与常量 89
6.3.6 指针转换 90
6.3.5 指针算术运算 90
6.5.1 声明与定义 91
6.5 函数 91
6.3.7 C++引用说明 91
6.4 数组 91
6.5.2 声明与原型 92
6.5.3 定义 93
6.5.5 函数调用与参数转换 94
6.5.4 形参声明 94
6.6.2 结构成员声明 95
6.6.1 无标记结构与typedef 95
6.6 结构 95
6.6.4 结构成员访问 96
6.6.3 结构与函数 96
6.6.5 结构字对齐 97
6.6.8 位段 98
6.6.7 不完整声明 98
6.6.6 结构名空间 98
6.7 联合 99
6.8 枚举 100
6.7.2 联合声明 100
6.7.1 匿名联合(仅用于C++) 100
6.9 表达式 102
6.9.3 出错与溢出 104
6.9.2 求值次序 104
6.9.1 表达式与C++ 104
6.11 操作符描述 105
6.10 操作符语义 105
6.11.1 双目操作符 106
6.11.3 后缀和前缀操作符 107
6.11.2 单目操作符 107
6.11.5 单目操作符 108
6.11.4 增量和减量操作符 108
6.11.8 加法类操作符 110
6.11.7 乘法类操作符 110
6.11.6 sizeof操作符 110
6.11.9 按位移位操作符 111
6.11.11 相等操作符 112
6.11.10 关系操作符 112
6.11.12 按位与操作符& 113
6.11.16 逻辑或操作符‖ 114
6.11.15 逻辑与操作符&& 114
6.11.13 按位异或操作符^ 114
6.11.14 按位或操作符| 114
6.11.18 赋值操作符 115
6.11.17 条件操作符?: 115
6.11.20 C++操作符 116
6.11.19 逗号操作符 116
6.12.1 块 117
6.12 语句 117
6.12.4 选择语句 118
6.12.3 表达式语句 118
6.12.2 带标号语句 118
6.12.5 循环语句 119
6.12.6 跳转语句 121
7.1.2 引用参数 123
7.1.1 简单引用 123
第七章 C++ 123
7.1 引用 123
7.3 new与delete操作符 125
7.2 作用域访问操作符 125
7.3.2 关于数组的new操作符 126
7.3.1 错误处理 126
7.3.5 带有new操作符的初始值 127
7.3.4 ∷operator new 127
7.3.3 关于数组的delete操作符 127
7.4.1 类名 128
7.4 类 128
7.4.4 类对象 129
7.4.3 类名作用域 129
7.4.2 类类型 129
7.4.8 关键字inline 130
7.4.7 关键字this 130
7.4.5 类成员表 130
7.4.6 成员函数 130
7.4.9 静态成员 133
7.4.10 成员作用域 134
7.4.11 基类与派生类的存取 137
7.6 类的友元 141
7.5 虚基类 141
7.7 构造函数与析构函数 142
7.8 构造函数 143
7.8.3 构造函数的重载 144
7.8.2 拷贝构造函数 144
7.8.1 缺省构造函数 144
7.8.4 构造函数的调用次序 145
7.8.5 类的初始化 146
7.9.1 析构函数的调用 148
7.9 析构函数 148
7.9.4 abort与析构函数 149
7.9.3 exit与析构函数 149
7.9.2 atexit,#pragma exit与析构函数 149
7.10 重载操作符 150
7.9.5 虚析构函数 150
7.11.1 重载操作符与继承 151
7.11 操作符函数 151
7.11.2 重载new和delete 152
7.11.4 重载双目操作符 153
7.11.3 重载单目操作符 153
7.11.8 重载类成员访问操作符 154
7.11.7 重载下标操作符 154
7.11.5 重载赋值操作符= 154
7.11.6 重载函数调用操作符() 154
7.12 虚函数 155
7.12.1 纯虚拟函数 161
7.13 抽象类 162
7.14.1 类作用域 163
7.14 C++作用域 163
7.15 模板 164
7.14.3 C++作用域规则小结 164
7.14.2 隐藏 164
7.15.1 模板函数 165
7.15.2 类模板 167
7.15.3 模板编译器开关选项 170
8.1.3 ios类 173
8.1.2 streambuf库 173
第八章 使用C++流 173
8.1 什么叫流 173
8.1.1 iostream库 173
8.3 输出cout 175
8.2 输入/输出 175
8.3.2 输出格式化 176
8.3.1 基本类型 176
8.3.3 操纵符 177
8.3.4 填充与补空 178
8.3.5 cerr和clog 179
8.4 输入cin 180
8.5 用户定义输入类型的I/O 181
8.6 简单文件I/O 182
8.7 串流处理 183
8.8 屏幕输出流 184
8.9.1 conbuf 185
8.9 流类参考 185
8.9.2 constream 186
8.9.4 fstream 187
8.9.3 filebuf 187
8.9.6 ifstream 188
8.9.5 fstreambase 188
8.9.7 ios 189
8.9.8 iostream 190
8.9.10 istream 191
8.9.9 iostream_withassign 191
8.9.13 ofstream 192
8.9.12 istrtream 192
8.9.11 istream_withassign 192
8.9.16 ostrstream 193
8.9.15 ostream_withassign 193
8.9.14 ostream 193
8.9.17 streambuf 194
8.9.18 strstreambase 195
8.9.20 strstream 196
8.9.19 strstreambuf 196
第九章 预处理器 197
9.2.1 简单的#define宏 198
9.2 #define与#undef伪指令 198
9.1 Null伪指令# 198
9.2.2 #undef伪指令 199
9.2.6 带参数的宏 200
9.2.5 关键字与保护字 200
9.2.3 -D与-U选项 200
9.2.4 Define选项 200
9.3 文件包含伪指令#include 202
9.4 条件编译 203
9.3.2 “header_name”形式的头文件搜索 203
9.3.1 <header_name>形式的头文件搜索 203
9.4.2 #ifdef和#ifndef条件伪指令 204
9.4.1 #if,#elif,#else和#endif条件伪指令 204
9.5 #line行控制伪指令 205
9.7 #pragma伪指令 206
9.6 #error伪指令 206
9.7.2 #pragma exit与#pragma starup 207
9.7.1 #pragma argused 207
9.7.7 #pragma option 208
9.7.6 #pragma intrinsic 208
9.7.3 #pragma hdrfile 208
9.7.4 #pragma hdrstop 208
9.7.5 #pragma inline 208
9.7.9 #pragma warn 209
9.7.8 #pragma saveregs 209
9.8.4 __cplusplus 210
9.8.3 __CDECL__ 210
9.8 预定义的宏 210
9.8.1 __BCPLUSPLUS__ 210
9.8.2 __BORLANDC__ 210
9.8.13 __TCPLUSPLUS__ 211
9.8.12 __STDC__ 211
9.8.5 __DATE__ 211
9.8.6 __DLL__ 211
9.8.7 __FILE__ 211
9.8.8 __LINE__ 211
9.8.9 __MSDOS__ 211
9.8.10 __OVERLAY__ 211
9.8.11 __PASCAL__ 211
9.8.17 _Windows 212
9.8.16 __TURBOC__ 212
9.8.14 __TEMPLATES__ 212
9.8.15 __TIME__ 212
10.1.1 参数传递系列 213
10.1 混合语言编程 213
第十章 BASM与嵌入式汇编 213
10.2.1 建立从Borland C++对.ASM的调用 215
10.2 从Borland C++调用.ASM 215
10.2.2 书写一个汇编语言子程序 218
10.2.3 用C++连接汇编程序模块 222
10.3 从汇编程序调用C和C++子程序 223
10.3.2 一个调用汇编模块的例子 224
10.3.1 建立 224
10.4.1 伪变量 226
10.4 伪变量、嵌入汇编和中断函数 226
10.4.2 嵌入汇编语言 228
10.4.3 中断函数 233
10.4.4 使用低级练习 234
第十一章 资源开发工具 236
11.1.2 Resource Workshop的启动 237
11.1.1 Resource Workshop的安装 237
11.1 简介 237
11.1.4 进入Help 238
11.1.3 退出Resource Workshop 238
11.2.2 资源类型 239
11.2.1 Windows资源的理解 239
11.2 Resource Workshop基础 239
11.2.3 两种类型的编辑器 241
11.2.4 资源文件类型 242
11.2.6 新用户必读 246
11.2.5 管理工程文件(工程窗口) 246
11.3 工程和资源操作 247
11.3.2 打开已存在的工程 248
11.3.1 新工程的建立 248
11.3.3 Project窗口的使用 249
11.3.4 资源操作 251
11.3.5 标识符的使用 254
11.3.6 保存资源、文件和工程 256
11.3.7 配置选择 257
11.3.9 二进制文件的操作 258
11.3.8 工程之间的资源复制 258
12.1 资源类型的建立 260
第十二章 用户定义资源的建立 260
12.3 编辑用户定义资源 261
12.2 用户定义资源的加入 261
12.3.2 保存在单独文件中的数据处理 262
12.3.1 在资源文本中加入数据 262
12.6 用户定义资源的删除 263
12.5 RCDATA资源类型的使用 263
12.4 用户定义资源的测试 263
13.1.1 DLL中的类 264
13.1 IMPDEF:模块定义管理程序 264
第十三章 输入库工具 264
13.2 IMPLIB:输入库 265
13.1.2 DLL中的函数 265
13.3 IMPLIBW:Windows输入库 266
13.2.1 重建IMPORT.LIB 266
13.3.2 创建输入库 267
13.3.1 选择输入库 267
14.1 MAKE是怎样工作的 268
第十四章 MAKE:程序管理器 268
14.2.1 命令行选项 269
14.2 启动MAKE 269
14.2.2 BULTIMS.MAK文件 270
14.3 MAKE的一种简单运用 271
14.4 创建makefile文件 272
14.5.1 隐式和显式规则的命令表 273
14.5 makefile文件的组成 273
14.5.2 显式规则 277
14.5.3 隐式规则 279
14.5.4 宏 280
14.5.6 点指令 285
14.5.5 指令 285
14.5.8 条件执行指令 287
14.5.7 文件嵌入指令 287
14.5.10 取消宏定义指令 289
14.5.9 出错指令 289
14.6 兼容选项—N 290
15.2 TLIB命令行 291
15.1 为什么使用目标模块库 291
第十五章 TLIB:Turbo库管理程序 291
15.2.1 操作表 292
15.4 创建一个扩展目录:/E选项 293
15.3 使用应答文件 293
15.7 例子 294
15.6 高级操作:/C选项 294
15.5 设置页大小:/P选项 294
16.1 调用TLINK 296
第十六章 TLINK:Turbo连接程序 296
16.1.2 Windows程序连接的一个例子 297
16.1.1 DOS下连接的一个例子 297
16.1.4 使用应答文件 298
16.1.3 TLINK命令行中的文件名 298
16.1.6 使用TLINK连接Borland C++模块 299
16.1.5 TLINK配置文件 299
16.2 TLINK选项 302
16.1.7 利用BCC使用TLINK 302
16.2.6 /d(重复符号) 303
16.2.5 /C(大小写敏感的exports) 303
16.2.1 TLINK配置文件 303
16.2.2 /3(80386 32位码) 303
16.2.3 /A(段对齐) 303
16.2.4 /c(大小写敏感) 303
16.2.10 /L(库查找路径) 304
16.2.9 /l(行号) 304
16.2.7 /e(不使用扩展目录) 304
16.2.8 /i(未初始化的尾部段) 304
16.2.11 /m,/s和/x(映象选项) 305
16.2.13 /o(覆盖) 306
16.2.12 /n(忽略缺省库) 306
16.2.16 /Td和/Tw(目标选项) 307
16.2.15 /t(微模式.COM文件) 307
16.2.14 /P(压缩代码段) 307
16.2.19 /yx(扩展内存) 308
16.2.18 /ye(扩充内存) 308
16.2.17 /v(调试信息) 308
16.3.2 一个例子 309
16.3.1 缺省模块定义文件 309
16.3 模块定义文件 309
16.4.1 CODE(代码) 310
16.4 模块定义引用 310
16.4.4 EXETYPE 311
16.4.3 DESCRIPTION(描述) 311
16.4.2 DATA(数据) 311
16.4.7 IMPORTS 312
16.4.6 HEAPSIZE 312
16.4.5 EXEPORTS 312
16.4.10 SEGMENTS 313
16.4.9 NAME(名) 313
16.4.8 LIBRARY(库) 313
16.4.12 STUB 314
16.4.11 STACKSIZE 314
17.1.3 优化选项 315
17.1.2 何时应使用优化程序 315
第十七章 重要参考 315
17.1 优化程序 315
17.1.1 优化的含义 315
17.1.7 死代码消除 317
17.1.6 全局寄存器分配 317
17.1.4 向前兼容 317
17.1.5 Borland C++优化程序剖析 317
17.1.9 循环静态代码的外移 318
17.1.8 公共子表达式消除 318
17.1.11 指针别名 319
17.1.10 拷贝传播 319
17.1.13 循环压缩 320
17.1.12 循环变量分析和强度消减 320
17.1.18 内部函数嵌入 321
17.1.17 抑制冗余加载 321
17.1.14 代码长度和速度优化 321
17.1.15 结构拷贝嵌入 321
17.1.16 代码压缩 321
17.1.21 参数规则 322
17.1.20 fastcall修饰符 322
17.1.19 寄存器参数传递 322
17.2 编辑器命令参考 323
17.1.22 函数命名 323
17.2.1 块命令 325
17.2.2 其它编辑命令 326
17.3.1 从DOS环境到Windows环境的方便转换 327
17.3 使用EasyWin 327
17.3.3 附加函数 328
17.3.2 _InitEasyWin() 328
17.4.3 使用预编译头文件 329
17.4.2 限制 329
17.4 预编译头文件 329
17.4.1 预编译头文件是如何工作的 329
17.4.6 优化预编译头文件 330
17.4.5 验证一致性 330
17.4.4 指定文件名 330
第十八章 Turbo Debugger简介 332
18.1 演示程序 333
18.2.2 状态行(status line) 334
18.2.1 菜单(menus) 334
18.2 使用Turbo Debugger 334
18.2.3 窗口(windows) 335
18.3 使用C演示程序 336
18.3.3 检查简单的C数据对象 337
18.3.2 利用检测(using watches) 337
18.3.1 设置断点(setting breakpoints) 337
18.4 使用Pascal示例程序 338
18.3.5 改变C数据值 338
18.3.4 考察复杂的C数据的对象 338
18.4.2 使用检测窗口(using watches) 339
18.4.1 设置断点(setting breakpoints) 339
18.4.5 改变Pascal数据值 340
18.4.4 检查复杂的Pascal数据对象 340
18.4.3 检查简单的Pascal数据对象 340
19.1.2 准备Turbo Pascal程序 342
19.1.1 准备Borland C++程序 342
第十九章 启动Turbo Debugger 342
19.1 准备待调试的程序 342
19.3 命令行选项 343
19.2 运行Turbo Debugger 343
19.1.3 准备Turbo汇编程序 343
19.3.5 击键记录(-k) 344
19.3.4 进程ID转换(-i) 344
19.3.1 装载配置文件(-c) 344
19.3.2 显示更新方式(-d) 344
19.3.3 获取帮助(-h和-?) 344
19.3.10 源代码处理(-s) 345
19.3.9 远程调试(-r) 345
19.3.6 汇编模式启动(-l) 345
19.3.7 设置堆大小(-m) 345
19.3.8 鼠标器支持(-p) 345
19.3.13 覆盖池大小(-y) 346
19.3.12 远程Windows调试(-w) 346
19.3.11 视频硬件(-v) 346
19.5.1 语言命令 347
19.5 选项菜单 347
19.4 配置文件 347
19.5.3 显示选择命令 348
19.5.2 宏菜单 348
19.6 在Turbo Debugger中运行DOS 349
19.5.6 恢复选项命令 349
19.5.4 源命令路径 349
19.5.5 保存选项命令 349
19.7 返回DOS 350
20.1.1 变量窗口 351
20.1 考察当前程序状态 351
第二十章 控制程序执行 351
20.1.2 Stack窗口 353
20.1.4 Get Info命令 354
20.1.3 Origin局部菜单命令 354
20.2.4 跳过一步(Step over) 357
20.2.3 跟踪进入(Trace into) 357
20.2 运行菜单 357
20.2.1 运行(Run) 357
20.2.2 执行到光标位置(Goto cursor) 357
20.2.8 反向跟踪(Back trace) 358
20.2.7 激活运行(Animate...) 358
20.2.5 执行到某处(Execute to...) 358
20.2.6 执行到返回(Until return) 358
20.3 Execution History窗口 359
20.2.11 程序复位(Program reset) 359
20.2.9 指令跟踪(Instruction trace) 359
20.2.10 参数(Argument...) 359
20.3.2 Keystroke Recording视窗 360
20.3.1 Instructions视窗 360
20.4.1 Ctrl-Break 361
20.4 中断程序执行 361
20.6.2 击键宏记录和重用 362
20.6.1 重新加载用户程序 362
20.5 程序终止 362
20.6 重新开始调试 362
20.8 改变程序参数 363
20.7 打开新的待调试程序 363
21.1.2 求值/修改(Evaluate/Modify) 364
21.1.1 考察(Inspect) 364
第二十一章 检查和修改数据 364
21.1 数据菜单(Data Menu) 364
21.3 检查窗口(Watch Window) 366
21.2 指向源文件的数据目标 366
21.1.3 增加检测项 366
21.1.4 函数返回值 366
21.3.1 Watches窗口的局部菜单 367
21.4.1 C数据Inspector窗口 368
21.4 Inspector窗口 368
21.4.2 Pascal数据检查窗口 369
21.4.3 汇编语言数据检查窗口 370
21.5.4 继承(Descend) 372
21.5.3 检查(Inspect) 372
21.5 Inspector窗口的局部菜单 372
21.5.1 范围(Range) 372
21.5.2 改变(Change) 372
21.5.6 强制类型转换(Type cast...) 373
21.5.5 新表达式…(New expression) 373
第二十二章 断点 374
22.2 断点窗口(Breakpoints) 375
22.1.6 全清(Delete all) 375
22.1 断点菜单(Breakpoints menu) 375
22.1.1 开关(Toggle) 375
22.1.2 在(At) 375
22.1.3 全局存储变化(Changed memory global) 375
22.1.4 全局表达式为真(Expression true global) 375
22.1.5 硬件断点(Hardware breakpoint) 375
22.2.1 断点窗口的局部菜单 376
22.2.2 断点选项(Breakpoint Options)对话框 377
22.2.3 Conditions和Actions对话框 378
22.3.3 内存变化断点(Changed memory breakpoint) 381
22.3.2 全局断点 381
22.3 断点的用户化 381
22.3.1 简单断点 381
22.3.5 硬件断点(Hardware breakpoint) 382
22.3.4 条件表达式 382
22.3.7 断点和模板 383
22.3.6 记载变量值 383
22.4.1 记载窗口局部菜单 384
22.4 记载窗口(Log Window) 384
23.1.1 模块窗口(Module) 386
23.1 审阅源程序文件 386
第二十三章 审阅和修改文件 386
23.1.2 Module窗口的局部菜单 387
23.2.1 文件窗口 388
23.2 审阅其它磁盘文件 388
23.2.2 文件窗口的局部菜单 389
24.1 为表达式计算选择语言 391
第二十四章 表达式 391
24.3.1 作用域覆盖语法 392
24.3 获取当前作用域以外的符号 392
24.2 代码地址、数据地址和行号 392
24.4 字节列表(Byte lists) 396
24.3.2 计算表达式的隐含作用域 396
24.5.2 寄存器伪变量 397
24.5.1 C符号 397
24.5 C表达式 397
24.5.4 转义序列 398
24.5.3 C常量和数据格式 398
24.5.6 在程序中执行C函数 399
24.5.5 C运算符及其优先级 399
24.5.8 C关键字和指针类型转换 400
24.5.7 带副作用的C表达式 400
24.6.4 Pascal运算符和优先级 401
24.6.3 Pascal字符串 401
24.6 Pascal表达式 401
24.6.1 Pascal标识符 401
24.6.2 Pascal常量和数据格式 401
24.7.2 汇编常量 402
24.7.1 汇编标识符 402
24.6.5 调用Pascal函数和过程 402
24.7 汇编表达式 402
24.8 格式控制 403
24.7.3 汇编操作码 403
25.1.1 对象类型列表 404
25.1 层次窗口(Hierarchy Window) 404
第二十五章 调试C++和面向对象的PASCAL程序 404
25.2 对象类型/类检查窗口 405
25.1.2 层次树视窗 405
25.2.1 对象类型/类检查窗口的局部菜单 406
25.3.1 对象实例检查窗口的局部菜单 407
25.3 对象实例检查窗口 407
25.3.2 中部视窗和底部视窗 408
26.2 CPU窗口 409
26.1 当源程序调试不够时 409
第二十六章 汇编级调试 409
26.3.1 反汇编 410
26.3 代码视窗 410
26.3.2 代码视窗局部菜单 411
26.4.1 寄存器视窗的局部菜单 413
26.4 寄存器和标志视窗 413
26.5.1 选择器视窗局部菜单 414
26.5 选择器视窗(Selector Pane) 414
26.4.2 标志视窗局部菜单 414
26.6.1 数据视窗的局部菜单 415
26.6 数据视窗 415
26.7.1 堆栈视窗的局部菜单 417
26.7 堆栈视窗 417
26.8.1 操作数地址前置词 418
26.8 汇编 418
26.10 寄存器窗口 419
26.9 转储窗口 419
26.8.2 操作数数据前置词 419
26.8.3 串指令 419
27.2.1 寄存器视窗 421
27.2 数学处理器窗口 421
第二十七章 80x87协处理器芯片和仿真器 421
27.1 80x87芯片及仿真器 421
27.2.2 控制视窗 422
27.2.3 状态视窗 423
28.1 热键 424
第二十八章 命令一览表 424
28.2 主菜单条的命令 425
28.2.4 浏览菜单(View Menu) 426
28.2.3 编辑菜单(Edit Menu) 426
28.2.1 ≡(系统)菜单(≡(System)Menu) 426
28.2.2 文件菜单(File Menu) 426
28.2.8 选项菜单(Options Menu) 427
28.2.7 数据菜单(Data Menu) 427
28.2.5 运行菜单(Run Menu) 427
28.2.6 断点菜单(Breakpoints Menu) 427
28.3 局部菜单命令 428
28.2.10 帮助菜单(Help Menu) 428
28.2.9 窗口菜单(Window Menu) 428
28.3.2 CPU窗口菜单(CPU Window Menus) 429
28.3.1 断点窗口(Break points Window) 429
28.3.5 文件窗口(File Window) 431
28.3.4 执行历史窗口(Execution History Window)菜单 431
28.3.3 转储窗口(Dump Window) 431
28.3.8 Windows消息(Windows Messages)窗口 432
28.3.7 模块窗口(Module Window) 432
28.3.6 记载窗口菜单(Log Window Menu) 432
28.3.11 层次窗口(Hierarchy Window) 433
28.3.10 数学处理器窗口(Numeric ProcessorWindow) 433
28.3.9 剪接窗口(Clipboard Window) 433
28.3.15 检测窗口菜单(Watches Window) 434
28.3.14 变量窗口(Variables Window) 434
28.3.12 寄存器窗口菜单(Register Window Menu) 434
28.3.13 堆栈视窗菜单(Stack Window) 434
28.3.18 对象/类实例检查窗口(Object/Class Instance Inspector Window) 435
28.3.17 对象类型/类检查窗口(Object Type/Class Inspector Window) 435
28.3.16 检查窗口(Inspector Window) 435
28.5 列表视窗 436
28.4 文本视窗 436
28.8 通配符搜索模板 437
28.7 窗口移动命令 437
28.6 输入框和历史列表框中的命令 437
28.9 完整的菜单树 438
29.2.1 运行整个程序 439
29.2 调试风格 439
第二十九章 调试技巧 439
29.1 当出现问题时 439
29.3.1 一般性错误 440
29.3 错误类型 440
29.2.2 逐步测试 440
29.3.2 C特有的错误 441
29.3.3 Pascal特有的错误 444
29.3.4 汇编特有的错误 449
29.5 调试(程序设计的一部分) 452
29.4.3 空数据输入 452
29.4 精确测试 452
29.4.1 测试边界条件 452
29.4.2 无效的数据输入 452
29.7.1 寻找错误 453
29.7 C调试过程 453
29.6 样例调试过程 453
29.7.4 检查 454
29.7.3 启动Turbo Debugger 454
29.7.2 确定解决方案 454
29.7.8 Eureka! 455
29.7.7 求值/修改对话框 455
29.7.5 断点 455
29.7.6 检测窗口 455
29.8.1 寻找错误 456
29.8 Pascal调试过程 456
29.8.2 确定解决方案 457
29.8.5 求值/修改对话框 458
29.8.4 巡查程序 458
29.8.3 启动Turbo Debugger 458
29.8.7 检测 459
29.8.6 检查 459
29.8.8 最后一个错误 460
30.3 开始虚拟调试 462
30.2 安装虚拟调试设备驱动程序 462
第三十章 80386处理器上的虚拟调试 462
30.1 虚拟调试所需设备 462
30.5 故障检查 464
30.4 一般调试和虚拟调试的区别 464
30.6 TD386错误信息 465
30.7 TDH386.SYS错误信息 466
31.4 保护模式的调试程序与Turbo Debugger的不同点 467
31.3 启动保护模式调试程序 467
第三十一章 用TD286在保护模式下调试 467
31.1 保护模式调试器的硬件要求 467
31.2 安装保护模式调试程序 467
31.6 在不同的机器上运行TD286 468
31.5 调试使用扩展内存的程序 468
32.1.1 调试TSR 469
32.1 什么是TSR 469
第三十二章 调试TDRs和设备驱动程序 469
32.2 什么是设备驱动程序 471
32.2.1 调试设备驱动程序 472
32.3 结束调试过程 473
33.1 命令行选项总结 475
第三十三章 Debugger参考资料 475
33.2.4 使用8087/80287数字协处理和模拟器 476
33.2.3 跟踪DOS和进程ID转换 476
33.2 技术资料 476
33.2.1 变化了的加载地址和内存自由空间 476
33.2.2 系统崩溃 476
33.2.9 EMS支持 477
33.2.8 存储分配 477
33.2.5 Turbo Debugger使用的中断 477
33.2.6 用INT3和INT1调试 477
33.2.7 显示保存和模式转换 477
33.3 嵌入汇编关键字 478
33.2.10 中断向量保存的恢复 478
33.4.1 运行TDINST 481
33.4 设置Turbo Debugger参数 481
33.4.2 设置屏幕颜色 482
33.4.3 设置Turbo Debugger的显示参数 483
33.4.4 Turbo Debugger的选项(Turbo Debugger Options) 485
33.4.6 命令行选项及其对应的安装设置 488
33.4.5 设置显示方式 488
33.4.7 完成设置后 490