Blame | Last modification | View Log | RSS feed
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- saved from url=(0057)http://www.objectcentral.com/vide/help/videdoc/bcc32.html --><HTML><HEAD><TITLE>vApp</TITLE><META http-equiv=Content-Type content="text/html; charset=windows-1252"><LINKhref="vApp_files/vstyle.css" rel=StyleSheet><META content="MSHTML 6.00.2800.1522" name=GENERATOR></HEAD><BODY><CENTER><IMG height=72 alt="" src="vApp_files/vide.jpeg" width=72> <Ahref="http://www.objectcentral.com/vide/help/videdoc/videdoc.htm">VIDE User Guide</A></CENTER><HR><A name=top></A><CENTER><H1>The Borland C++ Compiler 5.5</H1><BR>15 September 2000 </CENTER><UL><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#getting">Gettingand Using the Free Borland C++ Compiler 5.5</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#Setup">Settingup BCC 5.5</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#BCC-VIDE">UsingBorland C++ with VIDE</A><LI>BCC32 Quick Reference<UL><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#BCC32Switches">BCC32.EXESwitches</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#ILINK32Switches">ILINK32.EXE- Switches</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#BCCLibs">BCC32Libraries</A><LI>Turbo Debugger Reference</A><UL><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#TD32-cmdline">CommandLine Switches</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#TD32-keys">KeyboardCommand Shortcuts</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#TD32-help">TDHelp</A> </LI></UL></LI></UL><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#OTHER">Othersites with help for BCC 5.5</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#HELPME">HelpImprove VIDE for BCC</A><LI><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#Disclaimer">Disclaimer</A></LI></UL><P>This document is intended to help you use the free version of the Borland C++compiler with VIDE. The Borland compiler is a good compiler, but the freeversion has some deficiencies. VIDE provides a development environment thatmakes using BCC 5.5 much easier. The free version is also a bit thin on itsdocumentation. This situation has improved, and this document will help any BCC5.5 user (with or without VIDE) use BCC 5.5 better. There is some importantinformation about BCC 5.5 here that is very difficult to find elsewhere.<P><A name=getting></A><H2>Getting and Using the Free Borland C++ Compiler 5.5 <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2><P>The Borland C++ Compiler 5.5 is available at <Ahref="http://www.borland.com/bcppbuilder/freecompiler/">http://www.borland.com/bcppbuilder/freecompiler/</A>.You have to fill out a bunch of web forms, and eventually get to download thecompiler. The download is about 8 Megabytes long.<P>Borland has made some service packs available to update the compiler. Thelatest full download on the Borland site will include the latest patches, but ifyou have a previous version of the compiler, you should apply the service packs.<P>At the same time you download the compiler, you should also down load thedebugger, Turbo Debugger, TD32. VIDE supports starting TD32 from inside VIDE.You must use TD to set breakpoints and view the source, but the interaction isas painless as possible.<P>Borland has also made extra documentation available. Most of what you need isincluded with the compiler, but documentation on the C and C++ libraries are notincluded with the free compiler. The most helpful files you need are inB5STD.ZIP found at <Ahref="http://www.borland.com/techpubs/bcppbuilder/v5/updates/std.html">http://www.borland.com/techpubs/bcppbuilder/v5/updates/std.html</A>.That file is 7.5 MB, but is probably worth the download.<P>Once you download the compiler, the debugger, and the optional help files,you have to install them. The compiler and debugger downloads areself-extracting installers. It is probably a good idea to install them in thedefault location: <TT>c:\borland\bcc55</TT>. Once you've installed the compiler,you need to read the <TT>README.TXT</TT> file. It tells important details forinstallation. These details are summarized in this document as well.<P><A name=Setup></A><H2>Setting up BCC 5.5 <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2><H3>Configuration Files</H3><P>The most important thing you need to do is set up two configuration files onthe <TT>\bin</TT> directory. The Borland instructions don't make that locationclear. Assuming you installed the compiler to the default locations, you need tocreate two files. The first, <TT>C:\Borland\BCC55\bin\bcc32.cfg</TT> shouldcontain: <BR><PRE>-I"c:\Borland\Bcc55\include"-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"</PRE><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"</PRE><P>The purpose of these two files is to allow the compiler to find the standardsystem include and library files. Note that the Borland README.TXT leaves outthe <TT>\psdk</TT> entry. If you leave that out, then the compiler won't be ableto find all the standard Windows API files contained there.<P>Also note that you can add other entries to these files to change the defaultbehavior of the compiler. For example, you might want to add <TT>-wuse-</TT> to<TT>bcc32.cfg</TT> to stop the compiler from issuing warnings about variablesthat are declared but never used. See the next section on specific switchesrecommended for VIDE.<P><H3>Environment Path</H3><P>In addition to these two configuration files, you need to add the compiler<TT>\bin</TT> directory to the PATH environment variable. On Windows9x, you editthe file <TT>C:\autoexec.bat</TT>. Simply add <TT>c:\borland\bcc55\bin</TT> tothe <TT>PATH</TT> command. On NT, you use the system settings menu off the Startmenu to change the PATH in the environment. Note that if you are using VIDE, youwill need to have the VIDE directory on your path, too.<P><H3><B><I>IMPORTANT WARNING!</I></B></H3><P>The standard Windows header files included with Borland BCC 5.5 (e.g.,<TT>windows.h</TT>) are set up to compile Windows applications for Windows 2000!This is NOT documented anywhere in the help files that come with BCC 5.5. Thereare some significant differences in some Win32 API calls for Win2K and earlierWin95, Win98, and WinNT 4.0 versions. Code compiled for Win2K (which is thedefault) will not run correctly on older versions of Windows. Code compiled forolder versions will run on Win2K.<P>You should consider adding the following 2 lines to your<TT>C:\Borland\BCC55\win32.cfg</TT> file if you want code that works on Windowsversions prior to Win2K! <PRE>-DWINVER=0x0400-D_WIN32_WINNT=0x0400</PRE><P>These switches will be added to the compile line by VIDE, but it would be agood idea to include them in your bcc32.cfg file as well.<P><H3>General Notes</H3><P>Note that many switches can be negated by following it with a '-'. Forexample, '-v-' means no debugging information.<P>If you want to make any of these switches the default behavior, you can addthem to the BCC32.CFG and ILINK32.CFG files in the <TT>/bin</TT> directory ofthe Borland command line tools.<P><A name=BCC-VIDE></A><H2>Using Borland C++ with VIDE <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2><P><H3>Using BCC32</H3><P>VIDE hides most of the details of using the command line tools from you.However, underneath it all, the command line tools are still there. This sectionexplains some of the details of using VIDE with BCC32.<H4>Borland Configuration files</H4><P>It is <I>essential</I> that you have the two compiler <TT>.cfg</TT> files setup in the <TT>\bin</TT> directory. The following files are suggested:<P><B>bcc32.cfg</B><P><PRE>-w-I"c:\Borland\Bcc55\include"-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"</PRE><P>The '-w' switch turns on warnings. You might want to refine the with some'-wxxx-' switches to suppress some of the warnings.<P><B>ilink32.cfg</B><P><PRE>-x-L"c:\Borland\Bcc55\lib;c:\Borland\Bcc55\lib\psdk"</PRE><P>The '-x' switch turns off the map file. If you want to supress incrementallinking, you can add the '-Gn' switch.<P><P><A href="" name="VIDE Options"></A><H4>VIDE Options</H4><P>To use VIDE with the Borland compiler, you <I>MUST</I> set the path to theroot of the compiler directory in the <B>Options->VIDE</B> dialog. You shouldset the <TT>Compiler root:</TT> value to the directory of the Borland compiler(not the \bin directory). If you installed BCC32 to the default directory, thenthis would be <TT>c:\Borland\bcc55</TT>. Note that if you've installed BCC32 toa directory with a space in its name, you need to enclose the path in quotationmarks here. For example, <TT>"c:\Program Files\Borland\bcc55"</TT>. You shouldalso select Borland BCC as the compiler in the Radio Button list.<P><H4>Default Project Values</H4><P>Depending on whether you generate GUI or a Console application, the VIDEproject file sets some default values. These are visible in the<B>Project->Edit</B> project editor dialog.<P>The default compiler flags look like: <TT>-P -O1 -v-</TT>. The<TT>-P</TT> switch means C++ files, <TT>-O1</TT> is optimization for size, and<TT>-v-</TT> turns off debugging. Remember that you may have already set otherswitches in the <TT>bcc32.cfg</TT> file in the Borland compiler directory.<P>The linker flags line looks like:<TT>-v- -Tpe -ap -c -limport32 -l$(BCC32RTLIB)</TT>.These switches control the linker, and may change depending if you have aConsole or GUI app. The last two values are the names of the run time librariesneeded. <TT>Import32</TT> is always needed, and the other, <TT>BCC32RTLIB</TT>is the It can be a static or dynamic version, and <TT>cw32.lib</TT> staticversion is used by default.<P>The linker also must include a startup object code file, which varies for GUI("c0w32.obj") and console apps ("c0x32.obj"). There are also wide-char versionsof these two startup libraries. You can override the defaults by changing thevalue of <TT>BCC32STARTUP</TT> in the Advanced tab of project editor.<P><P><H4>Runtime Libraries</H4><P>BCC32 comes with 4 runtime libraries. There are single threaded andmultithreaded versions, and a static and dynamic version of each. The defaultlibrary is "cw32.lib", the single-threaded static library. You can use thedynamic version of this library by changing the value of <TT>BCC32RTLIB</TT> inthe advanced tab of the project editor to "cw32i" (no .lib, which is addedautomatically by VIDE). You also must either add the <TT>-D_RTLDLL</TT> definefrom the defines tab, or add the <TT>-tWR</TT> switch (<TT>-tWCR</TT> forconsole apps) to the compiler flags line, and recompile your program. You can doswitch to the static multi-threaded library ("cw32mt") or dynamic library("cw32mti") in a similar fashion.<P><H4>DEF files</H4><P>You may have some projects that require a <TT>.DEF</TT> file. If you needone, got to the Advanced tab in the project editor You will find the symbol<TT>BCC32DEF</TT> predefined with no value. Simply edit this entry to add thename of your <TT>.DEF</TT> file after the =. The file will then be used byILINK32. See Borland's documentation for more information about using<TT>.DEF</TT> files.<P><H4>Specifying Libraries</H4><P>VIDE allows you to specify libraries to link with on the <B>Linker flags</B>line of the Names tab of the project editor. This line is used for linker flags,<I>and</I> the names of libraries you need to add. You can see the default<TT>-limport32 -l$(BCC32RTLIB)</TT> when you create a new project. You can addyour own library names to this line, preferably <I>before</I> the<TT>-limport32</TT> entry. This <TT>-l</TT> syntax is not part of the Borlandcommand line options, but is converted by VIDE to the form appropriate in thegenerated Makefile.<P><H3>Using Turbo Debugger with VIDE</H3><P>Since Turbo Debugger 32 (TD32) is a stand alone debugger, the integrationwith VIDE is somewhat limited. The main thing you can do is automatically launchTD32 with the debug button on the VIDE tool bar.<P>If you are building a V application, you will see the TD CPU window when itstarts. This is because <TT>WinMain</TT> is in the V startup code, and not yourapplication code. To view source, you must view a module. Use the TD menucommands <B>View-<Module</B> (or <B>F3</B>) to open the module (source file)with the code you want to debug. Non-V apps should start with the file with<TT>main</TT> or <TT>WinMain</TT> already shown.<P>Once you are running TD32, you use it to view the source code lines, setbreakpoints, inspect variables, and all the usual debugging activities. When youfind a bug, you then edit the source file with VIDE and recompile. Before youcan recompile, you must quit TD32 (<B>Alt-X</B>). If you don't, you will get anerror message from the linker.<P>When you then restart TD32, you should then see the message "Restart info isold, use anyhow?" If you answer "No", then all your old break points will belost. If you answer yes, the breakpoints will still be there, and they getadjusted to the correct new line numbers if you've edited a file withbreakpoints. Unfortunately, TD32 doesn't seem to know how to preserve openmodule windows.<P>If you are debugging a new or different project, you should answer "No" tothe "Restart info" question the first time.<P><H2>BCC32 Quick Reference</H2><A name=BCC32Switches></A><H3>BCC32.EXE Switches <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3><TABLE width="90%" border=1><TBODY><TR><TD><B>switch</B></TD><TD><B>Switch Description</B></TD></TR><TR><TD><B>+filename</B></TD><TD>Use alternate configuration file named filename</TD></TR><TR><TD><B>@filename</B></TD><TD>Read compiler options from the response file filename</TD></TR><TR><TD><B>-3</B></TD><TD>Generate 80386 protected-mode compatible instructions. (Default for32-bit compiler)</TD></TR><TR><TD><B>-4</B></TD><TD>Generate 80386/80486 protected-mode compatible instructions.</TD></TR><TR><TD><B>-5</B></TD><TD>Generate Pentium protected-mode compatible instructions.</TD></TR><TR><TD><B>-6</B></TD><TD>Generate Pentium Pro protected-mode compatible instructions.</TD></TR><TR><TD><B>-a</B></TD><TD>Default (-a4) data alignment; -a- is byte.</TD></TR><TR><TD><B>-an</B></TD><TD>Align to n. 1=byte, 2=word (2 bytes), 4=double word (default), 8=quadword (8 bytes), 16=paragraph (16 bytes)</TD></TR><TR><TD><B>-A</B></TD><TD>Use only ANSI keywords. (Extensions like the far and near modifier nolonger recognized.)</TD></TR><TR><TD><B>-A-</B> (Default)</TD><TD>Enable Borland C++ keyword extensions: near, far, huge, asm, cdecl,pascal, interrupt, _export, _ds, _cs, _ss, _es.</TD></TR><TR><TD><B>-AK</B></TD><TD>Use only K&R keywords.</TD></TR><TR><TD><B>-AT</B></TD><TD>Use Borland C++ keywords (Alternately specified by -A-)</TD></TR><TR><TD><B>-AU</B></TD><TD>Use UNIX V keywords. (Extensions like the far and near modifier nolonger recognized.)</TD></TR><TR><TD><B>-b</B></TD><TD>Make enums always integer-sized. (Default: -b make enums integersize)</TD></TR><TR><TD><B>-B</B></TD><TD>Compiles assembly and calls TASM or TASM32. If you don't have TASM inyour path, checking this option generates an error. Also, old versions ofTASM might have problems with 32-bit generated assembler code.</TD></TR><TR><TD><B>-c</B></TD><TD>Compile source files, but does not execute a link command.</TD></TR><TR><TD><B>-C</B></TD><TD>Turn nested comments on. (Default: -C- turn nested commentsoff.)</TD></TR><TR><TD><B>-d</B></TD><TD>Merge duplicate strings. (Default)</TD></TR><TR><TD><B>-Didentifier</B></TD><TD>Define identifier to the null string.</TD></TR><TR><TD><B>-Didentifier=string</B></TD><TD>Define identifier to string.</TD></TR><TR><TD><B>-efilename</B></TD><TD>Derives the executable program's name from filename by adding the fileextension .EXE (the program name is then filename.EXE). filename mustimmediately follow the -e, with no intervening whitespace. Without thisoption, the linker derives the .EXE file's name from the name of the firstsource or object file in the file name list.</TD></TR><TR><TD><B>-Efilename</B></TD><TD>Use filename as the name of the assembler to use. (Default =TASM)</TD></TR><TR><TD><B>-f</B></TD><TD>Emulate floating point. (Default)</TD></TR><TR><TD><B>-f-</B></TD><TD>No Floating Point</TD></TR><TR><TD><B>-ff</B></TD><TD>Fast floating point. (Default)</TD></TR><TR><TD><B>-F</B></TD><TD>Uses fast huge pointers.</TD></TR><TR><TD><B>-Ff</B></TD><TD>Create far variables automatically.</TD></TR><TR><TD><B>-Ff=1</B></TD><TD>Array variable 'identifier' is near warning. (Default)</TD></TR><TR><TD><B>-Fm</B></TD><TD>Enables all the other -F options (-Fc, -Ff, and -Fs). Use this toquickly port code from other 16-bit compilers.</TD></TR><TR><TD><B>-gb</B></TD><TD>Stop batch compilation after first file with warnings (Default:-gb-).</TD></TR><TR><TD><B>-gn</B></TD><TD>Stop compiling after n messages. (Default: 255.)</TD></TR><TR><TD><B>-G</B></TD><TD>Optimize code for speed. (Default: -G- optimize code for size.)</TD></TR><TR><TD><B>-H</B></TD><TD>Generate and use precompiled headers. It might be calledBC32DEF.CSM.</TD></TR><TR><TD><B>-H-</B>(Default)</TD><TD>Does not generate and use precompiled headers.</TD></TR><TR><TD><B>-Hfilename</B></TD><TD>Sets the name of the file for precompiled headers</TD></TR><TR><TD><B>-H=filename</B></TD><TD>Set the name of the file for precompiled headers to filename.</TD></TR><TR><TD><B>-Hc</B></TD><TD>Cache precompiled headers. Use with -H, -Hxxx, -Hu, or -Hfilename.This option is useful when compiling more than one precompiledheader.</TD></TR><TR><TD><B>-Hu</B></TD><TD>Use but do not generate precompiled headers.</TD></TR><TR><TD><B>-in</B></TD><TD>Make significant identifier length to be n, where n is between 8 and250. (Default = 250)</TD></TR><TR><TD><B>-Ipath</B></TD><TD>Set search path for directories for include files to path.</TD></TR><TR><TD><B>-jb</B></TD><TD>Stop batch compilation after first file with errors. (default:off)</TD></TR><TR><TD><B>-jn</B></TD><TD>Errors: stop after n messages. (Default = 25)</TD></TR><TR><TD><B>-Ja</B></TD><TD>Expand all template members, including unused members.</TD></TR><TR><TD><B>-Jg</B></TD><TD>Generate definitions for all template instances and merge duplicates.(Default)</TD></TR><TR><TD><B>-Jgd</B></TD><TD>Generate public definitions for all template instances; duplicatesresult in redefinition errors.</TD></TR><TR><TD><B>-Jgx</B></TD><TD>Generate external references for all template instances.</TD></TR><TR><TD><B>-k</B></TD><TD>Turn on standard stack frame. (Default)</TD></TR><TR><TD><B>-k-</B></TD><TD>Turn off standard stack frame. Generates smaller code, but it can't beeasily debugged.</TD></TR><TR><TD><B>-K</B></TD><TD>Default character type unsigned. (Default: -K- default character typesigned.)</TD></TR><TR><TD><B>-lx</B></TD><TD>Pass option x to the linker. More than one option can appear after the-l (which is a lowercase L).</TD></TR><TR><TD><B>-l-x</B></TD><TD>Disable option x for linker.</TD></TR><TR><TD><B>-Lpath</B></TD><TD>Set search path for library files.</TD></TR><TR><TD><B>-M</B></TD><TD>Instruct linker to create a full link map.</TD></TR><TR><TD><B>-npath</B></TD><TD>Set the output directory to path.</TD></TR><TR><TD><B>-O</B></TD><TD>Optimize jumps. (Default: on)</TD></TR><TR><TD><B>-O1</B></TD><TD>Generate smallest possible code.</TD></TR><TR><TD><B>-O2</B></TD><TD>Generate fastest possible code.</TD></TR><TR><TD><B>-Od</B></TD><TD>Disable all optimizations.</TD></TR><TR><TD><B>-Ox</B></TD><TD>There are a bunch of tiny optimizations, but it is probably onlynecessary to used -O1 and -O2, so they are not covered here.</TD></TR><TR><TD><B>-OS</B></TD><TD>Pentium instruction scheduling. (Default: off: -O-S)</TD></TR><TR><TD><B>-p</B></TD><TD>Use Pascal calling convention. (This is a lowercase p.)</TD></TR><TR><TD><B>-pc</B></TD><TD>Use C calling convention. (Default same as -pc or -p-)</TD></TR><TR><TD><B>-pr</B></TD><TD>Use fastcall calling convention for passing parameters inregisters.</TD></TR><TR><TD><B>-ps</B></TD><TD>Use stdcall calling convention (32-bit compiler only).</TD></TR><TR><TD><B>-P</B></TD><TD>Perform a C++ compile regardless of source file extension. (Defaultwhen extension is not specified. This is an uppercase P.)</TD></TR><TR><TD><B>-Pext</B></TD><TD>Perform a C++ compile regardless of source file extension and set thedefault extension to ext. This option is available because someprogrammers use .C or another extension as their default extension for C++code.</TD></TR><TR><TD><B>-q</B></TD><TD>Quiet - suppress compiler banner.</TD></TR><TR><TD><B>-r</B></TD><TD>Use register variables. (Default)</TD></TR><TR><TD><B>-rd</B></TD><TD>Allow only declared register variables to be kept in registers.</TD></TR><TR><TD><B>-R</B></TD><TD>Include browser information in generated .OBJ files.</TD></TR><TR><TD><B>-RT</B></TD><TD>Enable runtime type information. (Default)</TD></TR><TR><TD><B>-S</B></TD><TD>Generate assembler source compiles the named source files and producesassembly language output files (.ASM), but does not assemble. When you usethis option, Borland C++ includes the C or C++ source lines as comments inthe produced .ASM file.</TD></TR><TR><TD><B>-tW</B></TD><TD>Make the target a Windows .EXE with all functions exportable.(Default)</TD></TR><TR><TD><B>-tWC</B></TD><TD>Make the target a console .EXE.</TD></TR><TR><TD><B>-tWD</B></TD><TD>Make the target a Windows .DLL with all functions exportable.</TD></TR><TR><TD><B>-tWM</B></TD><TD>Make a multithreaded application or DLL.</TD></TR><TR><TD><B>-tWR</B></TD><TD>Target uses the dynamic runtime lib. Can use -D_RTLDLL instead.</TD></TR><TR><TD><B>-tWCR</B></TD><TD>Target uses the dynamic runtime lib for CONSOLE apps.</TD></TR><TR><TD><B>-T-</B></TD><TD>Remove all previous assembler options.</TD></TR><TR><TD><B>-Tstring</B></TD><TD>Pass string as an option to TASM, TASM32, or assembler specified with-E.</TD></TR><TR><TD><B>-u</B></TD><TD>Generate underscores for symbols. (Default)</TD></TR><TR><TD><B>-Uname</B></TD><TD>Undefines any previous definitions of the named identifier name.</TD></TR><TR><TD><B>-v</B></TD><TD>Turn on source debugging.</TD></TR><TR><TD><B>-vi</B></TD><TD>Turn on inline expansion (-vi- turns off inline expansion).</TD></TR><TR><TD><B>-V</B></TD><TD>Create smart C++ virtual tables. (Default) This means the .objs arecompatible only with Borland tools. The V0 and V1 can apparently be usedwith other tools, but why?</TD></TR><TR><TD><B>-V0</B></TD><TD>Create external C++ virtual tables.</TD></TR><TR><TD><B>-V1</B></TD><TD>Create public C++ virtual tables.</TD></TR><TR><TD><B>-Vmd</B></TD><TD>Use the smallest representation for member pointers.</TD></TR><TR><TD><B>-Vmm</B></TD><TD>Member pointers support multiple inheritance.</TD></TR><TR><TD><B>-Vmp</B></TD><TD>Honor the declared precision for all member pointer types.</TD></TR><TR><TD><B>-Vms</B></TD><TD>Member pointers support single inheritance.</TD></TR><TR><TD><B>-Vmv</B></TD><TD>Member pointers have no restrictions (most general representation).(Default)</TD></TR><TR><TD><B>-Vx</B></TD><TD>Zero-length empty class member functions.</TD></TR><TR><TD><B>-w</B></TD><TD>Display warnings on.</TD></TR><TR><TD><B>-w!</B></TD><TD>Do not compile to .OBJ if warnings were found. (Note: there is nospace between the -w and the !.)</TD></TR><TR><TD><B>-wmsg</B></TD><TD>Enable user define #pragma messages.</TD></TR><TR><TD><B>-w-xxx</B></TD><TD>Disable xxx warning message.</TD></TR><TR><TD><B>-wxxx</B></TD><TD>Enable xxx warning message.<UL><LI>amb -Ambiguous operators need parentheses.<LI>amp -Superfluous & with function.<LI>asm - Unknown assembler instruction.<LI>aus - 'identifier' is assigned a value that is never used. (Default)<LI>bbf - Bit fields must be signed or unsigned int.<LI>bei - Initializing 'identifier' with 'identifier'. (Default)<LI>big - Hexadecimal value contains more than three digits. (Default)<LI>ccc - Condition is always true OR Condition is always false.(Default)<LI>cln - Constant is long.<LI>cpt - Nonportable pointer comparison. (Default)<LI>def - Possible use of 'identifier' before definition.<LI>dpu - Declare type 'type' prior to use in prototype (Default)<LI>dsz - Array size for 'delete' ignored. (Default)<LI>dup - Redefinition of 'macro' is not identical (Default)<LI>eas - 'type' assigned to 'enumeration'. (Default)<LI>eff - Code has no effect. (Default)<LI>ext - 'identifier' is declared as both external and static (Default)<LI>hch - Handler for '<type1>' Hidden by Previous Handler for'<type2>'<LI>hid - 'function1' hides virtual function 'function2' (Default)<LI>ibc - Base class '<base1>' is also a base class of'<base2>' (Default)<LI>ill - Ill-formed pragma. (Default)<LI>inl - Functions containing reserved words are not expanded inline(Default)<LI>lin - Temporary used to initialize 'identifier'. (Default)<LI>lvc - Temporary used for parameter 'parameter' in call to 'function'(Default)<LI>mpc - Conversion to type fails for members of virtual base classbase. (Default)<LI>mpd - Maximum precision used for member pointer type type. (Default)<LI>msg - User-defined warnings . This option allows user-definedmessages to appear in the IDE message window.<LI>nak - Non-ANSI Keyword Used: '<keyword>' (Note: Use of thisoption is a requirement for ANSI conformance.)<LI>ncf - Non-const function 'function' called for const object.(Default)<LI>nci - The constant member 'identifier' is not initialized. (Default)<LI>nod - No declaration for function 'function'<LI>nsf - Declaration of static function 'func(...)' ignored.<LI>nst - Use qualified name to access nested type 'type' (Default)<LI>ntd - Use '> >' for nested templates instead of '>>'.(Default)<LI>nvf - Non-volatile function function called for volatile object.(Default)<LI>obi - Base initialization without a class name is now obsolete(Default)<LI>obs - Identifier is obsolete. (Default)<LI>ofp - Style of function definition is now obsolete. (Default)<LI>ovl - Overload is now unnecessary and obsolete. (Default)<LI>par - Parameter 'parameter' is never used. (Default)<LI>pch - Cannot create precompiled header: header. (Default)<LI>pia - Possibly incorrect assignment. (Default)<LI>pin - Initialization is only partially bracketed.<LI>pre - Overloaded prefix operator 'operator' used as a postfixoperator.<LI>pro - Call to function with no prototype. (Default)<LI>rch - Unreachable code. (Default)<LI>ret - Both return and return of a value used. (Default)<LI>rng - Constant out of range in comparison. (Default)<LI>rpt - Nonportable pointer conversion. (Default)<LI>rvl - Function should return a value. (Default)<LI>sig - Conversion may lose significant digits.<LI>stu - Undefined structure 'structure'<LI>stv - Structure passed by value.<LI>sus - Suspicious pointer conversion. (Default)<LI>ucp - Mixing pointers to different 'char' types.<LI>use - 'identifier' declared but never used.<LI>voi - Void functions may not return a value. (Default)<LI>xxx - Enable xxx warning message. (Default)<LI>zdi - Division by zero (Default) </LI></UL></TD></TR><TR><TD><B>-W</B></TD><TD>Creates a Windows GUI application. (same as -tW)</TD></TR><TR><TD><B>-WC</B></TD><TD>Creates a 32-bit console mode application. (same as -tWC)</TD></TR><TR><TD><B>-WD</B></TD><TD>Creates a GUI DLL with all functions exportable. (same as -tWD)</TD></TR><TR><TD><B>-WM</B></TD><TD>Make a multithreaded application or DLL. (same as -tWM)</TD></TR><TR><TD><B>-WU</B></TD><TD>Generates Unicode application. Uses -txxxx macros in tchar.h.</TD></TR><TR><TD><B>-x</B></TD><TD>Enable exception handling. (Default)</TD></TR><TR><TD><B>-xd</B></TD><TD>Enable destructor cleanup. (Default)</TD></TR><TR><TD><B>-xf</B></TD><TD>Enable fast exception prologs.</TD></TR><TR><TD><B>-xp</B></TD><TD>Enable exception location information.</TD></TR><TR><TD><B>-xp</B></TD><TD>Enable slow exception epilogues.</TD></TR><TR><TD><B>-X</B></TD><TD>Disable compiler autodependency output. (Default: -X- use compilerautodependency output.)</TD></TR><TR><TD><B>-y</B></TD><TD>Line numbers on.</TD></TR><TR><TD><B>-zAname</B></TD><TD>Code class set to name.</TD></TR><TR><TD><B>-zBname</B></TD><TD>BSS class set to name.</TD></TR><TR><TD><B>-zCname</B></TD><TD>Code segment class set to name.</TD></TR><TR><TD><B>-zDname</B></TD><TD>BSS segment set to name.</TD></TR><TR><TD><B>-zGname</B></TD><TD>BSS group set to name.</TD></TR><TR><TD><B>-zPname</B></TD><TD>Code group set to name.</TD></TR><TR><TD><B>-zRname</B></TD><TD>Data segment set to name.</TD></TR><TR><TD><B>-zSname</B></TD><TD>Data group set to name.</TD></TR><TR><TD><B>-zTname</B></TD><TD>Data class set to name.</TD></TR><TR><TD><B>-zX*</B></TD><TD>Use default name for X. For example, -zA assigns the default classname CODE to the code segment class.</TD></TR><TR><TD><B>-Z</B></TD><TD>Enable register load suppression optimization.</TD></TR></TBODY></TABLE><Aname=ILINK32Switches></A><H3>ILINK32.EXE - Switches <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3><P>ILINK32 objfiles, exefile, mapfile, libfiles, deffile, resfiles<P>@xxxx indicates use response file xxxx<P><TABLE width="90%" border=1><TBODY><TR><TD><B>switch</B></TD><TD><B>Switch Description</B></TD></TR><TR><TD><B>-ax</B></TD><TD>Specify application type (known x's follow)</TD></TR><TR><TD><B>-aa</B></TD><TD>Generate a protected-mode executable that runs using the 32-bitWindows API</TD></TR><TR><TD><B>-ap</B></TD><TD>Generate a protected-mode executable file that runs in consolemode</TD></TR><TR><TD><B>-Ao:nnnn</B></TD><TD>Specify object alignment</TD></TR><TR><TD><B>-b:xxxx</B></TD><TD>Specify image base addr</TD></TR><TR><TD><B>-c</B></TD><TD>Case sensitive linking</TD></TR><TR><TD><B>-C</B></TD><TD>Clear state before linking</TD></TR><TR><TD><B>-Dstring</B></TD><TD>Set image description</TD></TR><TR><TD><B>-d</B></TD><TD>Delay load a .DLL</TD></TR><TR><TD><B>-Enn</B></TD><TD>Max number of errors</TD></TR><TR><TD><B>-Gi</B></TD><TD>Generate import library</TD></TR><TR><TD><B>-Gl</B></TD><TD>Static package</TD></TR><TR><TD><B>-Gn</B></TD><TD>No state files</TD></TR><TR><TD><B>-Gpd</B></TD><TD>Design time only package</TD></TR><TR><TD><B>-Gpr</B></TD><TD>Runtime only package</TD></TR><TR><TD><B>-Gt</B></TD><TD>Fast TLS</TD></TR><TR><TD><B>-Gz</B></TD><TD>Do image checksum</TD></TR><TR><TD><B>-GC</B></TD><TD>Specify image comment string</TD></TR><TR><TD><B>-GD</B></TD><TD>Generate .DRC file</TD></TR><TR><TD><B>-GF</B></TD><TD>Set image flags</TD></TR><TR><TD><B>-GS</B></TD><TD>Set section flags</TD></TR><TR><TD><B>-H:xxxx</B></TD><TD>Specify heap reserve size</TD></TR><TR><TD><B>-Hc:xxxx</B></TD><TD>Specify heap commit size</TD></TR><TR><TD><B>-I</B></TD><TD>Intermediate output dir</TD></TR><TR><TD><B>-j</B></TD><TD>Specify object search paths</TD></TR><TR><TD><B>-L</B></TD><TD>Specify library search paths</TD></TR><TR><TD><B>-m</B></TD><TD>Map file with publics</TD></TR><TR><TD><B>-M</B></TD><TD>Map with mangled names</TD></TR><TR><TD><B>-q</B></TD><TD>Supress banner</TD></TR><TR><TD><B>-r</B></TD><TD>Verbose linking</TD></TR><TR><TD><B>-Rr</B></TD><TD>Replace resources</TD></TR><TR><TD><B>-s</B></TD><TD>Detailed segment map</TD></TR><TR><TD><B>-S:xxxx</B></TD><TD>Specify stack reserve size</TD></TR><TR><TD><B>-Sc:xxxx</B></TD><TD>Specify stack commit size</TD></TR><TR><TD><B>-Txx</B></TD><TD>Display time spent on link</TD></TR><TR><TD><B>-Txx</B></TD><TD>Specify output file type</TD></TR><TR><TD><B>-Tpd</B></TD><TD>Target a Windows .DLL file</TD></TR><TR><TD><B>-Tpe</B></TD><TD>Target a Windows .EXE file</TD></TR><TR><TD><B>-Tpp</B></TD><TD>Generate package</TD></TR><TR><TD><B>-Ud.d</B></TD><TD>Specify image user version</TD></TR><TR><TD><B>-v</B></TD><TD>Full debug information</TD></TR><TR><TD><B>-Vd.d</B></TD><TD>Specify subsystem version</TD></TR><TR><TD><B>-w-</B></TD><TD>Disable all warnings.</TD></TR><TR><TD><B>-wxxx</B></TD><TD>Warning control<UL><LI>def - No .DEF file<LI>dpl - Duplicate symbol in lib<LI>imt - Import does not match previous definition<LI>msk - Multiple stack segment<LI>bdk - using based linking in .DLL<LI>dll - .EXE module built with .DLL extension<LI>dup - Duplicate symbol<LI>ent - No entry point<LI>inq - Extern not qualified with __import<LI>srf - Self-relative fixup overflow<LI>stk - No stack </LI></UL></TD></TR><TR><TD><B>-x</B></TD><TD>No map</TD></TR></TBODY></TABLE><P><A name=BCCLibs></A><H3>BCC32 Libraries <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3><P>The following is an incomplete listing of the main startup and runtimelibraries included with BCC32. If you have more details, please send them, and Iwill include them here.<P><DL><DT><B><I>OBJ Files</I></B><DT><B>C0D32.OBJ</B><DD>32-bit DLL startup module (cod32w: wide-char version; cod32x: no exceptionhandling)<DT><B>C0S32.OBJ</B><DD>Unknown<DT><B>C0W32.OBJ</B><DD>32-bit GUI EXE startup module (c0w32w: wide-char)<DT><B>C0X32.OBJ</B><DD>32-bit console-mode EXE startup module (c0x32w: wide-char)<DT><B>FILEINFO.OBJ</B><DD>Passes open file-handle information to child processes. Include this filein your link to pass full information about open files to child processescreated with exec and spawn. Works with the C++ runtime library to inheritthis information.<DT><B>GP.OBJ</B><DD>Prints register-dump information when an exception occurs.<DT><B>WILDARGS.OBJ</B><DD>If you want wild-card expansion for you console-mode applications, thenyou should also link in this file when you link your console-mode application.It apparently doesn't work for GUI apps. It does the normal DOS-like wild cardexpansion and passes them to argv and argc of your main.<P></P><DT><B><I>LIB Files</I></B><DT><B>CW32.LIB</B><DD>32-bit single-threaded static library<DT><B>CW32I.LIB</B><DD>32-bit single-thread, dynamic RTL import library for CW3250.DLL. To usethis import library, you must compile your programs with either -D_RTDLL or-tWR options to the compiler. This probably applies to the other "i" libs aswell.<DT><B>CW32MT.LIB</B><DD>32-bit multithread static library<DT><B>CW32MTI.LIB</B><DD>Import lib for 32-bit multithread dynamic RTL import library forCW3250MT.DLL<DT><B>IMPORT32.LIB</B><DD>32-bit import library<DT><B>dxextra.lib</B><DD>DirectX static library<DT><B>inet.lib</B><DD>Import lib for MS Internet DLLs<DT><B>noeh32.lib</B><DD>No exception handling support lib<DT><B>ole2w32.lib</B><DD>Import lib for 32-bit OLE 2.0 API<DT><B>oleaut32.lib</B><DD>Unknown<DT><B>uuid.lib</B><DD>GUID static lib for Direct3d, DirectDraw, DirectSound, Shell extensions,DAO, Active Scripting, etc.<DT><B>wininet.lib</B><DD>Unknown<DT><B>ws2_32.lib</B><DD>Import lib for WinSock 2.0 API </DD></DL><P><A name=TD32><H3>Turbo Debugger Commands <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3><Aname=TD32-cmdline><H4>Command Line Switches</H4></A><P>Command Line Syntax: <BR>TD32 [options] [program [arguments]] -x- = turnoption x off<TABLE width="90%" border=1><TBODY><TR><TD><B>switch</B></TD><TD><B>Switch Description</B></TD></TR><TR><TD>-as<#></TD><TD>-ar<#> (NT only) Attach to running process: s=stop, r=run, id =#</TD></TR><TR><TD>-ae<#></TD><TD>(NT only) Post-mortem event handle, decimal event handle = #</TD></TR><TR><TD>-c<file></TD><TD>Use configuration file <file></TD></TR><TR><TD>-h,-?</TD><TD>Display this help screen</TD></TR><TR><TD>-ji,-jn,-jp,-ju</TD><TD>State restore: i=Ignore old,n=None,p=Prompt old,u=Use old</TD></TR><TR><TD>-l</TD><TD>Assembler startup</TD></TR><TR><TD>-p</TD><TD>Use mouse</TD></TR><TR><TD>-sc</TD><TD>No case checking on symbols</TD></TR><TR><TD>-sd<dir></TD><TD>Source file directory <dir></TD></TR><TR><TD>-t<dir></TD><TD>Start with current directory <dir></TD></TR></TBODY></TABLE><P><A name=TD32-keys><H4>Keyboard Command Shortcuts <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H4><TABLE width="90%" border=1><TBODY><TR><TD><B>Key</B></TD><TD><B>Command</B></TD></TR><TR><TD><I>File Menu</I></TD><TD> </TD></TR><TR><TD>Alt-X</TD><TD>Quit</TD></TR><TR><TD><I>Edit Menu</I></TD><TD> </TD></TR><TR><TD>Shift-F3</TD><TD>Copy</TD></TR><TR><TD>Shift-F4</TD><TD>Paste</TD></TR><TR><TD><I>View Menu</I></TD><TD> </TD></TR><TR><TD>F3</TD><TD>Open Module (source file)</TD></TR><TR><TD><I>Run Menu</I></TD><TD> </TD></TR><TR><TD>F9</TD><TD>Run</TD></TR><TR><TD>F4</TD><TD>Go to cursor</TD></TR><TR><TD>F7</TD><TD>Trace into</TD></TR><TR><TD>F8</TD><TD>Step over</TD></TR><TR><TD>Alt-F9</TD><TD>Execute to...</TD></TR><TR><TD>Alt-F8</TD><TD>Until return</TD></TR><TR><TD>Alt-F4</TD><TD>Back trace</TD></TR><TR><TD>Alt-F7</TD><TD>Instruction trace</TD></TR><TR><TD>Ctrl-F2</TD><TD>Program reset</TD></TR><TR><TD><I>Breakpoints Menu</I></TD><TD> </TD></TR><TR><TD>F2</TD><TD>Toggle breakpoint...</TD></TR><TR><TD>Alt-F2</TD><TD>At breakpoint...</TD></TR><TR><TD><I>Data Menu</I></TD><TD> </TD></TR><TR><TD>Ctrl-F4</TD><TD>Evaluate/modify...</TD></TR><TR><TD>Ctrl-F7</TD><TD>Add watch...</TD></TR><TR><TD><I>Window Menu</I></TD><TD> </TD></TR><TR><TD>F5</TD><TD>Zoom</TD></TR><TR><TD>F6</TD><TD>Next</TD></TR><TR><TD>Tab</TD><TD>Next pane</TD></TR><TR><TD>Ctrl-F5</TD><TD>Size/move</TD></TR><TR><TD>Alt-F3</TD><TD>Close</TD></TR><TR><TD>Alt-F6</TD><TD>Undo close</TD></TR><TR><TD>Alt-F5</TD><TD>User screen</TD></TR><TR><TD><I>Help Menu</I></TD><TD> </TD></TR><TR><TD>Shift-F1</TD><TD>Help Index</TD></TR><TR><TD>Alt-F1</TD><TD>Previous topic</TD></TR><TR><TD>xx</TD><TD>xx</TD></TR><TR><TD>xx</TD><TD>xx</TD></TR></TBODY></TABLE><P><A name=TD32-help><H4>TD Help <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H4></A><P>The following list contains all the topics covered by TD help. Thoseespecially relevant to C and C++ programming are presented here.<UL><LI><B>Help on Help</B> <BR>Welcome to Turbo Debugger's help facility. Use thefollowing keys to move around: <BR><TABLE width="90%" border=1><TBODY><TR><TD>Arrows - Move to topic</TD><TD>Enter - Go to topic</TD></TR><TR><TD>PgUp - Previous screen</TD><TD>Esc - Exit help</TD></TR><TR><TD>PgDn- Next screen</TD><TD>F1 - Help index</TD></TR><TR><TD>Alt-F1 - Previous screen</TD><TD>Ctrl-PgUp - First screen</TD></TR></TBODY></TABLE><LI><B>Assembler</B><LI><B>Assembler constants</B><LI><B>Assembler expressions</B><LI><B>Assembler operators</B><LI><B>Assembler strings</B><LI><B>Assembler variables</B><LI><B>Auto-variables</B> <BR>Auto-variables are defined only within thefunction or block in which they are declared, and they exist only when thefunction they are in is called. They don't retain their values from onefunction call to the next.<P>Turbo Debugger handles auto-variables by emulating the current language'svariable scoping rules. That is, whenever the program is stopped inside afunction, the auto-variables for that function are added to or supersede thestatic and local symbols already known. They can be used in expressionsexactly as they would be used in a statement inside the function.<P>The bottom pane of the Variables window shows the current value for allauto-variables in the active function.<P></P><LI><B>Breakpoints</B> <BR>You use breakpoints to specify something you wantdone when your program has run to a specific source line number or address.<P>You can set a breakpoint to stop your program at any source line oraddress. Position the cursor on the desired line and press F2. Press F2 againto clear the breakpoint.<P>You can also set a breakpoint by clicking the mouse in one of the first twocolumns of the line that you want to set the breakpoint on. Turbo Debugger'sbreakpoints perform all the same jobs as the breakpoints, watchpoints, andtracepoints of other debuggers.<P>A breakpoint can be instructed to perform one of the following actions: <PRE>Break Stop your programLog Log the value of variablesExecute Execute an expression</PRE><P>You can set a breakpoint to execute on one of the following conditions: <PRE>Always Every time it is encounteredExpression true Only when an expression is trueChanged memory Only when a memory area changesHardware When a hardware breakpoint occurs</PRE><P>Breakpoints can also be qualified by setting a Pass Count that specifieshow many times the breakpoint must be passed over before being activated.<P>A breakpoint can also be set at a global address, which means that itoccurs on every source line or instruction address. This allows you to watchthe value of a variable as each line is executed, or to stop when a variableor area of memory changes value.<P></P><LI><B>Byte lists</B><LI><B>C constants</B> <BR>Constants can be either floating point or integer.A floating-point constant contains a decimal point and can be in decimal orscientific notation; for example, <PRE> 1.234 4.5e+11</PRE>Integer constants are decimal unless you use one of the C conventionsfor overriding the radix: <PRE> Format Radix=====================digits Decimal0digits Octal0Xdigits Hexadecimal0xdigits Hexadecimal</PRE>Ending any integer constant with "l" or "L" makes it into a longconstant.<P></P><LI><B>C Debugging tips</B> <BR>This TD help section is meant to aid the lessexperienced programmer in finding bugs in C programs. Some examples of commonpitfalls are given, along with suggestions on how to resolve and avoid them.See the TD help for details.<P></P><LI><B>C expressions</B> <BR>The full C expression syntax is supported, whichallows you to evaluate any C expression that the compiler accepts.<P>Variables can be changed using the full range of C assignment operators orthe increment and decrement operators (++ and --).<P>A C expression can contain the following elements: Operators, Strings,Variables, Constants<P></P><LI><B>C operators</B> <BR>Turbo Debugger supports all the C operators and oneadditional special operator, ::, which has the highest priority. You use it togenerate constant far-memory pointers to characters; for example, <PRE> 0x1234::0x5678</PRE>The primary expression operators <PRE> () [] . -></PRE>have the next highest priority and group from left to right.<P>The unary operators <PRE> * & ! ~ ++ --</PRE>have priority less than the primary operators but greater than thebinary operators and group from right to left.<P>The binary operators are listed here in decreasing priority. Operators onthe same line have the same priority. <PRE>highest * / %+ ->> <<< > <= >=== !=&^|&&lowest ||</PRE><P>The single ternary operator has a priority less than any of the binaryoperators: <PRE> ?:</PRE>The assignment operators all have the same priority below the ternaryoperator and group from right to left: <PRE> = += -= *= /= %= >>= <<= &= ^= |=</PRE><P></P><LI><B>C strings</B> <BR>C strings in Turbo Debugger use exactly the samesyntax as in C source files: a series of characters between double quotes (""). All characters are inserted literally except for the backslash, which isused to enter special character codes into the string.<P>If a backslash is followed by any character except one of those listedhere, that character is inserted into the string unchanged. This allows thestring delimiter double-quote character (") to be entered by typing \".<P>The following escape sequences can be used: <PRE>Sequence Value Character----------------------------\a 0x07 Bell\b 0x08 Backspace\f 0x0c Formfeed\n 0x0a Newline (line feed)\r 0x0d Carriage return\t 0x09 Horizontal tab\v 0x0b Vertical tab\\ \ Backslash\xnn nn Hex byte value\nnn nnn Octal byte value</PRE><P><P></P><LI><B>C variables</B> <BR>Variables are names for data items in your program.A C variable name starts with a letter (a - z, A - Z) or the underscorecharacter (_). Subsequent characters in the symbol can be digits (0 - 9) aswell as these characters.<P>Normally, a variable name obeys the C scoping rules, with auto-variablesoverriding static variables of the same name, which override globals. You canoverride this scoping if you wish to access variables in other scopes.<P></P><LI><B>Command line options</B> <BR>Here's the general form of the DOS commandline used to start Turbo Debugger: <PRE> td [options] [program_name [program_args] ]</PRE>Items enclosed in brackets are optional. "Options" are described below."Program_name" is the name of the program to debug. If no extension issupplied, .EXE is presumed. "Program_args" are any arguments required by theprogram being debugged. Do not place debugger options here; they should comebefore the name of the program being debugged.<P>Example command lines: <PRE>Command Action======= ======td Start the debugger with noprogram, default optionstd -r prog1 a Start the debugger with -roption, load program "prog1"with one argument "a"td prog2 -x Start the debugger with defaultoptions, load "prog2" with oneargument "-x".</PRE>An option consists of a hyphen, followed by one or more letters and apossible text or numeric argument. Options override default configurationsettings from the configuration file. To disable an option set in theconfiguration file, follow the option with another hyphen, for example, <PRE> td -p- myprog arg1 arg2</PRE><P></P><LI><B>Configuration file</B> <BR>The configuration file allows command-lineoptions to be set automatically each time the debugger is started. Theconfiguration file is searched for first in the current directory, then in thedirectory containing the Turbo Debugger executable program. This allows you tohave a system-wide configuration in the PATH and custom configurations forindividual projects.<P>Options on the command line override the corresponding setting in theconfiguration file.<P></P><LI><B>Cursor in List panes</B> <BR>In a List pane items can be selected inone of two ways:<UL><LI>Use the cursor keys to position the highlight bar.<LI>If the List pane has a blinking cursor, start to type the letters makingup an entry. The highlight bar moves to the first item that starts with theletters typed so far; this allows you to select items with a minimum oftyping. This is referred to as "incremental matching." </LI></UL>The followingkeys can be used to move the highlight bar in a List pane: <PRE>Up Move up one itemDown Move down one itemPgUp Move up one pane heightPgDn Move down one pane heightCtrl-PgUp Move to first item in listCtrl-PgDn Move to last item in listEsc Cancel incremental searchEnter Select item in lista - z Incremental match on list items</PRE><P></P><LI><B>Cursor in Text panes</B> <BR>Use the following keys to control thecursor position in Text panes: <PRE>Up Move cursor up one lineDown Move cursor down one lineRight Move cursor right one characterLeft Move cursor left one characterCtrl-Right Move right one wordCtrl-Left Move left one wordPgUp Move up one pagePgDn Move down one pageCtrl-Home Go to top line of windowCtrl-End Go to bottom line of windowCtrl-PgUp Go to first line in fileCtrl-PgDn Go to last line in fileHome Go to beginning of current lineEnd Go to end of current line</PRE>You can mark a block of text by pressing Ins, then moving the cursorwithin the same line. Some prompts use this marked block as their defaultresponse entry.<P></P><LI><B>CPU Flags</B><LI><B>Disassembler</B><LI><B>DOS commands</B><LI><B>Error messages</B><LI><B>Examining Data</B> <BR>You can examine data items with the Inspectoption on the Data menu. You can inspect any expression that evaluates to amemory pointer, both simple variable names and complicated addressexpressions.<P>You can also examine data items by pointing to a variable name in a Text orList pane and specifying the Inspect option from the speed menu for that pane.In a Text pane, this command works if the cursor is anywhere within thevariable name you wish to inspect. You can also use the Ins key to mark anexpression to inspect.<P></P><LI><B>Expressions</B> <BR>You can evaluate an expression using any one of thelanguages supported by Turbo Debugger: <PRE> C Pascal Assembler</PRE>Use the Options/Language command to select which language is used tointerpret expressions you type in. Normally, Turbo Debugger uses the languagethat you used to write the code at the current program address.<P>When you display an expression, you can enter an optional format controlstring that controls how the result is displayed.<P></P><LI><B>Format Control</B> <BR>When you supply an expression to be displayed,Turbo Debugger displays it in a suitable format based on what type of data itis. If you wish to change the default display format for an expression, placea comma at the end of the expression, then supply an optional repeat countfollowed by an optional format letter. You can supply a repeat count only forpointers or arrays. If you use a format control on the wrong data type, it hasno effect. <PRE>c Displays a character or string expressionas raw characters. Normally, non-printingcharacter values are displayed as some typeof escape or numeric format. This optionforces the characters to be displayed usingthe full IBM display character set.d Displays an integer as a decimal number.f# Displays a floating-point format with thespecified number of digits. If you don'tsupply a number of digits, as many asnecessary are used.m Displays a memory-referencing expressionas hex bytes.md Displays a memory-referencing expression asdecimal bytes.p Displays a raw pointer value, showingsegment as a register name if applicable.</PRE><P></P><LI><B>Function Keys</B> <BR>There are function keys for many commonly usedfunctions. The regular function keys invoke the following commands: <BR><PRE>F1 Help F2 Toggle BreakpointF3 View Module F4 Go to CursorF5 Zoom Window F6 Next WindowF7 Trace Into F8 Step OverF9 Run F10 Command menu</PRE><P>The Alt function keys give you access to other commands you use fairlyoften. <BR><PRE>Alt F1 Last help Alt F2 Breakpoint AtAlt F3 Close Window Alt F4 Back traceAlt F5 User Screen Alt F6 Undo CloseAlt F7 Instr. Trace Alt F8 Until ReturnAlt F9 Execute To Alt F10 Speed menu</PRE><P></P><LI><B>Global variables</B> <BR>Global variables are those defined as beingaccessible to all modules in the program. You can view the global variables ina program by creating a Variables window. The global variables appear in theupper pane of that window.<P></P><LI><B>Help line</B> <BR>The bottom line of the screen always displays helpabout some keys specific to the current environment. This line changesdepending on where you are.<P>Normally, it shows the most commonly used function key commands. Press andhold down the Alt key and it shows the commonly used Alt function keys.<P></P><LI><B>Hierarchy window</B> <BR>The Hierarchy command opens an ObjectHierarchy window that shows all the Pascal or C++ object types, both inalphabetical order and as a tree showing ancestor/descendant relationships.<P></P><LI><B>Inspectors</B> <BR>You'll probably use Inspectors more than any othersort of window. You can create an Inspector in one of two ways:<UL><LI>Use the Inspect speed menu command in a pane by typing Ctrl-I or Alt-F10I.<LI>Use the Data Inspect command from the main menu. </LI></UL>An Inspectorshows the contents of a data structure in the program you are debugging. Italso allows you to modify individual variables or members of a data structure.<P>The most common way to use Inspectors is to open one by placing the cursoron what you want to inspect and pressing Ctrl-I. After you've examined thedata item, press the Esc key to remove the Inspector window.<P>If you have several Inspectors on the screen, the Window Close command (orits equivalent, the Alt-F3 key) removes them all at once.<P></P><LI><B>Interrupt key</B> <BR>The Interrupt key can be pressed at any time yourprogram is running. Turbo Debugger immediately regains control, allowing youto examine the state of the program.<P>Usually the Interrupt key is the Ctrl-Break key combination; you can changethis to another key by using the TDINST customization program.<P></P><LI><B>Logging events</B> <BR>Turbo Debugger's breakpoints perform all thesame jobs as the breakpoints, watchpoints, and tracepoints of other debuggers.<P>A breakpoint can be instructed to perform one of the following actions: <PRE> Break Stop your programLog Log the value of variablesExecute Execute an expression</PRE><P></P><LI><B>Macros</B> <BR>The Options Macros command lets you set and clear macrosassigned to different keys.<P>Select one of the following commands to learn more about it: <PRE> Create RemoveDelete All Stop Recording</PRE>You can use macros to record command sequences that you often repeat, aswell as to record commands from the start of a session. This is very usefulwhen you must keep restarting and getting back to a certain place in yourprogram.<P></P><LI><B>Main Menu</B> <BR>The menu bar appears on the top line of the screen.You can return to this menu at any time by pressing the F10 hot key. Acombination of pull-down and pop-up menus gives you easy access to all themenu commands and options. The menu bar has the following commands: <PRE> System BreakpointsFile DataView WindowRun OptionsEdit</PRE>Access the System menu in the top left corner by pressing Alt-space.<P><UL><LI>System <BR>The System menu lets you invoke commands that affect theentire screen (desktop).<P>The Repaint desktop command redisplays the entire Turbo Debugger screen.This is useful if screen swapping has been disabled and the debugger screenhas become corrupted with output from the program you are debugging.<P>Use the Options/Display options command to set how screen updating isdone.<P>The Restore Standard command restores the window layout to the way it waswhen the debugger was first started.<P>The About command shows the sign-on copyright screen that identifies theversion of Turbo Debugger that you are using.<P></P><LI>File <BR>The File menu has a number of options that deal with operationsexternal to Turbo Debugger, such as loading programs to debug, executing DOScommands, and returning to DOS.<P>The Open command loads a program to debug from disk. You are prompted forthe name of the program to debug. You don't need to supply the .EXE or .COMextension.<P>You can supply any arguments to the program by specifying them after theprogram name, just as you would on the DOS command line.<P>The Change Dir command lets you set a new current drive and/or directoryby prompting you for the new drive and/or directory name.<P>The prompt is initialized to the current drive and directory, so you canalso use this command to examine the current drive and directory settings.<P>The File Get Info command displays a window that shows you the currentstate of the program you are debugging. This includes:<UL><LI>the program name<LI>where and why your program is stopped<LI>main memory usage<LI>interrupts your program has intercepted<LI>the DOS version<LI>Hardware/software breakpoints indicator<LI>the current date and time </LI></UL><P>The Attach command lets you debug a program that is already running andwas not started by Turbo Debugger. You supply the process ID of the processthat you wish to debug. Turbo debugger then interrupts the process just asif a breakpoint had been encountered.<P>The Quit command returns control to DOS. Alt-X is the hot key thatreturns to DOS from any point while Turbo Debugger is running.<P>The memory for your program image is freed, and any open file handles areclosed. If your program has allocated memory blocks from DOS, Turbo Debuggerfrees these as well.<P></P><LI>Edit <BR>The Edit menu has options that let you put things onto theclipboard and to place items on the clipboard into the current window.<P>The Copy command copies the currently highlighted item or position in awindow to the clipboard. You can then use the Paste command to put the itemsomewhere else.<P>The Paste command copies an item from the clipboard into the currentcontext in a window. You are given a list of clipboard items that are ableto be used in the current context. To see the entire contents of theclipboard, use the View/Clipboard main menu command.<P>The Copy to log command copies the currently highlighted item or positionin a window to the Log window.<P>The Edit Dump Pane to Log command writes the contents of the current paneto the Log window. This can be useful when you want to compare the values ofsome variables at two different places in the program. You can dump thecontents of the Watches window or some Inspectors, then execute some more ofyour program and compare the values recorded in the log with the currentvalues.<P></P><LI>View <BR>The View menu commands open windows that "view" part of theprogram you are debugging. Use the Another option in this menu to openanother instance of a Dump, File, or Module window that you already havedisplayed on the screen.<P>The Breakpoints command opens a Breakpoints window that shows a list ofthe current breakpoints, their conditions, and what they do when they'retriggered. In Turbo Debugger, breakpoints combine the functions ofbreakpoints, watch points, and trace points.<P>The CPU command opens a CPU window that shows disassembled instructions,a hex data dump, the CPU registers and flags, and the stack contents You canalso patch code using the built-in assembler. If there is already a CPUwindow on the screen, you are positioned in that window.<P>The Dump command opens a Dump window showing the contents of an area ofmemory that you specify. You can view the data as raw hex bytes or in any ofthe supported number formats, including 32-bit integers and four types offloating-point numbers. This window works the same as the Data pane in a CPUwindow. This window is useful if you just want to look at an area of memory,and don't care about the rest of the CPU state that the CPU window displays.<P>The Execution history command opens an Execution history window thatshows a list of instruction that can be undone, and a list of keystrokecheckpoints that you can recover to. This lets you "go back in time" if youstep beyond the location where a problem occurs.<P>The File command opens a File window that shows the contents of a filethat you specify. You are prompted for the file name; you can enter awildcard specification and select a file from the displayed list. You canalso edit the contents of the file in hex or ASCII text. If there is alreadya File window on the screen, the file you selected is displayed in thatwindow. To open another File window, use the View/Another main menu command.<P>The Hierarchy command opens an Object Hierarchy window that shows all thePascal or C++ object types, both in alphabetical order and as a tree showingancestor/descendant relationships.<P>The Log command opens a Log window that shows a scrolling log of messagesfrom the following events:<UL><LI>Breakpoints that log an expression<LI>Program trace, step, and breakpoint addresses<LI>User comments<LI>Window pane dumps </LI></UL>The contents of the Log window can also bewritten continuously to disk.<P>The Clipboard command opens a Clipboard window showing the items copiedto the clipboard. You can examine clipboard items, delete them, or open aWindow to show you the contents of an item. Use the Edit/Copy command to puttext, data and addresses onto the clipboard. Use the Edit/Paste command toplace clipboard items into prompts or windows. The type of data copied tothe clipboard depends on which window or pane it is clipped from.<P>The Module command opens a Module window that shows a source file for themodule. You can select a module to view from the list of modules in theprogram. If there is already a Module window on the screen, the module youselected is displayed in that window. If you want to open another Modulewindow, use the View/Another main menu command. F3 is the hot key for thiscommand. The Module window title shows the name of the module you areviewing, the current source file for the module, and the line number thatthe cursor is on. If the source file has been changed since the module wascompiled and linked into your program, the message (modified) appears beforethe current line number. This warns you that your source file might be outof sync with the program you are debugging and that the cursor might notalways appear on the correct line of source code.<P>The Numeric Processor command opens a Numeric Processor window that showsthe contents of the 80x87 stack registers, the control bits, and the statusbits. You can modify the floating-point registers and the control and statusfields of the numeric processor.<P>The Registers command opens a window that shows the current contents ofthe CPU registers and flags. You can examine or change their values. Thiswindow works the same as the Register pane in a CPU window. It is useful ifyou just want to look at the CPU registers, and don't care about the rest ofthe CPU state displayed in the CPU window.<P>The Stack command opens a Stack window that shows the currently activecalling stack. All functions starting from the call at the start of theprogram are shown, along with their arguments. From this window, you canalso examine the variables inside a particular instance of a function on thestack; this is useful, for example, if you are using a recursive function.<P>The Variables command opens a Variables window that shows a list ofsymbols and their values for the current module and function, as well as alist of your program's global symbols and their values.<P>The Watches command opens a Watches window displaying the value ofvariables or expressions in your program that you specified using either theData Add Watch main menu command or the Watch speed menu command in a Modulewindow.<P></P><LI>Run <BR>The Run menu commands execute your program. If Screen Updatingis enabled, your program screen is restored before execution continues.<P>The Trace Into command executes a single instruction or source line. Ifthe current window is not a CPU window, the next source line is executed. Ifthe current window is a CPU window, a single instruction is executed. Someinstructions cause the CPU to execute the following instruction as well asthe current instruction. Among these are instructions such as loading ofsegment registers, for example, MOV SS,AX. The F7 key is the hot key thatexecutes this command.<P>The Step Over command executes a single instruction or source line andskips over any procedure calls. If the current window is not a CPU window,the next source line is executed. If any part of the source line containsfunction calls, they are executed without stopping. If the current window isa CPU window, a single instruction is executed. If the current instructionis a CALL instruction, the entire subroutine is executed withoutinterruption, and the program stops at the instruction following the CALLinstruction. Instructions with a REP, REPNZ, or REPNE prefix are alsoexecuted without interruption. The F8 key is the hot key that executes thiscommand.<P>The Go to Cursor command executes your program until it reaches thecurrently highlighted source or instruction line. The current window must bea CPU or a Module window so that the location to execute to can bedetermined. The F4 key is the hot key that executes this command.<P>The Execute To command executes your program and stops at the specifiedlocation in the program. You are prompted for the program address at whichto stop. You can enter an address in any of the valid address formats.Alt-F9 is the hot key that executes this command.<P>The Program Reset command reloads the current program from disk. Thiscommand is useful if you've run the program too far during a debuggingsession and need to restart execution at the start of the program. Thiscommand is necessary, since you usually can't restart a program simply bystarting execution at the beginning of the program. A full reload from diskreinitializes data items that the program expects to contain a particularvalue when the program is first started. Ctrl-F2 is the hot key for thiscommand.<P>The Run Arguments command lets you set or change the command-linearguments for the program you are debugging. Use this command if you aredebugging a program that requires one or more command-line arguments, butyou entered either no arguments or erroneous ones with the File/Opencommand.<P>The Run/Wait for child main menu command lets you specify whether TurboDebugger waits for the program you are debugging to stop before letting youissue additional commands. If you set it to No, Turbo Debugger lets youissue more commands after you run the program you are debugging. This letsyou examine data items in your program while it is executing. However, youcan't examine the CPU registers as the program is running - you see theirvalues as of when your program last stopped. Use the Run/Next pending statuscommand to retrieve status information from your program.<P>The Animate command is a self-repeating Trace Into command. Instructionsor source lines are executed continuously until a key is pressed. TurboDebugger's display changes to reflect the current program state between eachtrace, which allows you to watch the flow of control in your program. Youare prompted for the rate at which to step instructions.<P>The Run command executes your program continuously until either abreakpoint is encountered, the program is interrupted with the Interruptkey, or the program terminates. The F9 key is the hot key that executes thiscommand.<P>The Until Return command executes the program being debugged until thecurrent function or procedure returns to its caller. This is useful if youhave accidentally issued a Trace Into command when you really wanted to do aStep Over command, or when you have stepped through enough of a function todetermine that it is working correctly, and you wish to execute the rest ofit without interruption. Alt-F8 is the hot key that executes this command.<P>The Instruction Trace command executes a single machine instruction.After using the command, you are usually left in a CPU window. Use thiscommand when you want to<UL><LI>trace into an interrupt call in the CPU window.<LI>trace into a function in a module that was not compiled with debuginformation.<LI>watch each instruction execute that makes up a source line.</LI></UL>Alt-F7 is the hot key for this command.<P>The Back trace command undoes the last instruction or source statement.The processor and memory state are restored to the way they were before theinstruction or source line was traced over. The Alt-F4 key is the hot keyfor this command. The history pane of the Execution history window containsa list of saved steps and allows you to control when stepping and tracinginformation is saved.<P>The Next pending status command lets you retrieve a status message from aprocess that is executing asynchronously. If you use the Wait for childcommand to specify that the program you are debugging can run in thebackground while Turbo Debugger is running, the status display in the topright corner of the screen changes to say PENDING when a process wants toreport something, such as a breakpoint being hit or the process terminating.<P></P><LI>Breakpoints <BR>The Breakpoints menu commands let you set and clearbreakpoints.<P>The Toggle command sets or clears a breakpoint at the currentlyhighlighted address in a Module window or CPU window Code pane. Your programstops every time it reaches a line where you have set a breakpoint. You canmodify the behavior of the breakpoint by opening a Breakpoint window. Thislets you set a pass count or a condition that must be true before thebreakpoint happens, and also define what to do when the breakpoint istriggered. The F2 key is the hot key that executes this command. You canalso click the mouse in the first two columns.<P>The At command sets a breakpoint at a specific location in your program.You are prompted for the address at which to set the breakpoint and for anyoptions. Alt-F2 is the hot key that executes this command.<P>The Changed Memory Global command allows you to set a breakpoint thatoccurs when an area of memory changes value. You are prompted for the memoryarea to watch. Your program executes more slowly if you set any of thesebreakpoints. If you are running on an 80386 or later processor, make sureyou've installed the hardware device driver supplied on the distributiondisk; this speeds up global breakpoints. If you have a hardware debuggerboard, see if the vendor supplies a device driver that lets it work withTurbo Debugger.<P>The Expression True Global command allows you to set a breakpoint thatoccurs when the value of an expression becomes true. You are prompted forthe expression that must become true in order for your program to stop. Yourprogram executes more slowly if you set any of these breakpoints.<P>The Hardware breakpoint command lets you quickly and easily set a generalpurpose hardware breakpoint. The dialog box lets you set the type ofhardware breakpoint, exactly as if you had issued the Hardware optionscommand in the Breakpoint window speed menu.<P>The Delete All command removes all the breakpoints from your program. Usethis command when you want to continue debugging your program but no longerwant it to stop at any breakpoint locations you've previously set.<P></P><LI>Data <BR>The Data menu commands allows you to examine variables andmemory areas in your program. You can also evaluate Expressions and changetheir values.<P>The Inspect command opens an Inspector to show the value of a variable ora memory-referencing expression. You are prompted for the variable ormemory-referencing expression to inspect. If the cursor was in a Text panewhen you issued this command, the prompt is initialized to contain thevariable under the cursor, if any. If you have marked an expression usingthe Ins key, the prompt is initialized to the marked expression.<P>The Evaluate/Modify command evaluates an arbitrary expression. Enter anexpression followed by an optional format control string that's separatedfrom the expression with a comma (,). The value appears in the middle pane.You can move to this pane to scroll long value displays or error messages.If the result is changeable, you can change the expression's value by movingto the bottom pane (press the Tab key), typing a new value, and pressingEnter. If the cursor was in a Text pane when you issued this command, theprompt is initialized to contain the variable under the cursor, if any. Ifyou have marked an expression using the Ins key, the prompt is initializedto the marked expression.<P>The Data Add Watch command places an expression or variable on the watchlist displayed by the Watches window. If the cursor was in a Text pane whenyou issue this command, the prompt is initialized to contain the variableunder the cursor, if any. If you have marked an expression using the Inskey, the prompt is initialized to the marked expression.<P>The Data Function return command lets you examine the value that is aboutto be returned by the current function. You can only issue this command justbefore the function is about to return to the function that called it.<P></P><LI>Options <BR>The Options menu commands allow you to adjust a number ofoptions that have a global effect on the behavior of Turbo Debugger.<P>The Options Language command lets you specify how Turbo Debuggerinterprets expressions you type in. You can select from one of the languagesthat Turbo Debugger supports.<P>The Options Macros command lets you set and clear macros assigned todifferent keys.<UL><LI>Create - The Create command lets you assign a new sequence ofkeystrokes to any key on the keyboard. Alt = is the hot key for thiscommand. You are prompted to press the key you wish to assign a macro to.Then you can enter the keystrokes that make up the macro, which is actedupon just as if you typed them without recording a macro. End the macrodefinition by pressing either Alt - or the key you are assigning the macroto, or issuing the Options Macros Stop Recording main menu command.<LI>Delete All - The Delete all command deletes all keystroke macros. Usethis command when you wish to restore all keys to their original functionsand free the macro memory for a new set of keystroke macros.<LI>Remove - The Remove command lets you remove a sequence of keystrokesassigned to a key. This returns the key to its original function. You areprompted to press the key for the macro you wish to delete.<LI>Stop Recording - The Stop Recording command stops keystrokeremembering for the macro you're presently recording. If you use this menucommand, it will be recorded as part of the macro. Use one of thefollowing single-key stop methods to avoid this: <PRE>* Alt - (hyphen).* Pressing the key that you are assigning themacro to.</PRE>Assigning no keystrokes to a key makes it perform no action. Torestore a key to its original function, use the Remove command.</LI></UL>You can use macros to record command sequences that you oftenrepeat, as well as to record commands from the start of a session. This isvery useful when you must keep restarting and getting back to a certainplace in your program.<P>The Display options command lets you adjust the appearance of TurboDebugger's display screen.<P>The Options Path for Source command lets you set where Turbo Debuggerlooks for the source files that make up your program. Source files aresearched for first where the compiler found them, then in each directoryspecified by this command or the -sd command line option, then in thecurrent directory, and finally in the directory that contains the programyou are debugging.<P>The Save Options command brings up a dialog that lets you select whichpart of your current configuration you wish to save to disk and the filename to use.<P>The Restore Options command loads a configuration file from disk. Youmust have previously saved the configuration file by using the Save optionscommand or the customization program to create the configuration file.Depending on which option of the Save options command you used, theconfiguration can contain only macros, only window layouts, or an entireconfiguration.<P></P><LI>Window <BR>The Window menu commands let you perform certain operationson the windows on screen with the following commands: <PRE> Zoom Size/move Undo CloseNext Iconize/restoreNext Pane Close User screen</PRE>At the bottom of the list appears a list of all the windows open onthe screen. Select one of these to go directly to that window. Use the Viewmenu commands to create new windows. The F5 key zooms the current window andthe F6 key takes you to the next window. </LI></UL><P></P><LI><B>Modifying data</B> <BR>There are several ways to modify program data:<UL><LI>Use the Data Evaluate/Modify command and type in a new value for anexpression.<LI>Use the Data Evaluate/Modify command and evaluate an expression that hasside effects, such as an assignment statement or one that uses the C ++ or-- operators on a pointer variable.<LI>Use the Change command in the speed menu for the Data pane of a CPUwindow. This is good for examining and modifying data as a raw hex dump.</LI></UL><P></P><LI><B>Moving windows</B> <BR>The Size/move command lets you change the sizeand/or position of the current window. Once you have issued the command, usethe cursor keys to move the window and Shift plus the cursor keys to resizeit. Pressing the Ctrl-F5 key is the hot key for this command.<P></P><LI><B>Operator precedence</B> <BR><P></P><LI><B>Panes</B> <BR>Panes are the individual display areas that make up eachwindow. Each pane is associated with a speed menu of commands unique to thatpane. There are two types of panes: List panes and Text panes. List panes showan alphabetically ordered list of items from which to select. Text panesdisplay the contents of a disk file.<P></P><LI><B>Pascal constants</B><LI><B>Pascal expressions</B><LI><B>Pascal operators</B><LI><B>Pascal strings</B><LI><B>Pascal variables</B><LI><B>Program Execution</B> <BR>The Run Menu command has several options forhow to execute your program. Since you use these commands frequently, most areavailable on function keys: <PRE>F4 Go to cursor Alt-F7 Instruction traceF7 Trace into AnimateF8 Step over Alt-F8 Until returnF9 Run Alt-F9 Execute toAlt-F4 Back trace</PRE><P></P><LI><B>Prompts</B> <BR>Prompts indicate you must supply additional informationto process a command. A prompt dialog has an entry field in which you caninput text; you can scroll to accommodate long input lines. The dialog titledescribes what you must enter.<P></P><LI><B>Scoping</B> <BR>Normally, Turbo Debugger and Turbo Profiler look for asymbol in an expression in the same way that the compiler for the currentlanguage would search. For example in C, first it looks in the currentfunction, then in the current module for a static (local) symbol, then for aglobal symbol. If it doesn't find the symbol using these techniques, itfinally searches through all the other modules to try to find a static symbolthat matches. This lets you reference static functions in other moduleswithout having to mention the module name explicitly. Turbo Debugger uses asimilar approach with the other languages.<P>If you want to force Turbo Debugger or Profiler to look elsewhere for asymbol, you can exert total control over where to look for a symbol name. Youcan specify a module, a file within a module, and/or a function to search.Where the debugger looks for a variable is known as the "scope" of thatvariable.<P>Normally you use pound signs (#) to separate the components of the scope.If it is not ambiguous in the current language, you can use dots (.) insteadof #, and also omit the initial pound sign or dot.<P>The following syntax describes scope overriding, with brackets []indicating optional items:<P>[#module [#filename]] #linenum [#variablename] <BR>or <BR>[#module[#filename]] [#funcname] #variablename<P>If you do not specify a module or file, the current module and file isassumed. For example, #123 refers to line 123 in the current module.<P>Scope examples: <PRE> #module1#myvar "myvar" accessible from module"module1"#myfunc#var1 "var1" accessible from routine"myfunc"module2#99 Line 99 in module "module2"m1#fil2#fun1 "fun1" accessible from file"fil2" included in module "m1"</PRE><P></P><LI><B>Screen updating</B><LI><B>Speed Menus</B> <BR>Each pane has a speed menu for commands specific tothat pane. To access the speed menu, press Alt-F10. To invoke an item in aspeed menu quickly, hold down Ctrl and press the hot key letter of the menuitem. You can use the TDINST customization utility to set or cancel thesecontrol-key hot keys.<P></P><LI><B>Stack</B> <BR>There are two ways to view the stack:<UL><LI>A list of active functions and the arguments they are called with. Theactive function calling list is displayed in a Stack window.<LI>A raw hex dump The hex dump of the stack contents is shown in the Stackpane of a CPU window. </LI></UL><P></P><LI><B>Static variables</B> <BR>Static variables are those defined as beingaccessible only in the module in which they are defined. The C static keywordis used as part of the declaration for the variable. You can view the staticvariables in a module by creating a Variables window. The static variablesappear in the bottom pane of that window.<P></P><LI><B>Status info</B> <BR>A number of messages can appear either in theinformation box displayed with the File/Get Info command or when controlreturns to Turbo Debugger after executing part of your program. See TD Helpfor full info.<P></P><LI><B>Technical notes</B><LI><B>Tracepoints</B> <BR>You use breakpoints to specify something you wantdone when your program has run to a specific source line number or address.<P>You can set a breakpoint to stop your program at any source line oraddress. Position the cursor on the desired line and press F2. Press F2 againto clear the breakpoint.<P>You can also set a breakpoint by clicking the mouse in one of the first twocolumns of the line that you want to set the breakpoint on.<P>Turbo Debugger's breakpoints perform all the same jobs as the breakpoints,watchpoints, and tracepoints of other debuggers.<P>A breakpoint can be instructed to perform one of the following actions: <PRE> Break Stop your programLog Log the value of variablesExecute Execute an expression</PRE>You can set a breakpoint to execute on one of the following conditions: <PRE>Always Every time it is encounteredExpression true Only when an expression is trueChanged memory Only when a memory area changesHardware When a hardware breakpoint occurs</PRE>Breakpoints can also be qualified by setting a Pass Count that specifieshow many times the breakpoint must be passed over before being activated.<P>A breakpoint can also be set at a global address, which means that itoccurs on every source line or instruction address. This allows you to watchthe value of a variable as each line is executed, or to stop when a variableor area of memory changes value.<P></P><LI><B>Variable scoping</B><LI><B>Viewers</B> <BR>The View menu commands open windows that "view" part ofthe program you are debugging. Use the Another option in this menu to openanother instance of a Dump, File, or Module window that you already havedisplayed on the screen.<P></P><LI><B>Watchpoints</B> <BR>See Tracepoints.<P></P><LI><B>Windows</B> <BR>You create windows with the View menu commands. Theactive window has a double line border and a highlighted title. Each window isdivided into one or more panes. Each pane has a Speed Menu for commandsspecific to that pane.<P></P></LI></UL><A name=OTHER></A><H2>Other sites with help for BCC 5.5</H2><P>This section will list other non-Borland web sites that have additionalinformation about Borland's free command line tools.<UL><LI><A href="http://www.sirma.bg/Jogy/bcc55.html">Archive of Helmut Pharo'sSite</A> <BR>This site has a pretty nice document about getting and setting upBCC 5.5. That information isn't much different than what is here, but the sitealso has a nice tutorial section for building a simple Window's GUI app withBCC 5.5, and some other nice tutorial information. Highly recommended.<BR>This used to be run by Helmut Pharo, but it is no longer directlyavailable. The link is to an archived version. (link updated Feb. 22, 2003)</LI></UL><A name=HELPME></A><H2>Help Improve VIDE for BCC <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2><P>Please note that VIDE will remain primarily focused on the GNU MinGW gcccompiler. However, I do plan to continue support for the free Borland BCC 5.5.Remember that VIDE is GPLed, so the code is available for modification.<P>First, if I've gotten some default behavior wrong, please suggest areasonable alternative. But remember, I chose the defaults here mainly tosimplify typical, simple applications. Advanced users are expected to edit theProject file or makefile to get more options.<P>If you don't like the layout of this document (like tables might be better),chip in and fix it. I'll fold it back into the standard distribution.<P><A name=Disclaimer></A><H3>Disclaimer <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H3><P>First, the Borland C++ 5.5 compiler is not the main compiler supported byVIDE (gcc is). However, VIDE has supported BCC long enough now that it is verystable. If you have any problems using VIDE with BCC, please report them back tome.<P>This information was assembled for publicly available sources and is intendedmerely to help use VIDE with Borland BCC32. There is no guarantee of itsaccuracy, although it seems to be correct, but may be incomplete.<HR><A name=warranty></A><H2>No Warranty <FONT size=1><Ahref="http://www.objectcentral.com/vide/help/videdoc/bcc32.html#top">top</A></FONT></H2><P>This program is provided on an "as is" basis, without warranty of any kind.The entire risk as to the quality and performance of the program is borne byyou.<P><B>VIDE Reference Manual</B><BR>Copyright © 1999-2000, Bruce E.Wampler<BR>All rights reserved.<P>Bruce E. Wampler, Ph.D.<BR><Ahref="mailto:bruce@objectcentral.com">bruce@objectcentral.com</A> <BR><Ahref="http://www.objectcentral.com/">http://www.objectcentral.com/</A><BR></P></BODY></HTML>