Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1710 mkiran 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
<!-- saved from url=(0057)http://www.objectcentral.com/vide/help/videdoc/bcc32.html -->
3
<HTML><HEAD><TITLE>vApp</TITLE>
4
<META http-equiv=Content-Type content="text/html; charset=windows-1252"><LINK 
5
href="vApp_files/vstyle.css" rel=StyleSheet>
6
<META content="MSHTML 6.00.2800.1522" name=GENERATOR></HEAD>
7
<BODY>
8
<CENTER><IMG height=72 alt="" src="vApp_files/vide.jpeg" width=72>&nbsp;<A 
9
href="http://www.objectcentral.com/vide/help/videdoc/videdoc.htm">VIDE&nbsp;User&nbsp;Guide</A> 
10
</CENTER>
11
<HR>
12
<A name=top></A>
13
<CENTER>
14
<H1>The Borland C++ Compiler 5.5</H1><BR>15 September 2000 </CENTER>
15
<UL>
16
  <LI><A 
17
  href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#getting">Getting 
18
  and Using the Free Borland C++ Compiler 5.5</A> 
19
  <LI><A 
20
  href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#Setup">Setting 
21
  up BCC 5.5</A> 
22
  <LI><A 
23
  href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#BCC-VIDE">Using 
24
  Borland C++ with VIDE</A> 
25
  <LI>BCC32 Quick Reference 
26
  <UL>
27
    <LI><A 
28
    href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#BCC32Switches">BCC32.EXE 
29
    Switches</A> 
30
    <LI><A 
31
    href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#ILINK32Switches">ILINK32.EXE 
32
    - Switches</A> 
33
    <LI><A 
34
    href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#BCCLibs">BCC32 
35
    Libraries</A> 
36
    <LI>Turbo Debugger Reference</A> 
37
    <UL>
38
      <LI><A 
39
      href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#TD32-cmdline">Command 
40
      Line Switches</A> 
41
      <LI><A 
42
      href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#TD32-keys">Keyboard 
43
      Command Shortcuts</A> 
44
      <LI><A 
45
      href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#TD32-help">TD 
46
      Help</A> </LI></UL></LI></UL>
47
  <LI><A 
48
  href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#OTHER">Other 
49
  sites with help for BCC 5.5</A> 
50
  <LI><A 
51
  href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#HELPME">Help 
52
  Improve VIDE for BCC</A> 
53
  <LI><A 
54
  href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#Disclaimer">Disclaimer</A> 
55
  </LI></UL>
56
<P>This document is intended to help you use the free version of the Borland C++ 
57
compiler with VIDE. The Borland compiler is a good compiler, but the free 
58
version has some deficiencies. VIDE provides a development environment that 
59
makes using BCC 5.5 much easier. The free version is also a bit thin on its 
60
documentation. This situation has improved, and this document will help any BCC 
61
5.5 user (with or without VIDE) use BCC 5.5 better. There is some important 
62
information about BCC 5.5 here that is very difficult to find elsewhere. 
63
<P><A name=getting></A>
64
<H2>Getting and Using the Free Borland C++ Compiler 5.5 &nbsp;<FONT size=1><A 
65
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2>
66
<P>The Borland C++ Compiler 5.5 is available at <A 
67
href="http://www.borland.com/bcppbuilder/freecompiler/">http://www.borland.com/bcppbuilder/freecompiler/</A>. 
68
You have to fill out a bunch of web forms, and eventually get to download the 
69
compiler. The download is about 8 Megabytes long. 
70
<P>Borland has made some service packs available to update the compiler. The 
71
latest full download on the Borland site will include the latest patches, but if 
72
you have a previous version of the compiler, you should apply the service packs. 
73
 
74
<P>At the same time you download the compiler, you should also down load the 
75
debugger, Turbo Debugger, TD32. VIDE supports starting TD32 from inside VIDE. 
76
You must use TD to set breakpoints and view the source, but the interaction is 
77
as painless as possible. 
78
<P>Borland has also made extra documentation available. Most of what you need is 
79
included with the compiler, but documentation on the C and C++ libraries are not 
80
included with the free compiler. The most helpful files you need are in 
81
B5STD.ZIP found at <A 
82
href="http://www.borland.com/techpubs/bcppbuilder/v5/updates/std.html">http://www.borland.com/techpubs/bcppbuilder/v5/updates/std.html</A>. 
83
That file is 7.5 MB, but is probably worth the download. 
84
<P>Once you download the compiler, the debugger, and the optional help files, 
85
you have to install them. The compiler and debugger downloads are 
86
self-extracting installers. It is probably a good idea to install them in the 
87
default location: <TT>c:\borland\bcc55</TT>. Once you've installed the compiler, 
88
you need to read the <TT>README.TXT</TT> file. It tells important details for 
89
installation. These details are summarized in this document as well. 
90
<P><A name=Setup></A>
91
<H2>Setting up BCC 5.5 &nbsp;<FONT size=1><A 
92
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2>
93
<H3>Configuration Files</H3>
94
<P>The most important thing you need to do is set up two configuration files on 
95
the <TT>\bin</TT> directory. The Borland instructions don't make that location 
96
clear. Assuming you installed the compiler to the default locations, you need to 
97
create two files. The first, <TT>C:\Borland\BCC55\bin\bcc32.cfg</TT> should 
98
contain: <BR><PRE>-I"c:\Borland\Bcc55\include"
99
-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"
100
</PRE>
101
<P>The second, <TT>C:\Borland\BCC55\bin\ilink32.cfg</TT> should contain: <BR><PRE>-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"
102
</PRE>
103
<P>The purpose of these two files is to allow the compiler to find the standard 
104
system include and library files. Note that the Borland README.TXT leaves out 
105
the <TT>\psdk</TT> entry. If you leave that out, then the compiler won't be able 
106
to find all the standard Windows API files contained there. 
107
<P>Also note that you can add other entries to these files to change the default 
108
behavior of the compiler. For example, you might want to add <TT>-wuse-</TT> to 
109
<TT>bcc32.cfg</TT> to stop the compiler from issuing warnings about variables 
110
that are declared but never used. See the next section on specific switches 
111
recommended for VIDE. 
112
<P>
113
<H3>Environment Path</H3>
114
<P>In addition to these two configuration files, you need to add the compiler 
115
<TT>\bin</TT> directory to the PATH environment variable. On Windows9x, you edit 
116
the file <TT>C:\autoexec.bat</TT>. Simply add <TT>c:\borland\bcc55\bin</TT> to 
117
the <TT>PATH</TT> command. On NT, you use the system settings menu off the Start 
118
menu to change the PATH in the environment. Note that if you are using VIDE, you 
119
will need to have the VIDE directory on your path, too. 
120
<P>
121
<H3><B><I>IMPORTANT WARNING!</I></B></H3>
122
<P>The standard Windows header files included with Borland BCC 5.5 (e.g., 
123
<TT>windows.h</TT>) are set up to compile Windows applications for Windows 2000! 
124
This is NOT documented anywhere in the help files that come with BCC 5.5. There 
125
are some significant differences in some Win32 API calls for Win2K and earlier 
126
Win95, Win98, and WinNT 4.0 versions. Code compiled for Win2K (which is the 
127
default) will not run correctly on older versions of Windows. Code compiled for 
128
older versions will run on Win2K. 
129
<P>You should consider adding the following 2 lines to your 
130
<TT>C:\Borland\BCC55\win32.cfg</TT> file if you want code that works on Windows 
131
versions prior to Win2K! <PRE>-DWINVER=0x0400
132
-D_WIN32_WINNT=0x0400
133
</PRE>
134
<P>These switches will be added to the compile line by VIDE, but it would be a 
135
good idea to include them in your bcc32.cfg file as well. 
136
<P>
137
<H3>General Notes</H3>
138
<P>Note that many switches can be negated by following it with a '-'. For 
139
example, '-v-' means no debugging information. 
140
<P>If you want to make any of these switches the default behavior, you can add 
141
them to the BCC32.CFG and ILINK32.CFG files in the <TT>/bin</TT> directory of 
142
the Borland command line tools. 
143
<P><A name=BCC-VIDE></A>
144
<H2>Using Borland C++ with VIDE &nbsp;<FONT size=1><A 
145
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2>
146
<P>
147
<H3>Using BCC32</H3>
148
<P>VIDE hides most of the details of using the command line tools from you. 
149
However, underneath it all, the command line tools are still there. This section 
150
explains some of the details of using VIDE with BCC32. 
151
<H4>Borland Configuration files</H4>
152
<P>It is <I>essential</I> that you have the two compiler <TT>.cfg</TT> files set 
153
up in the <TT>\bin</TT> directory. The following files are suggested: 
154
<P><B>bcc32.cfg</B> 
155
<P><PRE>-w
156
-I"c:\Borland\Bcc55\include"
157
-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"
158
</PRE>
159
<P>The '-w' switch turns on warnings. You might want to refine the with some 
160
'-wxxx-' switches to suppress some of the warnings. 
161
<P><B>ilink32.cfg</B> 
162
<P><PRE>-x
163
-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"
164
</PRE>
165
<P>The '-x' switch turns off the map file. If you want to supress incremental 
166
linking, you can add the '-Gn' switch. 
167
<P>
168
<P><A href="" name="VIDE Options"></A>
169
<H4>VIDE Options</H4>
170
<P>To use VIDE with the Borland compiler, you <I>MUST</I> set the path to the 
171
root of the compiler directory in the <B>Options-&gt;VIDE</B> dialog. You should 
172
set the <TT>Compiler root:</TT> value to the directory of the Borland compiler 
173
(not the \bin directory). If you installed BCC32 to the default directory, then 
174
this would be <TT>c:\Borland\bcc55</TT>. Note that if you've installed BCC32 to 
175
a directory with a space in its name, you need to enclose the path in quotation 
176
marks here. For example, <TT>"c:\Program Files\Borland\bcc55"</TT>. You should 
177
also select Borland BCC as the compiler in the Radio Button list. 
178
<P>
179
<H4>Default Project Values</H4>
180
<P>Depending on whether you generate GUI or a Console application, the VIDE 
181
project file sets some default values. These are visible in the 
182
<B>Project-&gt;Edit</B> project editor dialog. 
183
<P>The default compiler flags look like: <TT>-P&nbsp;-O1&nbsp;-v-</TT>. The 
184
<TT>-P</TT> switch means C++ files, <TT>-O1</TT> is optimization for size, and 
185
<TT>-v-</TT> turns off debugging. Remember that you may have already set other 
186
switches in the <TT>bcc32.cfg</TT> file in the Borland compiler directory. 
187
<P>The linker flags line looks like: 
188
<TT>-v-&nbsp;-Tpe&nbsp;-ap&nbsp;-c&nbsp;-limport32&nbsp;-l$(BCC32RTLIB)</TT>. 
189
These switches control the linker, and may change depending if you have a 
190
Console or GUI app. The last two values are the names of the run time libraries 
191
needed. <TT>Import32</TT> is always needed, and the other, <TT>BCC32RTLIB</TT> 
192
is the It can be a static or dynamic version, and <TT>cw32.lib</TT> static 
193
version is used by default. 
194
<P>The linker also must include a startup object code file, which varies for GUI 
195
("c0w32.obj") and console apps ("c0x32.obj"). There are also wide-char versions 
196
of these two startup libraries. You can override the defaults by changing the 
197
value of <TT>BCC32STARTUP</TT> in the Advanced tab of project editor. 
198
<P>
199
<P>
200
<H4>Runtime Libraries</H4>
201
<P>BCC32 comes with 4 runtime libraries. There are single threaded and 
202
multithreaded versions, and a static and dynamic version of each. The default 
203
library is "cw32.lib", the single-threaded static library. You can use the 
204
dynamic version of this library by changing the value of <TT>BCC32RTLIB</TT> in 
205
the advanced tab of the project editor to "cw32i" (no .lib, which is added 
206
automatically by VIDE). You also must either add the <TT>-D_RTLDLL</TT> define 
207
from the defines tab, or add the <TT>-tWR</TT> switch (<TT>-tWCR</TT> for 
208
console apps) to the compiler flags line, and recompile your program. You can do 
209
switch to the static multi-threaded library ("cw32mt") or dynamic library 
210
("cw32mti") in a similar fashion. 
211
<P>
212
<H4>DEF files</H4>
213
<P>You may have some projects that require a <TT>.DEF</TT> file. If you need 
214
one, got to the Advanced tab in the project editor You will find the symbol 
215
<TT>BCC32DEF</TT> predefined with no value. Simply edit this entry to add the 
216
name of your <TT>.DEF</TT> file after the =. The file will then be used by 
217
ILINK32. See Borland's documentation for more information about using 
218
<TT>.DEF</TT> files. 
219
<P>
220
<H4>Specifying Libraries</H4>
221
<P>VIDE allows you to specify libraries to link with on the <B>Linker flags</B> 
222
line of the Names tab of the project editor. This line is used for linker flags, 
223
<I>and</I> the names of libraries you need to add. You can see the default 
224
<TT>-limport32 -l$(BCC32RTLIB)</TT> when you create a new project. You can add 
225
your own library names to this line, preferably <I>before</I> the 
226
<TT>-limport32</TT> entry. This <TT>-l</TT> syntax is not part of the Borland 
227
command line options, but is converted by VIDE to the form appropriate in the 
228
generated Makefile. 
229
<P>
230
<H3>Using Turbo Debugger with VIDE</H3>
231
<P>Since Turbo Debugger 32 (TD32) is a stand alone debugger, the integration 
232
with VIDE is somewhat limited. The main thing you can do is automatically launch 
233
TD32 with the debug button on the VIDE tool bar. 
234
<P>If you are building a V application, you will see the TD CPU window when it 
235
starts. This is because <TT>WinMain</TT> is in the V startup code, and not your 
236
application code. To view source, you must view a module. Use the TD menu 
237
commands <B>View-&lt;Module</B> (or <B>F3</B>) to open the module (source file) 
238
with the code you want to debug. Non-V apps should start with the file with 
239
<TT>main</TT> or <TT>WinMain</TT> already shown. 
240
<P>Once you are running TD32, you use it to view the source code lines, set 
241
breakpoints, inspect variables, and all the usual debugging activities. When you 
242
find a bug, you then edit the source file with VIDE and recompile. Before you 
243
can recompile, you must quit TD32 (<B>Alt-X</B>). If you don't, you will get an 
244
error message from the linker. 
245
<P>When you then restart TD32, you should then see the message "Restart info is 
246
old, use anyhow?" If you answer "No", then all your old break points will be 
247
lost. If you answer yes, the breakpoints will still be there, and they get 
248
adjusted to the correct new line numbers if you've edited a file with 
249
breakpoints. Unfortunately, TD32 doesn't seem to know how to preserve open 
250
module windows. 
251
<P>If you are debugging a new or different project, you should answer "No" to 
252
the "Restart info" question the first time. 
253
<P>
254
<H2>BCC32 Quick Reference</H2><A name=BCC32Switches></A>
255
<H3>BCC32.EXE Switches &nbsp;<FONT size=1><A 
256
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3>
257
<TABLE width="90%" border=1>
258
  <TBODY>
259
  <TR>
260
    <TD><B>switch</B></TD>
261
    <TD><B>Switch Description</B></TD></TR>
262
  <TR>
263
    <TD><B>+filename</B></TD>
264
    <TD>Use alternate configuration file named filename</TD></TR>
265
  <TR>
266
    <TD><B>@filename</B></TD>
267
    <TD>Read compiler options from the response file filename</TD></TR>
268
  <TR>
269
    <TD><B>-3</B></TD>
270
    <TD>Generate 80386 protected-mode compatible instructions. (Default for 
271
      32-bit compiler)</TD></TR>
272
  <TR>
273
    <TD><B>-4</B></TD>
274
    <TD>Generate 80386/80486 protected-mode compatible instructions.</TD></TR>
275
  <TR>
276
    <TD><B>-5</B></TD>
277
    <TD>Generate Pentium protected-mode compatible instructions.</TD></TR>
278
  <TR>
279
    <TD><B>-6</B></TD>
280
    <TD>Generate Pentium Pro protected-mode compatible instructions.</TD></TR>
281
  <TR>
282
    <TD><B>-a</B></TD>
283
    <TD>Default (-a4) data alignment; -a- is byte.</TD></TR>
284
  <TR>
285
    <TD><B>-an</B></TD>
286
    <TD>Align to n. 1=byte, 2=word (2 bytes), 4=double word (default), 8=quad 
287
      word (8 bytes), 16=paragraph (16 bytes)</TD></TR>
288
  <TR>
289
    <TD><B>-A</B></TD>
290
    <TD>Use only ANSI keywords. (Extensions like the far and near modifier no 
291
      longer recognized.)</TD></TR>
292
  <TR>
293
    <TD><B>-A-</B> (Default)</TD>
294
    <TD>Enable Borland C++ keyword extensions: near, far, huge, asm, cdecl, 
295
      pascal, interrupt, _export, _ds, _cs, _ss, _es.</TD></TR>
296
  <TR>
297
    <TD><B>-AK</B></TD>
298
    <TD>Use only K&amp;R keywords.</TD></TR>
299
  <TR>
300
    <TD><B>-AT</B></TD>
301
    <TD>Use Borland C++ keywords (Alternately specified by -A-)</TD></TR>
302
  <TR>
303
    <TD><B>-AU</B></TD>
304
    <TD>Use UNIX V keywords. (Extensions like the far and near modifier no 
305
      longer recognized.)</TD></TR>
306
  <TR>
307
    <TD><B>-b</B></TD>
308
    <TD>Make enums always integer-sized. (Default: -b make enums integer 
309
    size)</TD></TR>
310
  <TR>
311
    <TD><B>-B</B></TD>
312
    <TD>Compiles assembly and calls TASM or TASM32. If you don't have TASM in 
313
      your path, checking this option generates an error. Also, old versions of 
314
      TASM might have problems with 32-bit generated assembler code.</TD></TR>
315
  <TR>
316
    <TD><B>-c</B></TD>
317
    <TD>Compile source files, but does not execute a link command.</TD></TR>
318
  <TR>
319
    <TD><B>-C</B></TD>
320
    <TD>Turn nested comments on. (Default: -C- turn nested comments 
321
off.)</TD></TR>
322
  <TR>
323
    <TD><B>-d</B></TD>
324
    <TD>Merge duplicate strings. (Default)</TD></TR>
325
  <TR>
326
    <TD><B>-Didentifier</B></TD>
327
    <TD>Define identifier to the null string.</TD></TR>
328
  <TR>
329
    <TD><B>-Didentifier=string</B></TD>
330
    <TD>Define identifier to string.</TD></TR>
331
  <TR>
332
    <TD><B>-efilename</B></TD>
333
    <TD>Derives the executable program's name from filename by adding the file 
334
      extension .EXE (the program name is then filename.EXE). filename must 
335
      immediately follow the -e, with no intervening whitespace. Without this 
336
      option, the linker derives the .EXE file's name from the name of the first 
337
      source or object file in the file name list.</TD></TR>
338
  <TR>
339
    <TD><B>-Efilename</B></TD>
340
    <TD>Use filename as the name of the assembler to use. (Default = 
341
  TASM)</TD></TR>
342
  <TR>
343
    <TD><B>-f</B></TD>
344
    <TD>Emulate floating point. (Default)</TD></TR>
345
  <TR>
346
    <TD><B>-f-</B></TD>
347
    <TD>No Floating Point</TD></TR>
348
  <TR>
349
    <TD><B>-ff</B></TD>
350
    <TD>Fast floating point. (Default)</TD></TR>
351
  <TR>
352
    <TD><B>-F</B></TD>
353
    <TD>Uses fast huge pointers.</TD></TR>
354
  <TR>
355
    <TD><B>-Ff</B></TD>
356
    <TD>Create far variables automatically.</TD></TR>
357
  <TR>
358
    <TD><B>-Ff=1</B></TD>
359
    <TD>Array variable 'identifier' is near warning. (Default)</TD></TR>
360
  <TR>
361
    <TD><B>-Fm</B></TD>
362
    <TD>Enables all the other -F options (-Fc, -Ff, and -Fs). Use this to 
363
      quickly port code from other 16-bit compilers.</TD></TR>
364
  <TR>
365
    <TD><B>-gb</B></TD>
366
    <TD>Stop batch compilation after first file with warnings (Default: 
367
    -gb-).</TD></TR>
368
  <TR>
369
    <TD><B>-gn</B></TD>
370
    <TD>Stop compiling after n messages. (Default: 255.)</TD></TR>
371
  <TR>
372
    <TD><B>-G</B></TD>
373
    <TD>Optimize code for speed. (Default: -G- optimize code for size.)</TD></TR>
374
  <TR>
375
    <TD><B>-H</B></TD>
376
    <TD>Generate and use precompiled headers. It might be called 
377
    BC32DEF.CSM.</TD></TR>
378
  <TR>
379
    <TD><B>-H-</B>(Default)</TD>
380
    <TD>Does not generate and use precompiled headers.</TD></TR>
381
  <TR>
382
    <TD><B>-Hfilename</B></TD>
383
    <TD>Sets the name of the file for precompiled headers</TD></TR>
384
  <TR>
385
    <TD><B>-H=filename</B></TD>
386
    <TD>Set the name of the file for precompiled headers to filename.</TD></TR>
387
  <TR>
388
    <TD><B>-Hc</B></TD>
389
    <TD>Cache precompiled headers. Use with -H, -Hxxx, -Hu, or -Hfilename. 
390
      This option is useful when compiling more than one precompiled 
391
  header.</TD></TR>
392
  <TR>
393
    <TD><B>-Hu</B></TD>
394
    <TD>Use but do not generate precompiled headers.</TD></TR>
395
  <TR>
396
    <TD><B>-in</B></TD>
397
    <TD>Make significant identifier length to be n, where n is between 8 and 
398
      250. (Default = 250)</TD></TR>
399
  <TR>
400
    <TD><B>-Ipath</B></TD>
401
    <TD>Set search path for directories for include files to path.</TD></TR>
402
  <TR>
403
    <TD><B>-jb</B></TD>
404
    <TD>Stop batch compilation after first file with errors. (default: 
405
  off)</TD></TR>
406
  <TR>
407
    <TD><B>-jn</B></TD>
408
    <TD>Errors: stop after n messages. (Default = 25)</TD></TR>
409
  <TR>
410
    <TD><B>-Ja</B></TD>
411
    <TD>Expand all template members, including unused members.</TD></TR>
412
  <TR>
413
    <TD><B>-Jg</B></TD>
414
    <TD>Generate definitions for all template instances and merge duplicates. 
415
      (Default)</TD></TR>
416
  <TR>
417
    <TD><B>-Jgd</B></TD>
418
    <TD>Generate public definitions for all template instances; duplicates 
419
      result in redefinition errors.</TD></TR>
420
  <TR>
421
    <TD><B>-Jgx</B></TD>
422
    <TD>Generate external references for all template instances.</TD></TR>
423
  <TR>
424
    <TD><B>-k</B></TD>
425
    <TD>Turn on standard stack frame. (Default)</TD></TR>
426
  <TR>
427
    <TD><B>-k-</B></TD>
428
    <TD>Turn off standard stack frame. Generates smaller code, but it can't be 
429
      easily debugged.</TD></TR>
430
  <TR>
431
    <TD><B>-K</B></TD>
432
    <TD>Default character type unsigned. (Default: -K- default character type 
433
      signed.)</TD></TR>
434
  <TR>
435
    <TD><B>-lx</B></TD>
436
    <TD>Pass option x to the linker. More than one option can appear after the 
437
      -l (which is a lowercase L).</TD></TR>
438
  <TR>
439
    <TD><B>-l-x</B></TD>
440
    <TD>Disable option x for linker.</TD></TR>
441
  <TR>
442
    <TD><B>-Lpath</B></TD>
443
    <TD>Set search path for library files.</TD></TR>
444
  <TR>
445
    <TD><B>-M</B></TD>
446
    <TD>Instruct linker to create a full link map.</TD></TR>
447
  <TR>
448
    <TD><B>-npath</B></TD>
449
    <TD>Set the output directory to path.</TD></TR>
450
  <TR>
451
    <TD><B>-O</B></TD>
452
    <TD>Optimize jumps. (Default: on)</TD></TR>
453
  <TR>
454
    <TD><B>-O1</B></TD>
455
    <TD>Generate smallest possible code.</TD></TR>
456
  <TR>
457
    <TD><B>-O2</B></TD>
458
    <TD>Generate fastest possible code.</TD></TR>
459
  <TR>
460
    <TD><B>-Od</B></TD>
461
    <TD>Disable all optimizations.</TD></TR>
462
  <TR>
463
    <TD><B>-Ox</B></TD>
464
    <TD>There are a bunch of tiny optimizations, but it is probably only 
465
      necessary to used -O1 and -O2, so they are not covered here.</TD></TR>
466
  <TR>
467
    <TD><B>-OS</B></TD>
468
    <TD>Pentium instruction scheduling. (Default: off: -O-S)</TD></TR>
469
  <TR>
470
    <TD><B>-p</B></TD>
471
    <TD>Use Pascal calling convention. (This is a lowercase p.)</TD></TR>
472
  <TR>
473
    <TD><B>-pc</B></TD>
474
    <TD>Use C calling convention. (Default same as -pc or -p-)</TD></TR>
475
  <TR>
476
    <TD><B>-pr</B></TD>
477
    <TD>Use fastcall calling convention for passing parameters in 
478
  registers.</TD></TR>
479
  <TR>
480
    <TD><B>-ps</B></TD>
481
    <TD>Use stdcall calling convention (32-bit compiler only).</TD></TR>
482
  <TR>
483
    <TD><B>-P</B></TD>
484
    <TD>Perform a C++ compile regardless of source file extension. (Default 
485
      when extension is not specified. This is an uppercase P.)</TD></TR>
486
  <TR>
487
    <TD><B>-Pext</B></TD>
488
    <TD>Perform a C++ compile regardless of source file extension and set the 
489
      default extension to ext. This option is available because some 
490
      programmers use .C or another extension as their default extension for C++ 
491
      code.</TD></TR>
492
  <TR>
493
    <TD><B>-q</B></TD>
494
    <TD>Quiet - suppress compiler banner.</TD></TR>
495
  <TR>
496
    <TD><B>-r</B></TD>
497
    <TD>Use register variables. (Default)</TD></TR>
498
  <TR>
499
    <TD><B>-rd</B></TD>
500
    <TD>Allow only declared register variables to be kept in registers.</TD></TR>
501
  <TR>
502
    <TD><B>-R</B></TD>
503
    <TD>Include browser information in generated .OBJ files.</TD></TR>
504
  <TR>
505
    <TD><B>-RT</B></TD>
506
    <TD>Enable runtime type information. (Default)</TD></TR>
507
  <TR>
508
    <TD><B>-S</B></TD>
509
    <TD>Generate assembler source compiles the named source files and produces 
510
      assembly language output files (.ASM), but does not assemble. When you use 
511
      this option, Borland C++ includes the C or C++ source lines as comments in 
512
      the produced .ASM file.</TD></TR>
513
  <TR>
514
    <TD><B>-tW</B></TD>
515
    <TD>Make the target a Windows .EXE with all functions exportable. 
516
    (Default)</TD></TR>
517
  <TR>
518
    <TD><B>-tWC</B></TD>
519
    <TD>Make the target a console .EXE.</TD></TR>
520
  <TR>
521
    <TD><B>-tWD</B></TD>
522
    <TD>Make the target a Windows .DLL with all functions exportable.</TD></TR>
523
  <TR>
524
    <TD><B>-tWM</B></TD>
525
    <TD>Make a multithreaded application or DLL.</TD></TR>
526
  <TR>
527
    <TD><B>-tWR</B></TD>
528
    <TD>Target uses the dynamic runtime lib. Can use -D_RTLDLL instead.</TD></TR>
529
  <TR>
530
    <TD><B>-tWCR</B></TD>
531
    <TD>Target uses the dynamic runtime lib for CONSOLE apps.</TD></TR>
532
  <TR>
533
    <TD><B>-T-</B></TD>
534
    <TD>Remove all previous assembler options.</TD></TR>
535
  <TR>
536
    <TD><B>-Tstring</B></TD>
537
    <TD>Pass string as an option to TASM, TASM32, or assembler specified with 
538
      -E.</TD></TR>
539
  <TR>
540
    <TD><B>-u</B></TD>
541
    <TD>Generate underscores for symbols. (Default)</TD></TR>
542
  <TR>
543
    <TD><B>-Uname</B></TD>
544
    <TD>Undefines any previous definitions of the named identifier name.</TD></TR>
545
  <TR>
546
    <TD><B>-v</B></TD>
547
    <TD>Turn on source debugging.</TD></TR>
548
  <TR>
549
    <TD><B>-vi</B></TD>
550
    <TD>Turn on inline expansion (-vi- turns off inline expansion).</TD></TR>
551
  <TR>
552
    <TD><B>-V</B></TD>
553
    <TD>Create smart C++ virtual tables. (Default) This means the .objs are 
554
      compatible only with Borland tools. The V0 and V1 can apparently be used 
555
      with other tools, but why?</TD></TR>
556
  <TR>
557
    <TD><B>-V0</B></TD>
558
    <TD>Create external C++ virtual tables.</TD></TR>
559
  <TR>
560
    <TD><B>-V1</B></TD>
561
    <TD>Create public C++ virtual tables.</TD></TR>
562
  <TR>
563
    <TD><B>-Vmd</B></TD>
564
    <TD>Use the smallest representation for member pointers.</TD></TR>
565
  <TR>
566
    <TD><B>-Vmm</B></TD>
567
    <TD>Member pointers support multiple inheritance.</TD></TR>
568
  <TR>
569
    <TD><B>-Vmp</B></TD>
570
    <TD>Honor the declared precision for all member pointer types.</TD></TR>
571
  <TR>
572
    <TD><B>-Vms</B></TD>
573
    <TD>Member pointers support single inheritance.</TD></TR>
574
  <TR>
575
    <TD><B>-Vmv</B></TD>
576
    <TD>Member pointers have no restrictions (most general representation). 
577
      (Default)</TD></TR>
578
  <TR>
579
    <TD><B>-Vx</B></TD>
580
    <TD>Zero-length empty class member functions.</TD></TR>
581
  <TR>
582
    <TD><B>-w</B></TD>
583
    <TD>Display warnings on.</TD></TR>
584
  <TR>
585
    <TD><B>-w!</B></TD>
586
    <TD>Do not compile to .OBJ if warnings were found. (Note: there is no 
587
      space between the -w and the !.)</TD></TR>
588
  <TR>
589
    <TD><B>-wmsg</B></TD>
590
    <TD>Enable user define #pragma messages.</TD></TR>
591
  <TR>
592
    <TD><B>-w-xxx</B></TD>
593
    <TD>Disable xxx warning message.</TD></TR>
594
  <TR>
595
    <TD><B>-wxxx</B></TD>
596
    <TD>Enable xxx warning message. 
597
      <UL>
598
        <LI>amb -Ambiguous operators need parentheses. 
599
        <LI>amp -Superfluous &amp; with function. 
600
        <LI>asm - Unknown assembler instruction. 
601
        <LI>aus - 'identifier' is assigned a value that is never used. (Default) 
602
 
603
        <LI>bbf - Bit fields must be signed or unsigned int. 
604
        <LI>bei - Initializing 'identifier' with 'identifier'. (Default) 
605
        <LI>big - Hexadecimal value contains more than three digits. (Default) 
606
        <LI>ccc - Condition is always true OR Condition is always false. 
607
        (Default) 
608
        <LI>cln - Constant is long. 
609
        <LI>cpt - Nonportable pointer comparison. (Default) 
610
        <LI>def - Possible use of 'identifier' before definition. 
611
        <LI>dpu - Declare type 'type' prior to use in prototype (Default) 
612
        <LI>dsz - Array size for 'delete' ignored. (Default) 
613
        <LI>dup - Redefinition of 'macro' is not identical (Default) 
614
        <LI>eas - 'type' assigned to 'enumeration'. (Default) 
615
        <LI>eff - Code has no effect. (Default) 
616
        <LI>ext - 'identifier' is declared as both external and static (Default) 
617
 
618
        <LI>hch - Handler for '&lt;type1&gt;' Hidden by Previous Handler for 
619
        '&lt;type2&gt;' 
620
        <LI>hid - 'function1' hides virtual function 'function2' (Default) 
621
        <LI>ibc - Base class '&lt;base1&gt;' is also a base class of 
622
        '&lt;base2&gt;' (Default) 
623
        <LI>ill - Ill-formed pragma. (Default) 
624
        <LI>inl - Functions containing reserved words are not expanded inline 
625
        (Default) 
626
        <LI>lin - Temporary used to initialize 'identifier'. (Default) 
627
        <LI>lvc - Temporary used for parameter 'parameter' in call to 'function' 
628
        (Default) 
629
        <LI>mpc - Conversion to type fails for members of virtual base class 
630
        base. (Default) 
631
        <LI>mpd - Maximum precision used for member pointer type type. (Default) 
632
 
633
        <LI>msg - User-defined warnings . This option allows user-defined 
634
        messages to appear in the IDE message window. 
635
        <LI>nak - Non-ANSI Keyword Used: '&lt;keyword&gt;' (Note: Use of this 
636
        option is a requirement for ANSI conformance.) 
637
        <LI>ncf - Non-const function 'function' called for const object. 
638
        (Default) 
639
        <LI>nci - The constant member 'identifier' is not initialized. (Default) 
640
 
641
        <LI>nod - No declaration for function 'function' 
642
        <LI>nsf - Declaration of static function 'func(...)' ignored. 
643
        <LI>nst - Use qualified name to access nested type 'type' (Default) 
644
        <LI>ntd - Use '&gt; &gt;' for nested templates instead of '&gt;&gt;'. 
645
        (Default) 
646
        <LI>nvf - Non-volatile function function called for volatile object. 
647
        (Default) 
648
        <LI>obi - Base initialization without a class name is now obsolete 
649
        (Default) 
650
        <LI>obs - Identifier is obsolete. (Default) 
651
        <LI>ofp - Style of function definition is now obsolete. (Default) 
652
        <LI>ovl - Overload is now unnecessary and obsolete. (Default) 
653
        <LI>par - Parameter 'parameter' is never used. (Default) 
654
        <LI>pch - Cannot create precompiled header: header. (Default) 
655
        <LI>pia - Possibly incorrect assignment. (Default) 
656
        <LI>pin - Initialization is only partially bracketed. 
657
        <LI>pre - Overloaded prefix operator 'operator' used as a postfix 
658
        operator. 
659
        <LI>pro - Call to function with no prototype. (Default) 
660
        <LI>rch - Unreachable code. (Default) 
661
        <LI>ret - Both return and return of a value used. (Default) 
662
        <LI>rng - Constant out of range in comparison. (Default) 
663
        <LI>rpt - Nonportable pointer conversion. (Default) 
664
        <LI>rvl - Function should return a value. (Default) 
665
        <LI>sig - Conversion may lose significant digits. 
666
        <LI>stu - Undefined structure 'structure' 
667
        <LI>stv - Structure passed by value. 
668
        <LI>sus - Suspicious pointer conversion. (Default) 
669
        <LI>ucp - Mixing pointers to different 'char' types. 
670
        <LI>use - 'identifier' declared but never used. 
671
        <LI>voi - Void functions may not return a value. (Default) 
672
        <LI>xxx - Enable xxx warning message. (Default) 
673
        <LI>zdi - Division by zero (Default) </LI></UL></TD></TR>
674
  <TR>
675
    <TD><B>-W</B></TD>
676
    <TD>Creates a Windows GUI application. (same as -tW)</TD></TR>
677
  <TR>
678
    <TD><B>-WC</B></TD>
679
    <TD>Creates a 32-bit console mode application. (same as -tWC)</TD></TR>
680
  <TR>
681
    <TD><B>-WD</B></TD>
682
    <TD>Creates a GUI DLL with all functions exportable. (same as -tWD)</TD></TR>
683
  <TR>
684
    <TD><B>-WM</B></TD>
685
    <TD>Make a multithreaded application or DLL. (same as -tWM)</TD></TR>
686
  <TR>
687
    <TD><B>-WU</B></TD>
688
    <TD>Generates Unicode application. Uses -txxxx macros in tchar.h.</TD></TR>
689
  <TR>
690
    <TD><B>-x</B></TD>
691
    <TD>Enable exception handling. (Default)</TD></TR>
692
  <TR>
693
    <TD><B>-xd</B></TD>
694
    <TD>Enable destructor cleanup. (Default)</TD></TR>
695
  <TR>
696
    <TD><B>-xf</B></TD>
697
    <TD>Enable fast exception prologs.</TD></TR>
698
  <TR>
699
    <TD><B>-xp</B></TD>
700
    <TD>Enable exception location information.</TD></TR>
701
  <TR>
702
    <TD><B>-xp</B></TD>
703
    <TD>Enable slow exception epilogues.</TD></TR>
704
  <TR>
705
    <TD><B>-X</B></TD>
706
    <TD>Disable compiler autodependency output. (Default: -X- use compiler 
707
      autodependency output.)</TD></TR>
708
  <TR>
709
    <TD><B>-y</B></TD>
710
    <TD>Line numbers on.</TD></TR>
711
  <TR>
712
    <TD><B>-zAname</B></TD>
713
    <TD>Code class set to name.</TD></TR>
714
  <TR>
715
    <TD><B>-zBname</B></TD>
716
    <TD>BSS class set to name.</TD></TR>
717
  <TR>
718
    <TD><B>-zCname</B></TD>
719
    <TD>Code segment class set to name.</TD></TR>
720
  <TR>
721
    <TD><B>-zDname</B></TD>
722
    <TD>BSS segment set to name.</TD></TR>
723
  <TR>
724
    <TD><B>-zGname</B></TD>
725
    <TD>BSS group set to name.</TD></TR>
726
  <TR>
727
    <TD><B>-zPname</B></TD>
728
    <TD>Code group set to name.</TD></TR>
729
  <TR>
730
    <TD><B>-zRname</B></TD>
731
    <TD>Data segment set to name.</TD></TR>
732
  <TR>
733
    <TD><B>-zSname</B></TD>
734
    <TD>Data group set to name.</TD></TR>
735
  <TR>
736
    <TD><B>-zTname</B></TD>
737
    <TD>Data class set to name.</TD></TR>
738
  <TR>
739
    <TD><B>-zX*</B></TD>
740
    <TD>Use default name for X. For example, -zA assigns the default class 
741
      name CODE to the code segment class.</TD></TR>
742
  <TR>
743
    <TD><B>-Z</B></TD>
744
    <TD>Enable register load suppression optimization.</TD></TR></TBODY></TABLE><A 
745
name=ILINK32Switches></A>
746
<H3>ILINK32.EXE - Switches &nbsp;<FONT size=1><A 
747
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3>
748
<P>ILINK32 objfiles, exefile, mapfile, libfiles, deffile, resfiles 
749
<P>@xxxx indicates use response file xxxx 
750
<P>
751
<TABLE width="90%" border=1>
752
  <TBODY>
753
  <TR>
754
    <TD><B>switch</B></TD>
755
    <TD><B>Switch Description</B></TD></TR>
756
  <TR>
757
    <TD><B>-ax</B></TD>
758
    <TD>Specify application type (known x's follow)</TD></TR>
759
  <TR>
760
    <TD><B>-aa</B></TD>
761
    <TD>Generate a protected-mode executable that runs using the 32-bit 
762
      Windows API</TD></TR>
763
  <TR>
764
    <TD><B>-ap</B></TD>
765
    <TD>Generate a protected-mode executable file that runs in console 
766
  mode</TD></TR>
767
  <TR>
768
    <TD><B>-Ao:nnnn</B></TD>
769
    <TD>Specify object alignment</TD></TR>
770
  <TR>
771
    <TD><B>-b:xxxx</B></TD>
772
    <TD>Specify image base addr</TD></TR>
773
  <TR>
774
    <TD><B>-c</B></TD>
775
    <TD>Case sensitive linking</TD></TR>
776
  <TR>
777
    <TD><B>-C</B></TD>
778
    <TD>Clear state before linking</TD></TR>
779
  <TR>
780
    <TD><B>-Dstring</B></TD>
781
    <TD>Set image description</TD></TR>
782
  <TR>
783
    <TD><B>-d</B></TD>
784
    <TD>Delay load a .DLL</TD></TR>
785
  <TR>
786
    <TD><B>-Enn</B></TD>
787
    <TD>Max number of errors</TD></TR>
788
  <TR>
789
    <TD><B>-Gi</B></TD>
790
    <TD>Generate import library</TD></TR>
791
  <TR>
792
    <TD><B>-Gl</B></TD>
793
    <TD>Static package</TD></TR>
794
  <TR>
795
    <TD><B>-Gn</B></TD>
796
    <TD>No state files</TD></TR>
797
  <TR>
798
    <TD><B>-Gpd</B></TD>
799
    <TD>Design time only package</TD></TR>
800
  <TR>
801
    <TD><B>-Gpr</B></TD>
802
    <TD>Runtime only package</TD></TR>
803
  <TR>
804
    <TD><B>-Gt</B></TD>
805
    <TD>Fast TLS</TD></TR>
806
  <TR>
807
    <TD><B>-Gz</B></TD>
808
    <TD>Do image checksum</TD></TR>
809
  <TR>
810
    <TD><B>-GC</B></TD>
811
    <TD>Specify image comment string</TD></TR>
812
  <TR>
813
    <TD><B>-GD</B></TD>
814
    <TD>Generate .DRC file</TD></TR>
815
  <TR>
816
    <TD><B>-GF</B></TD>
817
    <TD>Set image flags</TD></TR>
818
  <TR>
819
    <TD><B>-GS</B></TD>
820
    <TD>Set section flags</TD></TR>
821
  <TR>
822
    <TD><B>-H:xxxx</B></TD>
823
    <TD>Specify heap reserve size</TD></TR>
824
  <TR>
825
    <TD><B>-Hc:xxxx</B></TD>
826
    <TD>Specify heap commit size</TD></TR>
827
  <TR>
828
    <TD><B>-I</B></TD>
829
    <TD>Intermediate output dir</TD></TR>
830
  <TR>
831
    <TD><B>-j</B></TD>
832
    <TD>Specify object search paths</TD></TR>
833
  <TR>
834
    <TD><B>-L</B></TD>
835
    <TD>Specify library search paths</TD></TR>
836
  <TR>
837
    <TD><B>-m</B></TD>
838
    <TD>Map file with publics</TD></TR>
839
  <TR>
840
    <TD><B>-M</B></TD>
841
    <TD>Map with mangled names</TD></TR>
842
  <TR>
843
    <TD><B>-q</B></TD>
844
    <TD>Supress banner</TD></TR>
845
  <TR>
846
    <TD><B>-r</B></TD>
847
    <TD>Verbose linking</TD></TR>
848
  <TR>
849
    <TD><B>-Rr</B></TD>
850
    <TD>Replace resources</TD></TR>
851
  <TR>
852
    <TD><B>-s</B></TD>
853
    <TD>Detailed segment map</TD></TR>
854
  <TR>
855
    <TD><B>-S:xxxx</B></TD>
856
    <TD>Specify stack reserve size</TD></TR>
857
  <TR>
858
    <TD><B>-Sc:xxxx</B></TD>
859
    <TD>Specify stack commit size</TD></TR>
860
  <TR>
861
    <TD><B>-Txx</B></TD>
862
    <TD>Display time spent on link</TD></TR>
863
  <TR>
864
    <TD><B>-Txx</B></TD>
865
    <TD>Specify output file type</TD></TR>
866
  <TR>
867
    <TD><B>-Tpd</B></TD>
868
    <TD>Target a Windows .DLL file</TD></TR>
869
  <TR>
870
    <TD><B>-Tpe</B></TD>
871
    <TD>Target a Windows .EXE file</TD></TR>
872
  <TR>
873
    <TD><B>-Tpp</B></TD>
874
    <TD>Generate package</TD></TR>
875
  <TR>
876
    <TD><B>-Ud.d</B></TD>
877
    <TD>Specify image user version</TD></TR>
878
  <TR>
879
    <TD><B>-v</B></TD>
880
    <TD>Full debug information</TD></TR>
881
  <TR>
882
    <TD><B>-Vd.d</B></TD>
883
    <TD>Specify subsystem version</TD></TR>
884
  <TR>
885
    <TD><B>-w-</B></TD>
886
    <TD>Disable all warnings.</TD></TR>
887
  <TR>
888
    <TD><B>-wxxx</B></TD>
889
    <TD>Warning control 
890
      <UL>
891
        <LI>def - No .DEF file 
892
        <LI>dpl - Duplicate symbol in lib 
893
        <LI>imt - Import does not match previous definition 
894
        <LI>msk - Multiple stack segment 
895
        <LI>bdk - using based linking in .DLL 
896
        <LI>dll - .EXE module built with .DLL extension 
897
        <LI>dup - Duplicate symbol 
898
        <LI>ent - No entry point 
899
        <LI>inq - Extern not qualified with __import 
900
        <LI>srf - Self-relative fixup overflow 
901
        <LI>stk - No stack </LI></UL></TD></TR>
902
  <TR>
903
    <TD><B>-x</B></TD>
904
    <TD>No map</TD></TR></TBODY></TABLE>
905
<P><A name=BCCLibs></A>
906
<H3>BCC32 Libraries &nbsp;<FONT size=1><A 
907
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3>
908
<P>The following is an incomplete listing of the main startup and runtime 
909
libraries included with BCC32. If you have more details, please send them, and I 
910
will include them here. 
911
<P>
912
<DL>
913
  <DT><B><I>OBJ Files</I></B> 
914
  <DT><B>C0D32.OBJ</B> 
915
  <DD>32-bit DLL startup module (cod32w: wide-char version; cod32x: no exception 
916
  handling) 
917
  <DT><B>C0S32.OBJ</B> 
918
  <DD>Unknown 
919
  <DT><B>C0W32.OBJ</B> 
920
  <DD>32-bit GUI EXE startup module (c0w32w: wide-char) 
921
  <DT><B>C0X32.OBJ</B> 
922
  <DD>32-bit console-mode EXE startup module (c0x32w: wide-char) 
923
  <DT><B>FILEINFO.OBJ</B> 
924
  <DD>Passes open file-handle information to child processes. Include this file 
925
  in your link to pass full information about open files to child processes 
926
  created with exec and spawn. Works with the C++ runtime library to inherit 
927
  this information. 
928
  <DT><B>GP.OBJ</B> 
929
  <DD>Prints register-dump information when an exception occurs. 
930
  <DT><B>WILDARGS.OBJ</B> 
931
  <DD>If you want wild-card expansion for you console-mode applications, then 
932
  you should also link in this file when you link your console-mode application. 
933
  It apparently doesn't work for GUI apps. It does the normal DOS-like wild card 
934
  expansion and passes them to argv and argc of your main. 
935
  <P></P>
936
  <DT><B><I>LIB Files</I></B> 
937
  <DT><B>CW32.LIB</B> 
938
  <DD>32-bit single-threaded static library 
939
  <DT><B>CW32I.LIB</B> 
940
  <DD>32-bit single-thread, dynamic RTL import library for CW3250.DLL. To use 
941
  this import library, you must compile your programs with either -D_RTDLL or 
942
  -tWR options to the compiler. This probably applies to the other "i" libs as 
943
  well. 
944
  <DT><B>CW32MT.LIB</B> 
945
  <DD>32-bit multithread static library 
946
  <DT><B>CW32MTI.LIB</B> 
947
  <DD>Import lib for 32-bit multithread dynamic RTL import library for 
948
  CW3250MT.DLL 
949
  <DT><B>IMPORT32.LIB</B> 
950
  <DD>32-bit import library 
951
  <DT><B>dxextra.lib</B> 
952
  <DD>DirectX static library 
953
  <DT><B>inet.lib</B> 
954
  <DD>Import lib for MS Internet DLLs 
955
  <DT><B>noeh32.lib</B> 
956
  <DD>No exception handling support lib 
957
  <DT><B>ole2w32.lib</B> 
958
  <DD>Import lib for 32-bit OLE 2.0 API 
959
  <DT><B>oleaut32.lib</B> 
960
  <DD>Unknown 
961
  <DT><B>uuid.lib</B> 
962
  <DD>GUID static lib for Direct3d, DirectDraw, DirectSound, Shell extensions, 
963
  DAO, Active Scripting, etc. 
964
  <DT><B>wininet.lib</B> 
965
  <DD>Unknown 
966
  <DT><B>ws2_32.lib</B> 
967
  <DD>Import lib for WinSock 2.0 API </DD></DL>
968
<P><A name=TD32>
969
<H3>Turbo Debugger Commands &nbsp;<FONT size=1><A 
970
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3><A 
971
name=TD32-cmdline>
972
<H4>Command Line Switches</H4></A>
973
<P>Command Line Syntax: <BR>TD32 [options] [program [arguments]] -x- = turn 
974
option x off 
975
<TABLE width="90%" border=1>
976
  <TBODY>
977
  <TR>
978
    <TD><B>switch</B></TD>
979
    <TD><B>Switch Description</B></TD></TR>
980
  <TR>
981
    <TD>-as&lt;#&gt;</TD>
982
    <TD>-ar&lt;#&gt; (NT only) Attach to running process: s=stop, r=run, id = 
983
    #</TD></TR>
984
  <TR>
985
    <TD>-ae&lt;#&gt;</TD>
986
    <TD>(NT only) Post-mortem event handle, decimal event handle = #</TD></TR>
987
  <TR>
988
    <TD>-c&lt;file&gt;</TD>
989
    <TD>Use configuration file &lt;file&gt;</TD></TR>
990
  <TR>
991
    <TD>-h,-?</TD>
992
    <TD>Display this help screen</TD></TR>
993
  <TR>
994
    <TD>-ji,-jn,-jp,-ju</TD>
995
    <TD>State restore: i=Ignore old,n=None,p=Prompt old,u=Use old</TD></TR>
996
  <TR>
997
    <TD>-l</TD>
998
    <TD>Assembler startup</TD></TR>
999
  <TR>
1000
    <TD>-p</TD>
1001
    <TD>Use mouse</TD></TR>
1002
  <TR>
1003
    <TD>-sc</TD>
1004
    <TD>No case checking on symbols</TD></TR>
1005
  <TR>
1006
    <TD>-sd&lt;dir&gt;</TD>
1007
    <TD>Source file directory &lt;dir&gt;</TD></TR>
1008
  <TR>
1009
    <TD>-t&lt;dir&gt;</TD>
1010
    <TD>Start with current directory &lt;dir&gt;</TD></TR></TBODY></TABLE>
1011
<P><A name=TD32-keys>
1012
<H4>Keyboard Command Shortcuts &nbsp;<FONT size=1><A 
1013
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H4>
1014
<TABLE width="90%" border=1>
1015
  <TBODY>
1016
  <TR>
1017
    <TD><B>Key</B></TD>
1018
    <TD><B>Command</B></TD></TR>
1019
  <TR>
1020
    <TD><I>File Menu</I></TD>
1021
    <TD>&nbsp;</TD></TR>
1022
  <TR>
1023
    <TD>Alt-X</TD>
1024
    <TD>Quit</TD></TR>
1025
  <TR>
1026
    <TD><I>Edit Menu</I></TD>
1027
    <TD>&nbsp;</TD></TR>
1028
  <TR>
1029
    <TD>Shift-F3</TD>
1030
    <TD>Copy</TD></TR>
1031
  <TR>
1032
    <TD>Shift-F4</TD>
1033
    <TD>Paste</TD></TR>
1034
  <TR>
1035
    <TD><I>View Menu</I></TD>
1036
    <TD>&nbsp;</TD></TR>
1037
  <TR>
1038
    <TD>F3</TD>
1039
    <TD>Open Module (source file)</TD></TR>
1040
  <TR>
1041
    <TD><I>Run Menu</I></TD>
1042
    <TD>&nbsp;</TD></TR>
1043
  <TR>
1044
    <TD>F9</TD>
1045
    <TD>Run</TD></TR>
1046
  <TR>
1047
    <TD>F4</TD>
1048
    <TD>Go to cursor</TD></TR>
1049
  <TR>
1050
    <TD>F7</TD>
1051
    <TD>Trace into</TD></TR>
1052
  <TR>
1053
    <TD>F8</TD>
1054
    <TD>Step over</TD></TR>
1055
  <TR>
1056
    <TD>Alt-F9</TD>
1057
    <TD>Execute to...</TD></TR>
1058
  <TR>
1059
    <TD>Alt-F8</TD>
1060
    <TD>Until return</TD></TR>
1061
  <TR>
1062
    <TD>Alt-F4</TD>
1063
    <TD>Back trace</TD></TR>
1064
  <TR>
1065
    <TD>Alt-F7</TD>
1066
    <TD>Instruction trace</TD></TR>
1067
  <TR>
1068
    <TD>Ctrl-F2</TD>
1069
    <TD>Program reset</TD></TR>
1070
  <TR>
1071
    <TD><I>Breakpoints Menu</I></TD>
1072
    <TD>&nbsp;</TD></TR>
1073
  <TR>
1074
    <TD>F2</TD>
1075
    <TD>Toggle breakpoint...</TD></TR>
1076
  <TR>
1077
    <TD>Alt-F2</TD>
1078
    <TD>At breakpoint...</TD></TR>
1079
  <TR>
1080
    <TD><I>Data Menu</I></TD>
1081
    <TD>&nbsp;</TD></TR>
1082
  <TR>
1083
    <TD>Ctrl-F4</TD>
1084
    <TD>Evaluate/modify...</TD></TR>
1085
  <TR>
1086
    <TD>Ctrl-F7</TD>
1087
    <TD>Add watch...</TD></TR>
1088
  <TR>
1089
    <TD><I>Window Menu</I></TD>
1090
    <TD>&nbsp;</TD></TR>
1091
  <TR>
1092
    <TD>F5</TD>
1093
    <TD>Zoom</TD></TR>
1094
  <TR>
1095
    <TD>F6</TD>
1096
    <TD>Next</TD></TR>
1097
  <TR>
1098
    <TD>Tab</TD>
1099
    <TD>Next pane</TD></TR>
1100
  <TR>
1101
    <TD>Ctrl-F5</TD>
1102
    <TD>Size/move</TD></TR>
1103
  <TR>
1104
    <TD>Alt-F3</TD>
1105
    <TD>Close</TD></TR>
1106
  <TR>
1107
    <TD>Alt-F6</TD>
1108
    <TD>Undo close</TD></TR>
1109
  <TR>
1110
    <TD>Alt-F5</TD>
1111
    <TD>User screen</TD></TR>
1112
  <TR>
1113
    <TD><I>Help Menu</I></TD>
1114
    <TD>&nbsp;</TD></TR>
1115
  <TR>
1116
    <TD>Shift-F1</TD>
1117
    <TD>Help Index</TD></TR>
1118
  <TR>
1119
    <TD>Alt-F1</TD>
1120
    <TD>Previous topic</TD></TR>
1121
  <TR>
1122
    <TD>xx</TD>
1123
    <TD>xx</TD></TR>
1124
  <TR>
1125
    <TD>xx</TD>
1126
    <TD>xx</TD></TR></TBODY></TABLE>
1127
<P><A name=TD32-help>
1128
<H4>TD Help &nbsp;<FONT size=1><A 
1129
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H4></A>
1130
<P>The following list contains all the topics covered by TD help. Those 
1131
especially relevant to C and C++ programming are presented here. 
1132
<UL>
1133
  <LI><B>Help on Help</B> <BR>Welcome to Turbo Debugger's help facility. Use the 
1134
  following keys to move around: <BR>
1135
  <TABLE width="90%" border=1>
1136
    <TBODY>
1137
    <TR>
1138
      <TD>Arrows - Move to topic</TD>
1139
      <TD>Enter - Go to topic</TD></TR>
1140
    <TR>
1141
      <TD>PgUp - Previous screen</TD>
1142
      <TD>Esc - Exit help</TD></TR>
1143
    <TR>
1144
      <TD>PgDn- Next screen</TD>
1145
      <TD>F1 - Help index</TD></TR>
1146
    <TR>
1147
      <TD>Alt-F1 - Previous screen</TD>
1148
      <TD>Ctrl-PgUp - First screen</TD></TR></TBODY></TABLE>
1149
  <LI><B>Assembler</B> 
1150
  <LI><B>Assembler constants</B> 
1151
  <LI><B>Assembler expressions</B> 
1152
  <LI><B>Assembler operators</B> 
1153
  <LI><B>Assembler strings</B> 
1154
  <LI><B>Assembler variables</B> 
1155
  <LI><B>Auto-variables</B> <BR>Auto-variables are defined only within the 
1156
  function or block in which they are declared, and they exist only when the 
1157
  function they are in is called. They don't retain their values from one 
1158
  function call to the next. 
1159
  <P>Turbo Debugger handles auto-variables by emulating the current language's 
1160
  variable scoping rules. That is, whenever the program is stopped inside a 
1161
  function, the auto-variables for that function are added to or supersede the 
1162
  static and local symbols already known. They can be used in expressions 
1163
  exactly as they would be used in a statement inside the function. 
1164
  <P>The bottom pane of the Variables window shows the current value for all 
1165
  auto-variables in the active function. 
1166
  <P></P>
1167
  <LI><B>Breakpoints</B> <BR>You use breakpoints to specify something you want 
1168
  done when your program has run to a specific source line number or address. 
1169
  <P>You can set a breakpoint to stop your program at any source line or 
1170
  address. Position the cursor on the desired line and press F2. Press F2 again 
1171
  to clear the breakpoint. 
1172
  <P>You can also set a breakpoint by clicking the mouse in one of the first two 
1173
  columns of the line that you want to set the breakpoint on. Turbo Debugger's 
1174
  breakpoints perform all the same jobs as the breakpoints, watchpoints, and 
1175
  tracepoints of other debuggers. 
1176
  <P>A breakpoint can be instructed to perform one of the following actions: <PRE>Break       Stop your program
1177
Log         Log the value of variables
1178
Execute     Execute an expression
1179
</PRE>
1180
  <P>You can set a breakpoint to execute on one of the following conditions: <PRE>Always           Every time it is encountered
1181
Expression true  Only when an expression is true
1182
Changed memory   Only when a memory area changes
1183
Hardware         When a hardware breakpoint occurs
1184
</PRE>
1185
  <P>Breakpoints can also be qualified by setting a Pass Count that specifies 
1186
  how many times the breakpoint must be passed over before being activated. 
1187
  <P>A breakpoint can also be set at a global address, which means that it 
1188
  occurs on every source line or instruction address. This allows you to watch 
1189
  the value of a variable as each line is executed, or to stop when a variable 
1190
  or area of memory changes value. 
1191
  <P></P>
1192
  <LI><B>Byte lists</B> 
1193
  <LI><B>C constants</B> <BR>Constants can be either floating point or integer. 
1194
  A floating-point constant contains a decimal point and can be in decimal or 
1195
  scientific notation; for example, <PRE>  1.234    4.5e+11
1196
</PRE>Integer constants are decimal unless you use one of the C conventions 
1197
  for overriding the radix: <PRE> Format          Radix
1198
 =====================
1199
 digits          Decimal
1200
 0digits         Octal
1201
 0Xdigits        Hexadecimal
1202
 0xdigits        Hexadecimal
1203
</PRE>Ending any integer constant with "l" or "L" makes it into a long 
1204
  constant. 
1205
  <P></P>
1206
  <LI><B>C Debugging tips</B> <BR>This TD help section is meant to aid the less 
1207
  experienced programmer in finding bugs in C programs. Some examples of common 
1208
  pitfalls are given, along with suggestions on how to resolve and avoid them. 
1209
  See the TD help for details. 
1210
  <P></P>
1211
  <LI><B>C expressions</B> <BR>The full C expression syntax is supported, which 
1212
  allows you to evaluate any C expression that the compiler accepts. 
1213
  <P>Variables can be changed using the full range of C assignment operators or 
1214
  the increment and decrement operators (++ and --). 
1215
  <P>A C expression can contain the following elements: Operators, Strings, 
1216
  Variables, Constants 
1217
  <P></P>
1218
  <LI><B>C operators</B> <BR>Turbo Debugger supports all the C operators and one 
1219
  additional special operator, ::, which has the highest priority. You use it to 
1220
  generate constant far-memory pointers to characters; for example, <PRE>    0x1234::0x5678
1221
</PRE>The primary expression operators <PRE>    ()   []   .   -&gt;
1222
</PRE>have the next highest priority and group from left to right. 
1223
  <P>The unary operators <PRE>    *   &amp;   !   ~   ++   --
1224
</PRE>have priority less than the primary operators but greater than the 
1225
  binary operators and group from right to left. 
1226
  <P>The binary operators are listed here in decreasing priority. Operators on 
1227
  the same line have the same priority. <PRE>highest  *   /   %
1228
         +   -
1229
         &gt;&gt;   &lt;&lt;
1230
         &lt;   &gt;   &lt;=   &gt;=
1231
         ==   !=
1232
         &amp;
1233
         ^
1234
         |
1235
         &amp;&amp;
1236
lowest   ||
1237
</PRE>
1238
  <P>The single ternary operator has a priority less than any of the binary 
1239
  operators: <PRE>         ?:
1240
</PRE>The assignment operators all have the same priority below the ternary 
1241
  operator and group from right to left: <PRE>    =  +=  -=  *=  /=  %=  &gt;&gt;=  &lt;&lt;=  &amp;=  ^=  |=
1242
</PRE>
1243
  <P></P>
1244
  <LI><B>C strings</B> <BR>C strings in Turbo Debugger use exactly the same 
1245
  syntax as in C source files: a series of characters between double quotes (" 
1246
  "). All characters are inserted literally except for the backslash, which is 
1247
  used to enter special character codes into the string. 
1248
  <P>If a backslash is followed by any character except one of those listed 
1249
  here, that character is inserted into the string unchanged. This allows the 
1250
  string delimiter double-quote character (") to be entered by typing \". 
1251
  <P>The following escape sequences can be used: <PRE>Sequence   Value   Character
1252
----------------------------
1253
\a         0x07    Bell
1254
\b         0x08    Backspace
1255
\f         0x0c    Formfeed
1256
\n         0x0a    Newline (line feed)
1257
\r         0x0d    Carriage return
1258
\t         0x09    Horizontal tab
1259
\v         0x0b    Vertical tab
1260
\\         \       Backslash
1261
\xnn       nn      Hex byte value
1262
\nnn       nnn     Octal byte value
1263
</PRE>
1264
  <P>
1265
  <P></P>
1266
  <LI><B>C variables</B> <BR>Variables are names for data items in your program. 
1267
  A C variable name starts with a letter (a - z, A - Z) or the underscore 
1268
  character (_). Subsequent characters in the symbol can be digits (0 - 9) as 
1269
  well as these characters. 
1270
  <P>Normally, a variable name obeys the C scoping rules, with auto-variables 
1271
  overriding static variables of the same name, which override globals. You can 
1272
  override this scoping if you wish to access variables in other scopes. 
1273
  <P></P>
1274
  <LI><B>Command line options</B> <BR>Here's the general form of the DOS command 
1275
  line used to start Turbo Debugger: <PRE> td [options] [program_name [program_args] ]
1276
</PRE>Items enclosed in brackets are optional. "Options" are described below. 
1277
  "Program_name" is the name of the program to debug. If no extension is 
1278
  supplied, .EXE is presumed. "Program_args" are any arguments required by the 
1279
  program being debugged. Do not place debugger options here; they should come 
1280
  before the name of the program being debugged. 
1281
  <P>Example command lines: <PRE>Command         Action
1282
=======         ======
1283
td              Start the debugger with no
1284
                program, default options
1285
 
1286
td -r prog1 a   Start the debugger with -r
1287
                option, load program "prog1"
1288
                with one argument "a"
1289
 
1290
td prog2 -x     Start the debugger with default
1291
                options, load "prog2" with one
1292
                argument "-x".
1293
</PRE>An option consists of a hyphen, followed by one or more letters and a 
1294
  possible text or numeric argument. Options override default configuration 
1295
  settings from the configuration file. To disable an option set in the 
1296
  configuration file, follow the option with another hyphen, for example, <PRE>    td -p- myprog arg1 arg2
1297
</PRE>
1298
  <P></P>
1299
  <LI><B>Configuration file</B> <BR>The configuration file allows command-line 
1300
  options to be set automatically each time the debugger is started. The 
1301
  configuration file is searched for first in the current directory, then in the 
1302
  directory containing the Turbo Debugger executable program. This allows you to 
1303
  have a system-wide configuration in the PATH and custom configurations for 
1304
  individual projects. 
1305
  <P>Options on the command line override the corresponding setting in the 
1306
  configuration file. 
1307
  <P></P>
1308
  <LI><B>Cursor in List panes</B> <BR>In a List pane items can be selected in 
1309
  one of two ways: 
1310
  <UL>
1311
    <LI>Use the cursor keys to position the highlight bar. 
1312
    <LI>If the List pane has a blinking cursor, start to type the letters making 
1313
    up an entry. The highlight bar moves to the first item that starts with the 
1314
    letters typed so far; this allows you to select items with a minimum of 
1315
    typing. This is referred to as "incremental matching." </LI></UL>The following 
1316
  keys can be used to move the highlight bar in a List pane: <PRE>Up        Move up one item
1317
Down      Move down one item
1318
PgUp      Move up one pane height
1319
PgDn      Move down one pane height
1320
Ctrl-PgUp Move to first item in list
1321
Ctrl-PgDn Move to last item in list
1322
Esc       Cancel incremental search
1323
Enter     Select item in list
1324
a - z     Incremental match on list items
1325
</PRE>
1326
  <P></P>
1327
  <LI><B>Cursor in Text panes</B> <BR>Use the following keys to control the 
1328
  cursor position in Text panes: <PRE>Up          Move cursor up one line
1329
Down        Move cursor down one line
1330
Right       Move cursor right one character
1331
Left        Move cursor left one character
1332
Ctrl-Right  Move right one word
1333
Ctrl-Left   Move left one word
1334
PgUp        Move up one page
1335
PgDn        Move down one page
1336
Ctrl-Home   Go to top line of window
1337
Ctrl-End    Go to bottom line of window
1338
Ctrl-PgUp   Go to first line in file
1339
Ctrl-PgDn   Go to last line in file
1340
Home        Go to beginning of current line
1341
End         Go to end of current line
1342
</PRE>You can mark a block of text by pressing Ins, then moving the cursor 
1343
  within the same line. Some prompts use this marked block as their default 
1344
  response entry. 
1345
  <P></P>
1346
  <LI><B>CPU Flags</B> 
1347
  <LI><B>Disassembler</B> 
1348
  <LI><B>DOS commands</B> 
1349
  <LI><B>Error messages</B> 
1350
  <LI><B>Examining Data</B> <BR>You can examine data items with the Inspect 
1351
  option on the Data menu. You can inspect any expression that evaluates to a 
1352
  memory pointer, both simple variable names and complicated address 
1353
  expressions. 
1354
  <P>You can also examine data items by pointing to a variable name in a Text or 
1355
  List pane and specifying the Inspect option from the speed menu for that pane. 
1356
  In a Text pane, this command works if the cursor is anywhere within the 
1357
  variable name you wish to inspect. You can also use the Ins key to mark an 
1358
  expression to inspect. 
1359
  <P></P>
1360
  <LI><B>Expressions</B> <BR>You can evaluate an expression using any one of the 
1361
  languages supported by Turbo Debugger: <PRE>    C      Pascal      Assembler
1362
</PRE>Use the Options/Language command to select which language is used to 
1363
  interpret expressions you type in. Normally, Turbo Debugger uses the language 
1364
  that you used to write the code at the current program address. 
1365
  <P>When you display an expression, you can enter an optional format control 
1366
  string that controls how the result is displayed. 
1367
  <P></P>
1368
  <LI><B>Format Control</B> <BR>When you supply an expression to be displayed, 
1369
  Turbo Debugger displays it in a suitable format based on what type of data it 
1370
  is. If you wish to change the default display format for an expression, place 
1371
  a comma at the end of the expression, then supply an optional repeat count 
1372
  followed by an optional format letter. You can supply a repeat count only for 
1373
  pointers or arrays. If you use a format control on the wrong data type, it has 
1374
  no effect. <PRE>c    Displays a character or string expression
1375
     as raw characters.  Normally, non-printing
1376
     character values are displayed as some type
1377
     of escape or numeric format.  This option
1378
     forces the characters to be displayed using
1379
     the full IBM display character set.
1380
 
1381
d    Displays an integer as a decimal number.
1382
 
1383
f#   Displays a floating-point format with the
1384
     specified number of digits.  If you don't
1385
     supply a number of digits, as many as
1386
     necessary are used.
1387
 
1388
m    Displays a memory-referencing expression
1389
     as hex bytes.
1390
 
1391
md   Displays a memory-referencing expression as
1392
     decimal bytes.
1393
 
1394
p    Displays a raw pointer value, showing
1395
     segment as a register name if applicable.
1396
</PRE>
1397
  <P></P>
1398
  <LI><B>Function Keys</B> <BR>There are function keys for many commonly used 
1399
  functions. The regular function keys invoke the following commands: <BR><PRE>F1  Help              F2  Toggle Breakpoint
1400
F3  View Module       F4  Go to Cursor
1401
F5  Zoom Window       F6  Next Window
1402
F7  Trace Into        F8  Step Over
1403
F9  Run               F10 Command menu
1404
</PRE>
1405
  <P>The Alt function keys give you access to other commands you use fairly 
1406
  often. <BR><PRE>Alt F1  Last help      Alt F2  Breakpoint At
1407
Alt F3  Close Window   Alt F4  Back trace
1408
Alt F5  User Screen    Alt F6  Undo Close
1409
Alt F7  Instr. Trace   Alt F8  Until Return
1410
Alt F9  Execute To     Alt F10 Speed menu
1411
</PRE>
1412
  <P></P>
1413
  <LI><B>Global variables</B> <BR>Global variables are those defined as being 
1414
  accessible to all modules in the program. You can view the global variables in 
1415
  a program by creating a Variables window. The global variables appear in the 
1416
  upper pane of that window. 
1417
  <P></P>
1418
  <LI><B>Help line</B> <BR>The bottom line of the screen always displays help 
1419
  about some keys specific to the current environment. This line changes 
1420
  depending on where you are. 
1421
  <P>Normally, it shows the most commonly used function key commands. Press and 
1422
  hold down the Alt key and it shows the commonly used Alt function keys. 
1423
  <P></P>
1424
  <LI><B>Hierarchy window</B> <BR>The Hierarchy command opens an Object 
1425
  Hierarchy window that shows all the Pascal or C++ object types, both in 
1426
  alphabetical order and as a tree showing ancestor/descendant relationships. 
1427
  <P></P>
1428
  <LI><B>Inspectors</B> <BR>You'll probably use Inspectors more than any other 
1429
  sort of window. You can create an Inspector in one of two ways: 
1430
  <UL>
1431
    <LI>Use the Inspect speed menu command in a pane by typing Ctrl-I or Alt-F10 
1432
    I. 
1433
    <LI>Use the Data Inspect command from the main menu. </LI></UL>An Inspector 
1434
  shows the contents of a data structure in the program you are debugging. It 
1435
  also allows you to modify individual variables or members of a data structure. 
1436
 
1437
  <P>The most common way to use Inspectors is to open one by placing the cursor 
1438
  on what you want to inspect and pressing Ctrl-I. After you've examined the 
1439
  data item, press the Esc key to remove the Inspector window. 
1440
  <P>If you have several Inspectors on the screen, the Window Close command (or 
1441
  its equivalent, the Alt-F3 key) removes them all at once. 
1442
  <P></P>
1443
  <LI><B>Interrupt key</B> <BR>The Interrupt key can be pressed at any time your 
1444
  program is running. Turbo Debugger immediately regains control, allowing you 
1445
  to examine the state of the program. 
1446
  <P>Usually the Interrupt key is the Ctrl-Break key combination; you can change 
1447
  this to another key by using the TDINST customization program. 
1448
  <P></P>
1449
  <LI><B>Logging events</B> <BR>Turbo Debugger's breakpoints perform all the 
1450
  same jobs as the breakpoints, watchpoints, and tracepoints of other debuggers. 
1451
 
1452
  <P>A breakpoint can be instructed to perform one of the following actions: <PRE>  Break       Stop your program
1453
  Log         Log the value of variables
1454
  Execute     Execute an expression
1455
</PRE>
1456
  <P></P>
1457
  <LI><B>Macros</B> <BR>The Options Macros command lets you set and clear macros 
1458
  assigned to different keys. 
1459
  <P>Select one of the following commands to learn more about it: <PRE>    Create        Remove
1460
    Delete All    Stop Recording
1461
</PRE>You can use macros to record command sequences that you often repeat, as 
1462
  well as to record commands from the start of a session. This is very useful 
1463
  when you must keep restarting and getting back to a certain place in your 
1464
  program. 
1465
  <P></P>
1466
  <LI><B>Main Menu</B> <BR>The menu bar appears on the top line of the screen. 
1467
  You can return to this menu at any time by pressing the F10 hot key. A 
1468
  combination of pull-down and pop-up menus gives you easy access to all the 
1469
  menu commands and options. The menu bar has the following commands: <PRE>    System         Breakpoints
1470
    File           Data
1471
    View           Window
1472
    Run            Options
1473
    Edit
1474
</PRE>Access the System menu in the top left corner by pressing Alt-space. 
1475
  <P>
1476
  <UL>
1477
    <LI>System <BR>The System menu lets you invoke commands that affect the 
1478
    entire screen (desktop). 
1479
    <P>The Repaint desktop command redisplays the entire Turbo Debugger screen. 
1480
    This is useful if screen swapping has been disabled and the debugger screen 
1481
    has become corrupted with output from the program you are debugging. 
1482
    <P>Use the Options/Display options command to set how screen updating is 
1483
    done. 
1484
    <P>The Restore Standard command restores the window layout to the way it was 
1485
    when the debugger was first started. 
1486
    <P>The About command shows the sign-on copyright screen that identifies the 
1487
    version of Turbo Debugger that you are using. 
1488
    <P></P>
1489
    <LI>File <BR>The File menu has a number of options that deal with operations 
1490
    external to Turbo Debugger, such as loading programs to debug, executing DOS 
1491
    commands, and returning to DOS. 
1492
    <P>The Open command loads a program to debug from disk. You are prompted for 
1493
    the name of the program to debug. You don't need to supply the .EXE or .COM 
1494
    extension. 
1495
    <P>You can supply any arguments to the program by specifying them after the 
1496
    program name, just as you would on the DOS command line. 
1497
    <P>The Change Dir command lets you set a new current drive and/or directory 
1498
    by prompting you for the new drive and/or directory name. 
1499
    <P>The prompt is initialized to the current drive and directory, so you can 
1500
    also use this command to examine the current drive and directory settings. 
1501
    <P>The File Get Info command displays a window that shows you the current 
1502
    state of the program you are debugging. This includes: 
1503
    <UL>
1504
      <LI>the program name 
1505
      <LI>where and why your program is stopped 
1506
      <LI>main memory usage 
1507
      <LI>interrupts your program has intercepted 
1508
      <LI>the DOS version 
1509
      <LI>Hardware/software breakpoints indicator 
1510
      <LI>the current date and time </LI></UL>
1511
    <P>The Attach command lets you debug a program that is already running and 
1512
    was not started by Turbo Debugger. You supply the process ID of the process 
1513
    that you wish to debug. Turbo debugger then interrupts the process just as 
1514
    if a breakpoint had been encountered. 
1515
    <P>The Quit command returns control to DOS. Alt-X is the hot key that 
1516
    returns to DOS from any point while Turbo Debugger is running. 
1517
    <P>The memory for your program image is freed, and any open file handles are 
1518
    closed. If your program has allocated memory blocks from DOS, Turbo Debugger 
1519
    frees these as well. 
1520
    <P></P>
1521
    <LI>Edit <BR>The Edit menu has options that let you put things onto the 
1522
    clipboard and to place items on the clipboard into the current window. 
1523
    <P>The Copy command copies the currently highlighted item or position in a 
1524
    window to the clipboard. You can then use the Paste command to put the item 
1525
    somewhere else. 
1526
    <P>The Paste command copies an item from the clipboard into the current 
1527
    context in a window. You are given a list of clipboard items that are able 
1528
    to be used in the current context. To see the entire contents of the 
1529
    clipboard, use the View/Clipboard main menu command. 
1530
    <P>The Copy to log command copies the currently highlighted item or position 
1531
    in a window to the Log window. 
1532
    <P>The Edit Dump Pane to Log command writes the contents of the current pane 
1533
    to the Log window. This can be useful when you want to compare the values of 
1534
    some variables at two different places in the program. You can dump the 
1535
    contents of the Watches window or some Inspectors, then execute some more of 
1536
    your program and compare the values recorded in the log with the current 
1537
    values. 
1538
    <P></P>
1539
    <LI>View <BR>The View menu commands open windows that "view" part of the 
1540
    program you are debugging. Use the Another option in this menu to open 
1541
    another instance of a Dump, File, or Module window that you already have 
1542
    displayed on the screen. 
1543
    <P>The Breakpoints command opens a Breakpoints window that shows a list of 
1544
    the current breakpoints, their conditions, and what they do when they're 
1545
    triggered. In Turbo Debugger, breakpoints combine the functions of 
1546
    breakpoints, watch points, and trace points. 
1547
    <P>The CPU command opens a CPU window that shows disassembled instructions, 
1548
    a hex data dump, the CPU registers and flags, and the stack contents You can 
1549
    also patch code using the built-in assembler. If there is already a CPU 
1550
    window on the screen, you are positioned in that window. 
1551
    <P>The Dump command opens a Dump window showing the contents of an area of 
1552
    memory that you specify. You can view the data as raw hex bytes or in any of 
1553
    the supported number formats, including 32-bit integers and four types of 
1554
    floating-point numbers. This window works the same as the Data pane in a CPU 
1555
    window. This window is useful if you just want to look at an area of memory, 
1556
    and don't care about the rest of the CPU state that the CPU window displays. 
1557
 
1558
    <P>The Execution history command opens an Execution history window that 
1559
    shows a list of instruction that can be undone, and a list of keystroke 
1560
    checkpoints that you can recover to. This lets you "go back in time" if you 
1561
    step beyond the location where a problem occurs. 
1562
    <P>The File command opens a File window that shows the contents of a file 
1563
    that you specify. You are prompted for the file name; you can enter a 
1564
    wildcard specification and select a file from the displayed list. You can 
1565
    also edit the contents of the file in hex or ASCII text. If there is already 
1566
    a File window on the screen, the file you selected is displayed in that 
1567
    window. To open another File window, use the View/Another main menu command. 
1568
 
1569
    <P>The Hierarchy command opens an Object Hierarchy window that shows all the 
1570
    Pascal or C++ object types, both in alphabetical order and as a tree showing 
1571
    ancestor/descendant relationships. 
1572
    <P>The Log command opens a Log window that shows a scrolling log of messages 
1573
    from the following events: 
1574
    <UL>
1575
      <LI>Breakpoints that log an expression 
1576
      <LI>Program trace, step, and breakpoint addresses 
1577
      <LI>User comments 
1578
      <LI>Window pane dumps </LI></UL>The contents of the Log window can also be 
1579
    written continuously to disk. 
1580
    <P>The Clipboard command opens a Clipboard window showing the items copied 
1581
    to the clipboard. You can examine clipboard items, delete them, or open a 
1582
    Window to show you the contents of an item. Use the Edit/Copy command to put 
1583
    text, data and addresses onto the clipboard. Use the Edit/Paste command to 
1584
    place clipboard items into prompts or windows. The type of data copied to 
1585
    the clipboard depends on which window or pane it is clipped from. 
1586
    <P>The Module command opens a Module window that shows a source file for the 
1587
    module. You can select a module to view from the list of modules in the 
1588
    program. If there is already a Module window on the screen, the module you 
1589
    selected is displayed in that window. If you want to open another Module 
1590
    window, use the View/Another main menu command. F3 is the hot key for this 
1591
    command. The Module window title shows the name of the module you are 
1592
    viewing, the current source file for the module, and the line number that 
1593
    the cursor is on. If the source file has been changed since the module was 
1594
    compiled and linked into your program, the message (modified) appears before 
1595
    the current line number. This warns you that your source file might be out 
1596
    of sync with the program you are debugging and that the cursor might not 
1597
    always appear on the correct line of source code. 
1598
    <P>The Numeric Processor command opens a Numeric Processor window that shows 
1599
    the contents of the 80x87 stack registers, the control bits, and the status 
1600
    bits. You can modify the floating-point registers and the control and status 
1601
    fields of the numeric processor. 
1602
    <P>The Registers command opens a window that shows the current contents of 
1603
    the CPU registers and flags. You can examine or change their values. This 
1604
    window works the same as the Register pane in a CPU window. It is useful if 
1605
    you just want to look at the CPU registers, and don't care about the rest of 
1606
    the CPU state displayed in the CPU window. 
1607
    <P>The Stack command opens a Stack window that shows the currently active 
1608
    calling stack. All functions starting from the call at the start of the 
1609
    program are shown, along with their arguments. From this window, you can 
1610
    also examine the variables inside a particular instance of a function on the 
1611
    stack; this is useful, for example, if you are using a recursive function. 
1612
    <P>The Variables command opens a Variables window that shows a list of 
1613
    symbols and their values for the current module and function, as well as a 
1614
    list of your program's global symbols and their values. 
1615
    <P>The Watches command opens a Watches window displaying the value of 
1616
    variables or expressions in your program that you specified using either the 
1617
    Data Add Watch main menu command or the Watch speed menu command in a Module 
1618
    window. 
1619
    <P></P>
1620
    <LI>Run <BR>The Run menu commands execute your program. If Screen Updating 
1621
    is enabled, your program screen is restored before execution continues. 
1622
    <P>The Trace Into command executes a single instruction or source line. If 
1623
    the current window is not a CPU window, the next source line is executed. If 
1624
    the current window is a CPU window, a single instruction is executed. Some 
1625
    instructions cause the CPU to execute the following instruction as well as 
1626
    the current instruction. Among these are instructions such as loading of 
1627
    segment registers, for example, MOV SS,AX. The F7 key is the hot key that 
1628
    executes this command. 
1629
    <P>The Step Over command executes a single instruction or source line and 
1630
    skips over any procedure calls. If the current window is not a CPU window, 
1631
    the next source line is executed. If any part of the source line contains 
1632
    function calls, they are executed without stopping. If the current window is 
1633
    a CPU window, a single instruction is executed. If the current instruction 
1634
    is a CALL instruction, the entire subroutine is executed without 
1635
    interruption, and the program stops at the instruction following the CALL 
1636
    instruction. Instructions with a REP, REPNZ, or REPNE prefix are also 
1637
    executed without interruption. The F8 key is the hot key that executes this 
1638
    command. 
1639
    <P>The Go to Cursor command executes your program until it reaches the 
1640
    currently highlighted source or instruction line. The current window must be 
1641
    a CPU or a Module window so that the location to execute to can be 
1642
    determined. The F4 key is the hot key that executes this command. 
1643
    <P>The Execute To command executes your program and stops at the specified 
1644
    location in the program. You are prompted for the program address at which 
1645
    to stop. You can enter an address in any of the valid address formats. 
1646
    Alt-F9 is the hot key that executes this command. 
1647
    <P>The Program Reset command reloads the current program from disk. This 
1648
    command is useful if you've run the program too far during a debugging 
1649
    session and need to restart execution at the start of the program. This 
1650
    command is necessary, since you usually can't restart a program simply by 
1651
    starting execution at the beginning of the program. A full reload from disk 
1652
    reinitializes data items that the program expects to contain a particular 
1653
    value when the program is first started. Ctrl-F2 is the hot key for this 
1654
    command. 
1655
    <P>The Run Arguments command lets you set or change the command-line 
1656
    arguments for the program you are debugging. Use this command if you are 
1657
    debugging a program that requires one or more command-line arguments, but 
1658
    you entered either no arguments or erroneous ones with the File/Open 
1659
    command. 
1660
    <P>The Run/Wait for child main menu command lets you specify whether Turbo 
1661
    Debugger waits for the program you are debugging to stop before letting you 
1662
    issue additional commands. If you set it to No, Turbo Debugger lets you 
1663
    issue more commands after you run the program you are debugging. This lets 
1664
    you examine data items in your program while it is executing. However, you 
1665
    can't examine the CPU registers as the program is running - you see their 
1666
    values as of when your program last stopped. Use the Run/Next pending status 
1667
    command to retrieve status information from your program. 
1668
    <P>The Animate command is a self-repeating Trace Into command. Instructions 
1669
    or source lines are executed continuously until a key is pressed. Turbo 
1670
    Debugger's display changes to reflect the current program state between each 
1671
    trace, which allows you to watch the flow of control in your program. You 
1672
    are prompted for the rate at which to step instructions. 
1673
    <P>The Run command executes your program continuously until either a 
1674
    breakpoint is encountered, the program is interrupted with the Interrupt 
1675
    key, or the program terminates. The F9 key is the hot key that executes this 
1676
    command. 
1677
    <P>The Until Return command executes the program being debugged until the 
1678
    current function or procedure returns to its caller. This is useful if you 
1679
    have accidentally issued a Trace Into command when you really wanted to do a 
1680
    Step Over command, or when you have stepped through enough of a function to 
1681
    determine that it is working correctly, and you wish to execute the rest of 
1682
    it without interruption. Alt-F8 is the hot key that executes this command. 
1683
    <P>The Instruction Trace command executes a single machine instruction. 
1684
    After using the command, you are usually left in a CPU window. Use this 
1685
    command when you want to 
1686
    <UL>
1687
      <LI>trace into an interrupt call in the CPU window. 
1688
      <LI>trace into a function in a module that was not compiled with debug 
1689
      information. 
1690
      <LI>watch each instruction execute that makes up a source line. 
1691
    </LI></UL>Alt-F7 is the hot key for this command. 
1692
    <P>The Back trace command undoes the last instruction or source statement. 
1693
    The processor and memory state are restored to the way they were before the 
1694
    instruction or source line was traced over. The Alt-F4 key is the hot key 
1695
    for this command. The history pane of the Execution history window contains 
1696
    a list of saved steps and allows you to control when stepping and tracing 
1697
    information is saved. 
1698
    <P>The Next pending status command lets you retrieve a status message from a 
1699
    process that is executing asynchronously. If you use the Wait for child 
1700
    command to specify that the program you are debugging can run in the 
1701
    background while Turbo Debugger is running, the status display in the top 
1702
    right corner of the screen changes to say PENDING when a process wants to 
1703
    report something, such as a breakpoint being hit or the process terminating. 
1704
 
1705
    <P></P>
1706
    <LI>Breakpoints <BR>The Breakpoints menu commands let you set and clear 
1707
    breakpoints. 
1708
    <P>The Toggle command sets or clears a breakpoint at the currently 
1709
    highlighted address in a Module window or CPU window Code pane. Your program 
1710
    stops every time it reaches a line where you have set a breakpoint. You can 
1711
    modify the behavior of the breakpoint by opening a Breakpoint window. This 
1712
    lets you set a pass count or a condition that must be true before the 
1713
    breakpoint happens, and also define what to do when the breakpoint is 
1714
    triggered. The F2 key is the hot key that executes this command. You can 
1715
    also click the mouse in the first two columns. 
1716
    <P>The At command sets a breakpoint at a specific location in your program. 
1717
    You are prompted for the address at which to set the breakpoint and for any 
1718
    options. Alt-F2 is the hot key that executes this command. 
1719
    <P>The Changed Memory Global command allows you to set a breakpoint that 
1720
    occurs when an area of memory changes value. You are prompted for the memory 
1721
    area to watch. Your program executes more slowly if you set any of these 
1722
    breakpoints. If you are running on an 80386 or later processor, make sure 
1723
    you've installed the hardware device driver supplied on the distribution 
1724
    disk; this speeds up global breakpoints. If you have a hardware debugger 
1725
    board, see if the vendor supplies a device driver that lets it work with 
1726
    Turbo Debugger. 
1727
    <P>The Expression True Global command allows you to set a breakpoint that 
1728
    occurs when the value of an expression becomes true. You are prompted for 
1729
    the expression that must become true in order for your program to stop. Your 
1730
    program executes more slowly if you set any of these breakpoints. 
1731
    <P>The Hardware breakpoint command lets you quickly and easily set a general 
1732
    purpose hardware breakpoint. The dialog box lets you set the type of 
1733
    hardware breakpoint, exactly as if you had issued the Hardware options 
1734
    command in the Breakpoint window speed menu. 
1735
    <P>The Delete All command removes all the breakpoints from your program. Use 
1736
    this command when you want to continue debugging your program but no longer 
1737
    want it to stop at any breakpoint locations you've previously set. 
1738
    <P></P>
1739
    <LI>Data <BR>The Data menu commands allows you to examine variables and 
1740
    memory areas in your program. You can also evaluate Expressions and change 
1741
    their values. 
1742
    <P>The Inspect command opens an Inspector to show the value of a variable or 
1743
    a memory-referencing expression. You are prompted for the variable or 
1744
    memory-referencing expression to inspect. If the cursor was in a Text pane 
1745
    when you issued this command, the prompt is initialized to contain the 
1746
    variable under the cursor, if any. If you have marked an expression using 
1747
    the Ins key, the prompt is initialized to the marked expression. 
1748
    <P>The Evaluate/Modify command evaluates an arbitrary expression. Enter an 
1749
    expression followed by an optional format control string that's separated 
1750
    from the expression with a comma (,). The value appears in the middle pane. 
1751
    You can move to this pane to scroll long value displays or error messages. 
1752
    If the result is changeable, you can change the expression's value by moving 
1753
    to the bottom pane (press the Tab key), typing a new value, and pressing 
1754
    Enter. If the cursor was in a Text pane when you issued this command, the 
1755
    prompt is initialized to contain the variable under the cursor, if any. If 
1756
    you have marked an expression using the Ins key, the prompt is initialized 
1757
    to the marked expression. 
1758
    <P>The Data Add Watch command places an expression or variable on the watch 
1759
    list displayed by the Watches window. If the cursor was in a Text pane when 
1760
    you issue this command, the prompt is initialized to contain the variable 
1761
    under the cursor, if any. If you have marked an expression using the Ins 
1762
    key, the prompt is initialized to the marked expression. 
1763
    <P>The Data Function return command lets you examine the value that is about 
1764
    to be returned by the current function. You can only issue this command just 
1765
    before the function is about to return to the function that called it. 
1766
    <P></P>
1767
    <LI>Options <BR>The Options menu commands allow you to adjust a number of 
1768
    options that have a global effect on the behavior of Turbo Debugger. 
1769
    <P>The Options Language command lets you specify how Turbo Debugger 
1770
    interprets expressions you type in. You can select from one of the languages 
1771
    that Turbo Debugger supports. 
1772
    <P>The Options Macros command lets you set and clear macros assigned to 
1773
    different keys. 
1774
    <UL>
1775
      <LI>Create - The Create command lets you assign a new sequence of 
1776
      keystrokes to any key on the keyboard. Alt = is the hot key for this 
1777
      command. You are prompted to press the key you wish to assign a macro to. 
1778
      Then you can enter the keystrokes that make up the macro, which is acted 
1779
      upon just as if you typed them without recording a macro. End the macro 
1780
      definition by pressing either Alt - or the key you are assigning the macro 
1781
      to, or issuing the Options Macros Stop Recording main menu command. 
1782
      <LI>Delete All - The Delete all command deletes all keystroke macros. Use 
1783
      this command when you wish to restore all keys to their original functions 
1784
      and free the macro memory for a new set of keystroke macros. 
1785
      <LI>Remove - The Remove command lets you remove a sequence of keystrokes 
1786
      assigned to a key. This returns the key to its original function. You are 
1787
      prompted to press the key for the macro you wish to delete. 
1788
      <LI>Stop Recording - The Stop Recording command stops keystroke 
1789
      remembering for the macro you're presently recording. If you use this menu 
1790
      command, it will be recorded as part of the macro. Use one of the 
1791
      following single-key stop methods to avoid this: <PRE>*  Alt - (hyphen).
1792
*  Pressing the key that you are assigning the
1793
   macro to.
1794
</PRE>Assigning no keystrokes to a key makes it perform no action. To 
1795
      restore a key to its original function, use the Remove command. 
1796
    </LI></UL>You can use macros to record command sequences that you often 
1797
    repeat, as well as to record commands from the start of a session. This is 
1798
    very useful when you must keep restarting and getting back to a certain 
1799
    place in your program. 
1800
    <P>The Display options command lets you adjust the appearance of Turbo 
1801
    Debugger's display screen. 
1802
    <P>The Options Path for Source command lets you set where Turbo Debugger 
1803
    looks for the source files that make up your program. Source files are 
1804
    searched for first where the compiler found them, then in each directory 
1805
    specified by this command or the -sd command line option, then in the 
1806
    current directory, and finally in the directory that contains the program 
1807
    you are debugging. 
1808
    <P>The Save Options command brings up a dialog that lets you select which 
1809
    part of your current configuration you wish to save to disk and the file 
1810
    name to use. 
1811
    <P>The Restore Options command loads a configuration file from disk. You 
1812
    must have previously saved the configuration file by using the Save options 
1813
    command or the customization program to create the configuration file. 
1814
    Depending on which option of the Save options command you used, the 
1815
    configuration can contain only macros, only window layouts, or an entire 
1816
    configuration. 
1817
    <P></P>
1818
    <LI>Window <BR>The Window menu commands let you perform certain operations 
1819
    on the windows on screen with the following commands: <PRE>  Zoom       Size/move        Undo Close
1820
  Next       Iconize/restore
1821
  Next Pane  Close            User screen
1822
</PRE>At the bottom of the list appears a list of all the windows open on 
1823
    the screen. Select one of these to go directly to that window. Use the View 
1824
    menu commands to create new windows. The F5 key zooms the current window and 
1825
    the F6 key takes you to the next window. </LI></UL>
1826
  <P></P>
1827
  <LI><B>Modifying data</B> <BR>There are several ways to modify program data: 
1828
  <UL>
1829
    <LI>Use the Data Evaluate/Modify command and type in a new value for an 
1830
    expression. 
1831
    <LI>Use the Data Evaluate/Modify command and evaluate an expression that has 
1832
    side effects, such as an assignment statement or one that uses the C ++ or 
1833
    -- operators on a pointer variable. 
1834
    <LI>Use the Change command in the speed menu for the Data pane of a CPU 
1835
    window. This is good for examining and modifying data as a raw hex dump. 
1836
    </LI></UL>
1837
  <P></P>
1838
  <LI><B>Moving windows</B> <BR>The Size/move command lets you change the size 
1839
  and/or position of the current window. Once you have issued the command, use 
1840
  the cursor keys to move the window and Shift plus the cursor keys to resize 
1841
  it. Pressing the Ctrl-F5 key is the hot key for this command. 
1842
  <P></P>
1843
  <LI><B>Operator precedence</B> <BR>
1844
  <P></P>
1845
  <LI><B>Panes</B> <BR>Panes are the individual display areas that make up each 
1846
  window. Each pane is associated with a speed menu of commands unique to that 
1847
  pane. There are two types of panes: List panes and Text panes. List panes show 
1848
  an alphabetically ordered list of items from which to select. Text panes 
1849
  display the contents of a disk file. 
1850
  <P></P>
1851
  <LI><B>Pascal constants</B> 
1852
  <LI><B>Pascal expressions</B> 
1853
  <LI><B>Pascal operators</B> 
1854
  <LI><B>Pascal strings</B> 
1855
  <LI><B>Pascal variables</B> 
1856
  <LI><B>Program Execution</B> <BR>The Run Menu command has several options for 
1857
  how to execute your program. Since you use these commands frequently, most are 
1858
  available on function keys: <PRE>F4      Go to cursor Alt-F7  Instruction trace
1859
F7      Trace into           Animate
1860
F8      Step over    Alt-F8  Until return
1861
F9      Run          Alt-F9  Execute to
1862
Alt-F4  Back trace
1863
</PRE>
1864
  <P></P>
1865
  <LI><B>Prompts</B> <BR>Prompts indicate you must supply additional information 
1866
  to process a command. A prompt dialog has an entry field in which you can 
1867
  input text; you can scroll to accommodate long input lines. The dialog title 
1868
  describes what you must enter. 
1869
  <P></P>
1870
  <LI><B>Scoping</B> <BR>Normally, Turbo Debugger and Turbo Profiler look for a 
1871
  symbol in an expression in the same way that the compiler for the current 
1872
  language would search. For example in C, first it looks in the current 
1873
  function, then in the current module for a static (local) symbol, then for a 
1874
  global symbol. If it doesn't find the symbol using these techniques, it 
1875
  finally searches through all the other modules to try to find a static symbol 
1876
  that matches. This lets you reference static functions in other modules 
1877
  without having to mention the module name explicitly. Turbo Debugger uses a 
1878
  similar approach with the other languages. 
1879
  <P>If you want to force Turbo Debugger or Profiler to look elsewhere for a 
1880
  symbol, you can exert total control over where to look for a symbol name. You 
1881
  can specify a module, a file within a module, and/or a function to search. 
1882
  Where the debugger looks for a variable is known as the "scope" of that 
1883
  variable. 
1884
  <P>Normally you use pound signs (#) to separate the components of the scope. 
1885
  If it is not ambiguous in the current language, you can use dots (.) instead 
1886
  of #, and also omit the initial pound sign or dot. 
1887
  <P>The following syntax describes scope overriding, with brackets [] 
1888
  indicating optional items: 
1889
  <P>[#module [#filename]] #linenum [#variablename] <BR>or <BR>[#module 
1890
  [#filename]] [#funcname] #variablename 
1891
  <P>If you do not specify a module or file, the current module and file is 
1892
  assumed. For example, #123 refers to line 123 in the current module. 
1893
  <P>Scope examples: <PRE> #module1#myvar   "myvar" accessible from module
1894
                  "module1"
1895
 
1896
 #myfunc#var1     "var1" accessible from routine
1897
                  "myfunc"
1898
 
1899
 module2#99       Line 99 in module "module2"
1900
 
1901
 m1#fil2#fun1     "fun1" accessible from file
1902
                  "fil2" included in module "m1"
1903
</PRE>
1904
  <P></P>
1905
  <LI><B>Screen updating</B> 
1906
  <LI><B>Speed Menus</B> <BR>Each pane has a speed menu for commands specific to 
1907
  that pane. To access the speed menu, press Alt-F10. To invoke an item in a 
1908
  speed menu quickly, hold down Ctrl and press the hot key letter of the menu 
1909
  item. You can use the TDINST customization utility to set or cancel these 
1910
  control-key hot keys. 
1911
  <P></P>
1912
  <LI><B>Stack</B> <BR>There are two ways to view the stack: 
1913
  <UL>
1914
    <LI>A list of active functions and the arguments they are called with. The 
1915
    active function calling list is displayed in a Stack window. 
1916
    <LI>A raw hex dump The hex dump of the stack contents is shown in the Stack 
1917
    pane of a CPU window. </LI></UL>
1918
  <P></P>
1919
  <LI><B>Static variables</B> <BR>Static variables are those defined as being 
1920
  accessible only in the module in which they are defined. The C static keyword 
1921
  is used as part of the declaration for the variable. You can view the static 
1922
  variables in a module by creating a Variables window. The static variables 
1923
  appear in the bottom pane of that window. 
1924
  <P></P>
1925
  <LI><B>Status info</B> <BR>A number of messages can appear either in the 
1926
  information box displayed with the File/Get Info command or when control 
1927
  returns to Turbo Debugger after executing part of your program. See TD Help 
1928
  for full info. 
1929
  <P></P>
1930
  <LI><B>Technical notes</B> 
1931
  <LI><B>Tracepoints</B> <BR>You use breakpoints to specify something you want 
1932
  done when your program has run to a specific source line number or address. 
1933
  <P>You can set a breakpoint to stop your program at any source line or 
1934
  address. Position the cursor on the desired line and press F2. Press F2 again 
1935
  to clear the breakpoint. 
1936
  <P>You can also set a breakpoint by clicking the mouse in one of the first two 
1937
  columns of the line that you want to set the breakpoint on. 
1938
  <P>Turbo Debugger's breakpoints perform all the same jobs as the breakpoints, 
1939
  watchpoints, and tracepoints of other debuggers. 
1940
  <P>A breakpoint can be instructed to perform one of the following actions: <PRE>  Break       Stop your program
1941
  Log         Log the value of variables
1942
  Execute     Execute an expression
1943
</PRE>You can set a breakpoint to execute on one of the following conditions: <PRE>
1944
Always           Every time it is encountered
1945
Expression true  Only when an expression is true
1946
Changed memory   Only when a memory area changes
1947
Hardware         When a hardware breakpoint occurs
1948
</PRE>Breakpoints can also be qualified by setting a Pass Count that specifies 
1949
  how many times the breakpoint must be passed over before being activated. 
1950
  <P>A breakpoint can also be set at a global address, which means that it 
1951
  occurs on every source line or instruction address. This allows you to watch 
1952
  the value of a variable as each line is executed, or to stop when a variable 
1953
  or area of memory changes value. 
1954
  <P></P>
1955
  <LI><B>Variable scoping</B> 
1956
  <LI><B>Viewers</B> <BR>The View menu commands open windows that "view" part of 
1957
  the program you are debugging. Use the Another option in this menu to open 
1958
  another instance of a Dump, File, or Module window that you already have 
1959
  displayed on the screen. 
1960
  <P></P>
1961
  <LI><B>Watchpoints</B> <BR>See Tracepoints. 
1962
  <P></P>
1963
  <LI><B>Windows</B> <BR>You create windows with the View menu commands. The 
1964
  active window has a double line border and a highlighted title. Each window is 
1965
  divided into one or more panes. Each pane has a Speed Menu for commands 
1966
  specific to that pane. 
1967
  <P></P></LI></UL><A name=OTHER></A>
1968
<H2>Other sites with help for BCC 5.5</H2>
1969
<P>This section will list other non-Borland web sites that have additional 
1970
information about Borland's free command line tools. 
1971
<UL>
1972
  <LI><A href="http://www.sirma.bg/Jogy/bcc55.html">Archive of Helmut Pharo's 
1973
  Site</A> <BR>This site has a pretty nice document about getting and setting up 
1974
  BCC 5.5. That information isn't much different than what is here, but the site 
1975
  also has a nice tutorial section for building a simple Window's GUI app with 
1976
  BCC 5.5, and some other nice tutorial information. Highly recommended. 
1977
  <BR>This used to be run by Helmut Pharo, but it is no longer directly 
1978
  available. The link is to an archived version. (link updated Feb. 22, 2003) 
1979
  </LI></UL><A name=HELPME></A>
1980
<H2>Help Improve VIDE for BCC &nbsp;<FONT size=1><A 
1981
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2>
1982
<P>Please note that VIDE will remain primarily focused on the GNU MinGW gcc 
1983
compiler. However, I do plan to continue support for the free Borland BCC 5.5. 
1984
Remember that VIDE is GPLed, so the code is available for modification. 
1985
<P>First, if I've gotten some default behavior wrong, please suggest a 
1986
reasonable alternative. But remember, I chose the defaults here mainly to 
1987
simplify typical, simple applications. Advanced users are expected to edit the 
1988
Project file or makefile to get more options. 
1989
<P>If you don't like the layout of this document (like tables might be better), 
1990
chip in and fix it. I'll fold it back into the standard distribution. 
1991
<P><A name=Disclaimer></A>
1992
<H3>Disclaimer &nbsp;<FONT size=1><A 
1993
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3>
1994
<P>First, the Borland C++ 5.5 compiler is not the main compiler supported by 
1995
VIDE (gcc is). However, VIDE has supported BCC long enough now that it is very 
1996
stable. If you have any problems using VIDE with BCC, please report them back to 
1997
me. 
1998
<P>This information was assembled for publicly available sources and is intended 
1999
merely to help use VIDE with Borland BCC32. There is no guarantee of its 
2000
accuracy, although it seems to be correct, but may be incomplete. 
2001
<HR>
2002
<A name=warranty></A>
2003
<H2>No Warranty &nbsp;<FONT size=1><A 
2004
href="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2>
2005
<P>This program is provided on an "as is" basis, without warranty of any kind. 
2006
The entire risk as to the quality and performance of the program is borne by 
2007
you. 
2008
<P><B>VIDE Reference Manual</B><BR>Copyright © 1999-2000, Bruce E. 
2009
Wampler<BR>All rights reserved. 
2010
<P>Bruce E. Wampler, Ph.D.<BR><A 
2011
href="mailto:bruce@objectcentral.com">bruce@objectcentral.com</A> <BR><A 
2012
href="http://www.objectcentral.com/">http://www.objectcentral.com/</A><BR></P></BODY></HTML>