前 言 1
第0章简 介 1
0.1 3.0版的新性能和所作的修改 1
目 录 1
0.2硬件及软件需求 2
0.3术语解释 2
0.4手册内容 3
第一章起 步 5
1.1产品磁盘和联机文本文件 5
1.1.1 README文件 5
1.1.2 HELPME!.TD文件 5
1.1.3 MANUAL.TD文件 5
1.3.1安装TDW的TDDEBUG.386 6
1.2 Turbo Debugger实用程序 6
1.3安装Turbo Debugger 6
1.4 DOS硬件调试 7
1.4.1 DOS硬件调试 7
1.4.2 Windows应用程序和硬件调试 7
1.5阅读建议 7
1.5.1正在学习Turbo语言的程序员 7
1.5.2已经用过Turbo语言的程序员 8
第二章调试与Turbo Debugger 9
2.1有错误吗 9
2.2错误在哪儿 9
2.3是什么错误 9
2.4改正错误 9
2.5Turbo Debugger能帮用户做什么 10
2.5.2 Turbo Debugger是怎样工作的 11
2.6Turbo Debugger的优势 11
2.5.1 Turbo Debugger不能做什么 11
2.6.1菜单与对话框 12
2.6.2了解现在在哪里 13
2.6.3历史经验 15
2.6.4递增匹配 16
2.6.5生成宏 16
2.6.6窗口介绍 16
2.6.7复制和传输 24
2.6.8获取帮助 27
第三章一个快速示例 31
3.1演示程序 31
3.2.1菜单(menus) 32
3.2使用Turbo Debugger 32
3.2.2状态行(status line) 33
3.2.3窗口(windows) 33
3.3使用C演示程序 34
3.3.1设置断点(Setting breakpoints) 35
3.3.2使用监视 36
3.3.3检查简单的C数据对象 37
3.3.4检查复杂的C数据的对象 37
3.3.5改变C数据值 38
3.4使用Pascal示例程序 39
3.4.1设置断点(Setting breakpoints) 40
3.4.2使用监视(Using watches) 41
3.4.4检查复杂的Pascal数据对象 42
3.4.3检查简单的Pascal数据对象 42
3.4.5改变Pascal数据值 43
第四章启动Turbo Debugger 45
4.1准备待调试的程序 45
4.1.1准备Borland C++程序 45
4.1.2准备Turbo Pascal程序 45
4.1.3准备Turbo汇编程序 45
4.2运行TurboDebugger 46
4.3命令行选择项 46
4.3.4进程ID转换(-i) 47
4.3.7设置堆大小(-m) 47
4.3.5击键记录(-k) 47
4.3.6汇编模式启动(-1) 47
4.3.3获取帮助(-h与-?) 47
4.3.2显示更新方式(-d) 47
4.3.1装载配置文件(-c) 47
4.3.8鼠标器支持(-p) 48
4.3.9远程调试(-r) 48
4.3.10源代码处理(-s) 48
4.3.11视频硬件(-v) 48
4.3.12远程窗口调试(-w) 49
4.3.13覆盖池大小(-y) 49
4.4配置文件 49
4.5选项菜单(Option Menu) 50
4.5.1语言命令 50
4.5.2宏菜单 50
4.5.3显示选项命令(Display Options) 51
4.5.5保存选择项命令(Save Options) 52
4.5.4 Path for Source命令 52
4.6在Turbo Debugger中运行DOS 53
4.7返回DOS 53
4.5.6恢复选择项命令 53
第五章控制程序执行 54
5.1检查当前程序状态 54
5.1.1变量窗口 54
5.1.2堆栈窗口(Stack Window) 57
5.1.3源(Origin)局部菜单命令 59
5.1.4获取信息(Get Info)命令 59
5.2.2执行到光标位置(Goto Cursor,F4) 63
5.2.3跟踪进入(Trace Into,F7) 63
5.2.1运行(Run,F9) 63
5.2运行菜单 63
5.2.4执行一步(Step Over,F8) 64
5.2.5执行到某处(Execute to...,Alt-F9) 65
5.2.6执行到返回(Until Return,Alt-F8) 65
5.2.7连续慢速执行(Animate...) 65
5.2.8反向跟踪(Back Trace,Alt-F4) 65
5.2.9指令跟踪(Instruction Trace,Alt-F7) 65
5.2.10参数(Argument...) 65
5.2.11程序复位(Program Reset,Ctrl-F2) 65
5.3执行历史窗口 66
5.3.1指令区 67
5.3.2击键记录区 67
5.6.1重新加载用户程序 69
5.6重新开始调试 69
5.4中断程序执行 69
5.4.1 Ctrl-Break 69
5.5程序终止 69
5.6.2击键宏记录和重用 70
5.7打开新的待调试程序 70
5.8改变程序参数 71
第六章检查和修改数据 72
6.1数据菜单(Data Menu) 72
6.1.1检查(Inspect...) 73
6.1.2求值/修改(Evaluate/Modify...) 73
6.2指向源文件的数据目标 75
6.3.1监视窗口的局部菜单 75
6.3监视窗口(Watch Window) 75
6.1.4函数返回值 75
6.1.3增加监视项(AddWatch...) 75
6.4检查窗口 77
6.4.1 C数据检查窗口 77
6.4.2 Pascal数据检查窗口 80
6.4.3汇编语言数据检查窗口 84
6.5检查窗口的局部菜单 87
6.5.1范围(Raage...) 87
6.5.2改变(Change...) 87
6.5.3检查(Inspect...) 88
6.5.4继承(Descend...) 88
6.5.5新表达式(New Expression...) 88
6.5.6强制类型转换(Type Cast...) 88
第七章断点 89
7.1断点菜单(The Breakpoints menu) 90
7.1.1设置或清除断点(Toggle) 90
7.1.2在…(At...) 90
7.1.3全局存贮变化(Changed memory global) 90
7.1.4全局表达式为真(Expression True Global) 90
7.1.5硬件断点(Hardware Breakpoint) 90
7.1.6全清(DeleteAll) 91
7.2断点窗口 91
7.2.1断点窗口的局部菜单 91
7.2.2断点选项(Breakpoint Options)对话框 94
7.2.3条件和行为对话框(Conditions and Actions) 96
7.3.1简单断点 98
7.3设置断点 98
7.3.2全局断点 99
7.3.3改变内存的断点 99
7.3.4条件表达式 99
7.3.5硬件断点 100
7.3.6记载变量值 100
7.3.7断点和模板 100
7.4记载窗口(Log Window) 101
7.4.1记载窗口局部菜单 102
第八章审阅和修改文件 103
8.1审阅源程序文件 103
8.1.1模块窗口 103
8.1.2模块窗口的局部菜单 104
8.2.1文件窗口 105
8.2审阅其它磁盘文件 105
8.2.2文件窗口的局部菜单 106
第九章表达式 108
9.1为计算表达式选择语言 108
9.2代码地址、数据地址和行号 109
9.3存取当前作用域以外的符号 109
9.3.1作用域重设句法 109
9.3.2表达式的隐含范围 112
9.4字节列表(Byte lists) 113
9.5 C表达式 113
9.5.1 C符号 113
9.5.2寄存器伪变量 113
9.5.3 C常量和格式 114
9.5.5 C运算符优先级 115
9.5.4转义序列 115
9.5.6在程序中执行C函数 116
9.5.7带副作用的C表达式 116
9.5.8 C关键字和类型转换 117
9.6 Pascal表达式 117
9.6.1 Pascal符号 117
9.6.2 Pascal常量和格式 117
9.6.3 Pascal字符串 118
9.6.4 Pascal运算符和优先级 118
9.6.5调用Pascal函数和过程 118
9.7汇编表达式 118
9.7.1汇编符号 118
9.8格式控制 119
9.7.2汇编常量 119
9.7.3汇编操作码 119
第十章调试C++和面向对象的PASCAL程序 121
10.1 层次窗口(The Hierarchy Window) 121
10.1.1对象类型列表(ObjectType List)区 121
10.1.2层次树区 122
10.2对象类型/类检查窗口 123
10.2.1对象类型/类检查窗口的局部菜单 124
10.3对象设例检查窗口 125
10.3.1对象/类设例检查窗口的局部菜单 126
10.3.2中区和底区 128
11.1当源程序级调试不够时 129
11.2 CPU窗口 129
第十一章汇编级调试 129
11.3代码区(Code pane) 130
11.3.1反汇编 131
11.3.2代码区局部菜单 131
11.4 寄存器区和标志位区 134
11.4.1寄存器区的局部菜单 134
11.4.2标志区局部菜单 136
11.5选择符区(Selector pane) 136
11.5.1选择符区局部菜单 136
11.6数据区 137
11.6.1数据区的局部菜单 137
11.7堆栈区 141
11.7.1堆栈区的局部菜单 141
11.8.1操作数地址长度重置 142
11.8汇编 142
11.8.2操作数数据长度重置 143
11.8.3串指令 143
11.9转储窗口 144
11.10寄存器窗口 144
第十二章80x87协处理器芯片和仿真器 145
12.1 80x87芯片和仿真器 145
12.2 数学处理器窗口(Numeric Processor) 145
2.2.1寄存器区 146
12.2.2控制区 147
12.2.3状态区 147
第十三章命令一览表 150
13.1热键(Hot Keys) 150
13.2.2文件菜单(File menu) 152
13.2.3浏览菜单(View menu) 152
13.2 主菜单的命令 152
13.2.1?(系统)菜单(?System menu) 152
13.2.4运行菜单(Run menu) 153
13.2.6断点菜单(Breakpoints menu) 153
13.2.6数据菜单(Data menu) 153
13.2.7选项菜单(Options menu) 153
13.2.8窗口菜单(Window menu) 153
13.2.9帮助菜单(Help menu) 154
13.3局部菜单命令 154
13.3.1断点窗口(Breakpoints Window) 154
13.3.2 CPU窗口的菜单(CPUWindow menus) 154
13.3.4文件窗口(File Window) 156
13.3.3转贮窗口(Dump Window) 156
13.3.5记载窗口菜单(Log Window Menu) 157
13.3.6模块窗口(Module Window) 157
13.3.7数学处理器窗口(Numeric Processor Window) 158
13.3.8层次窗口(Hierarchy Window) 158
13.3.9寄存器窗口菜单(Register Window Menu) 158
13.3.10堆栈窗口(Stack Window) 159
13.3.11变量窗口(Variables Window) 159
13.3.12监视窗口(Watches Window) 159
13.3.13检查窗口(Inspector Window) 159
13.3.14对象类型/类检查窗口(Object Type/Class Inspector Window) 160
13.3.15对象/类设例检查窗口(Object/Class Instance Inspector Window) 160
13.4文本区 160
13.5列表区 161
13.6输入框和历史列表框中的命令 162
13.7窗口移动命令 162
13.8通配符搜索模板 163
13.9完整的菜单树 163
第十四章调试技巧 165
14.1当出现问题时 165
14.2调试风格 165
14.2.1运行整个程序 165
14.2.2增量测量 166
14.3错误类型 166
14.3.1一般性错误 166
14.3.2 C特有的错误 167
14.3.3 Pascal特有的错误 170
14.3.4汇编特有的错误 175
14.4精确测试 178
14.4.1测试边界条件 178
14.4.2无效的数据输入 178
14.4.3空数据输入 178
14.5调试——程序设计的一部分 178
14.6样例调试过程 178
14.7 C调试过程 179
14.7.1寻找错误 179
14.7.2确定解决方案 179
14.7.3启动Turbo Debugger 179
14.7.7求值/修改对话框 180
14.7.6监视窗口 180
14.7.5断点 180
14.7.4检查 180
14.7.8 Eureka! 181
14.8 Pascal调试过程 181
14.8.1寻找错误 181
14.8.2确定解决方案 182
14.8.3启动Turbo Debugger 183
14.8.4巡查程序 183
14.8.5求值/修改对话框 183
14.8.6检查 183
14.8.7监视(Watchs) 184
14.8.8最后一个错误 185
15.3开始虚拟调试 186
15.2安装虚拟调试设备驱动程序 186
15.1虚拟调试所需设备 186
第十五章80386处理器上的虚拟调试 186
15.4一般调试和虚拟调试的区别 188
15.5通信 188
15.6 TD386错误信息 189
15.7TDH386.SYS错误信息 190
第十六章用TD286在保护模式下调试 191
16.1保护模式调试器的硬件要求 191
16.2安装保护模式调试器 191
16.3启动保护模式调试器 191
16.4保护模式的调试器与Turbo Debugger的不同点 191
16.5在不同的机器上运行TD286 192
17.2安装TDW 193
17.1运行TDW的要求 193
第十七章面向Windows的Turbo Debugger(TDW) 193
17.3配置TDW 194
17.3.1使用TDW选择项 194
17.3.2用TDINST设置TDW 194
17.4使用TDW 195
17.4.1记载窗口消息 196
17.4.2获得内存和模块列表 203
17.4.3调试动态连接库(DLL) 205
17.4.4将内存句柄转变为地址 209
17.4.5调试建议 209
17.5 TDW错误信息 210
18.1样例程序 211
18.2编译和连接演示程序 211
第十八章调试一个标准的Windows应用程序 211
18.3调试BCWDEMOA 212
18.3.1决策 212
18.3.2中止BCDEMOA 212
18.3.3记录消息 212
18.3.5发现错误 213
附录D设置Turbo Debugger参数 213
18.3.4分析消息记录 213
18.3.6终止BCWDEMOA 216
18.4调试BCWDEMOB 217
18.4.1 切换程序 217
18.4.2测试程序 217
18.4.3如何处理 217
18.4.5发现错误的卓有成效的方法 218
18.4.4 比较全局内存列表 218
第十九章调试ObjectWindows应用程序 221
19.1关于程序 221
19.1.1 Color Scribble窗口类型定义 222
19.1.2创建应用程序 223
19.2调试程序 223
19.2.1找出第一个错误 223
19.2.2找出笔颜色方面的错误 225
19.2.3找出离开窗口时的错误 227
19.2.4找出清除屏幕错误 229
第二十章调试TSRs和设备驱动程序 231
20.1什么是TSR 231
20.1.1调试TSR 231
20.2什么是设备驱动程序 233
20.2.1调试设备驱动程序 234
20.3结束调试过程 235
附录A命令行选择项 236
附录B技术资料 237
B.1变化了的加载地址和内存自由空间 237
B.2系统崩溃 237
B.3跟踪DOS和进程ID切换 237
B.1使用8087/80287数学协处理器和仿真器 238
B.5 Turbo Debugger使用的中断 238
B.6用INT 3和INT1调试 238
B.7显示保存和模式切换 238
B.10中断向量保存的恢复 239
B.9 EMS支持 239
B.8存储分配 239
附录C嵌入汇编关键字 240
D.1运行TDINST 243
D.1.1 TDINST命令行选项 243
D.2设置屏幕颜色 244
D.2.1设置屏幕颜色(Customizing screen colors) 244
D.2.2缺省颜色(The default Colors) 246
D.3设置TurboDebugger的显示参数 248
D.3.1显示切换(Display Swapping) 248
D.3.8允许43/50行显示(Petmit 43/50 Lines) 249
D.3.7快速屏幕更新(Fast Screen Update) 249
D.3.5制表长度(Tab Size) 249
D.3.6最多的监视项(Maximum Tiled Watch) 249
D.3.4屏幕行数(Screen Lines) 249
D.3.3初始显示(Beginning Display) 249
D.3.2整数格式(Integer Format) 249
D.3.9完整图形保存(Full Graphics Saving) 250
D.3.10用户屏幕更新(User ScreenUpdating) 250
D.3.11记载表长度 250
D.4 Turbo Debugger的选项(Turbo DebuggerOptions) 250
D.4.1目录(Directories...) 250
D.4.2输入与提示(Input and Prompting...) 250
D.4.3源(语言)调试(Source Debugging...) 252
E.3.2 配置WREMOTE 253
D.4.4杂类选项(Miscellaneous Options...) 253
D.5设置显示方式 255
D.6命令行选择项及其对应的安装设置 256
D.7完成设置后 257
D.7.1保存修改 257
D.7.2 退出TDINST 258
附录E远程调试 259
E.1硬件和软件要求 259
E.2调试远程DOS应用程序 260
E.2.1建立远程系统 260
E.2.2 配置TDREMOTE 260
E.2.3远程DOS驱动程序 261
E.2.4建立远程DOS连接 262
E.3调试远程Windows应用程序 262
E.3.1建立远程系统 262
E.3.4建立远程Windows链路 264
E.3.3启动远程Windows驱动程序 264
E.4加载程序到远程系统 265
E.5远程调试过程 265
E.6调试建议 266
E.6.1 TDREMOTE信息 266
E.6.2 WREMOTE消息 267
附录F对话框与错误信息 268
F.1提示框 268
F.2错误信息 272
F.2.1致命错误 272
F.2.2其它错误信息 273
F.3其它信息 283
G.1.2存取指针数据 284
G.1.3单步执行复杂表达式 284
G.1 Borland C++的提示 284
G.1.1作优化处理 284
附录G在不同语言下使用Turbo Debugger 284
G.2 Turbo汇编提示 285
G.2.1查看原始十六进制数 285
G.2.2源程序级调试 285
G.2.3检查和修改寄存器值 285
G.3Turbo Pascal的提示 285
G.3.1单步执行初始化代码 285
G.3.2单步执行出口过程 286
G.3.3常量 286
G.3.4字符串和集合在堆栈上的临时空间 286
G.3.5 灵活的类型强制转换(Type Casting) 286
G.3.6 Pascal的CPU窗口注意点 287