DBG$UIHELP.HLB  —  DEBUGUI  compile
  To bring a program under debugger control and take full advantage of
  symbolic debugging, you must first compile and link the program as
  explained here.

  You can use the debugger with programs written in any of the source
  languages listed in the topic Debugger Support for Languages.  The
  following example shows how to compile and link a C program named
  EIGHTQUEENS before using the debugger.  The compiler and linker are
  invoked from DCL level ($).  The program's source code is in the file
  EIGHTQUEENS.C.

  On VAX systems, you explicitly identify linker options files in your
  LINK command:

    $ CC/DEBUG/NOOPTIMIZE EIGHTQUEENS
    $ LINK/DEBUG EIGHTQUEENS,OPTIONS_FILE/OPTIONS

  On Alpha and I64 systems, you do not identify linker options files:

    $ CC/DEBUG/NOOPTIMIZE EIGHTQUEENS
    $ LINK/DEBUG EIGHTQUEENS

  The /DEBUG and /NOOPTIMIZE qualifiers are compiler command defaults for
  some languages.  These qualifiers are used in the example for emphasis.
  (For more information about compiling and linking that is specific to a
  particular language, see the documentation furnished with that
  language.)

  The /DEBUG qualifier on the compiler command (CC in this case) directs
  the compiler to write the symbol information associated with
  EIGHTQUEENS.C into the object module, EIGHTQUEENS.OBJ, in addition to
  the code and data for the program.  This symbol information lets you
  use the names of variables, routines, and other symbols declared in
  EIGHTQUEENS.C when using the debugger.  If your program's source code
  is in several files, you must compile each file whose symbols you want
  to reference with the /DEBUG qualifier.

  Some compilers optimize the object code to reduce the size of the
  program or to make it run faster.  In such cases you should compile
  your program with the /NOOPTIMIZE command qualifier (or equivalent)
  when preparing for debugging.  Otherwise, the contents of some program
  locations might be inconsistent with what you would expect from viewing
  the source code.  For example, some optimization techniques eliminate
  certain variables so that you no longer have access to them while
  debugging.  (After the program has been debugged, you will probably
  want to recompile it without the /NOOPTIMIZE qualifier to take
  advantage of optimization.)

  The /DEBUG qualifier on the LINK command directs the linker to include
  all symbol information that is contained in EIGHTQUEENS.OBJ in the
  executable image.  The qualifier also causes the image activator to
  start the debugger at run time if you start the debugger by running a
  program, using the following DCL command syntax:

    $ DEBUG/KEEP

  If your program has several object modules, you need to specify those
  modules in the LINK command (for most languages).

  On VAX processors, the /OPTIONS qualifier indicates that OPTIONS_FILE
  is a linker options file.  In the OpenVMS VAX example, the file
  specifies a run-time library to be linked with the program.

  Even if you compile and link an image with the /DEBUG command
  qualifier, you can execute that image normally without it being under
  debugger control.  To do so, use the /NODEBUG qualifier on the DCL RUN
  command.  For example:

    $ RUN/NODEBUG EIGHTQUEENS

  This is convenient for checking your program after you think it is
  error free.  Note that the data required by the debugger occupies space
  within the executable image.  So, when you think your program is
  correct, you might want to link your program again without the /DEBUG
  qualifier.  This creates an image with only traceback data in the debug
  symbol table, which uses less disk space.

  On Alpha and I64 systems, you can debug programs that have been linked
  with the /DSF qualifier (and therefore have a separate debug symbol
  file).  The /DSF qualifer to the LINK command directs the linker to
  create a separate .DSF file to contain the symbol information.  This
  allows more flexible debugging options.  Debugging such a program
  requires the following:

  1.  The name of the .DSF file must match the name of the .EXE file
      being debugged.

  2.  You must define DBG$IMAGE_DSF_PATH to point to the directory that
      contains the .DSF file.

  For example:

     $ CC/DEBUG/NOOPTIMIZE TESTPROGRAM
     $ LINK/DSF=TESTDISK:[TESTDIR]TESTPROGRAM.DSF TESTPROGRAM
     $ DEFINE DBG$IMAGE_DSF_PATH TESTDISK:[TESTDIR]
     $ DEBUG/KEEP TESTPROGRAM
Close Help