Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ABORT_KEY

ATSIGN

BREAK

DEFINE

DISPLAY

EDITOR

EVENT_FACILITY

IMAGE

KEY

LANGUAGE

LOG

MARGINS

MAX_SOURCE_FILES

MODE

MODULE

OUTPUT

PROCESS

PROMPT

RADIX

SCOPE

SEARCH

SOURCE

STEP

TASK

TERMINAL

TRACE

TYPE

WATCH

WINDOW

Parameters

Example

Parameter

Examples

Parameters

Qualifiers

/ACTIVATING

/AFTER:n

/BRANCH

/CALL

/EVENT

/EXCEPTION

/INSTRUCTION

/INSTRUCTION

/INTO

/JSB

/LINE

/MODIFY

/NOJSB

/NOSHARE

/NOSILENT

/NOSOURCE

/NOSYSTEM

/OVER

/RETURN

/SHARE

/SILENT

/SOURCE

/SYSTEM

/TEMPORARY

/TERMINATING

ADDRESS

COMMAND

PROCESS_GROUP

VALUE

Parameters

Examples

Parameters

Qualifiers

/DYNAMIC

/HIDE

/MARK_CHANGE

/NODYNAMIC

/NOPROCESS

/POP

/PROCESS

/PUSH

/REMOVE

/SIZE:n

/SUFFIX

Qualifiers

/LOG

/NOLOG

/NOSTATE

/STATE

Parameters

Parameters

Parameters:

Parameters

DYNAMIC

G_FLOAT

INTERRUPT

KEYPAD

LINE

NODYNAMIC

NOG_FLOAT

NOINTERRUPT

NOKEYPAD

NOLINE

NOOPERANDS

NOSCREEN

NOSCROLL

NOSEPARATE

NOSYMBOLIC

OPERANDS

SCREEN

SCROLL

SEPARATE

SYMBOLIC

Parameters

Parameters

Qualifiers

/ALL

/CALLS

/NORELATED

/RELATED

LOG

NOLOG

NOSCREEN_LOG

NOTERMINAL

NOVERIFY

SCREEN_LOG

TERMINAL

VERIFY

Parameters

Examples

Parameters

Qualifiers

/ALL

/DYNAMIC

/HOLD

/NODYNAMIC

/NOHOLD

/VISIBLE

Examples

Parameters

Qualifiers

/SUFFIX

/NOPOP

/NOSUFFIX

/POP

BINARY

DECIMAL

DEFAULT

HEXADECIMAL

OCTAL

Parameters

Qualifiers

/INPUT

/OUTPUT

/OVERRIDE

Parameters

Qualifier

Default

Examples

Notes

/MODULE

ALL

IDENTIFIER

NEXT

STRING

Parameters

Examples

Parameters

Qualifiers

/MODULE

/EDIT

BRANCH

CALL

EXCEPTION

INSTRUCTION

INTO

JSB

LINE

NOJSB

NOSHARE

NOSILENT

NOSOURCE

NOSYSTEM

OVER

RETURN

SHARE

SILENT

SOURCE

SYSTEM

Parameters

Examples

Parameters

Selection Qualifiers

Attribute Qualifiers

Examples

/ALL

/ABORT

/ACTIVE

/HOLD

/PRIORITY

/RESTORE

/TIME_SLICE

/VISIBLE

Examples

Qualifiers

/PAGE

/WIDTH

Examples

Parameters

Qualifiers

/ACTIVATING

/AFTER:n

/BRANCH

/CALL

/EVENT

/EXCEPTION

/INSTRUCTION

/INSTRUCTION

/INTO

/JSB

/LINE

/MODIFY

/NOJSB

/NOSHARE

/NOSILENT

/NOSOURCE

/NOSYSTEM

/OVER

/RETURN

/SHARE

/SILENT

/SOURCE

/SYSTEM

/TEMPORARY

/TERMINATING

ASCIC

ASCID

ASCIW

ASCIZ

BYTE

D_FLOAT

DATE_TIME

FLOAT

G_FLOAT

H_FLOAT

INSTRUCTION

LONG

OCTAWORD

QUADWORD

WORD

Parameters

ASCII:n

PACKED:n

TYPE=(t)

Qualifiers

Examples

/OVERRIDE

Examples

Global Section Watchpoints

Parameters

Qualifiers

Static Nonstatic Watchpoints

/AFTER:n

/INTO

/NOSILENT

/NOSOURCE

/NOSTATIC

/OVER

/SILENT

/SOURCE

/STATIC

/TEMPORARY

Parameters

Examples

DEBUG SET — VMS FORTRAN_5.2

     The meaning of the command depends on the keyword specified.  For
     example,  SET BREAK establishes breakpoints, SET MODULE loads the
     symbol table for a module, and so on.  See the  help  under  each
     keyword.

 Format:

     SET keyword [/qualifier] parameter

Additional information available:

ABORT_KEYATSIGNBREAKDEFINEDISPLAYEDITOR
EVENT_FACILITYIMAGEKEYLANGUAGELOGMARGINS
MAX_SOURCE_FILESMODEMODULEOUTPUTPROCESSPROMPT
RADIXSCOPESEARCHSOURCESTEPTASKTERMINAL
TRACETYPEWATCHWINDOW

Parameters

Parameters

 keyword

     Keyword can be ABORT_KEY, ATSIGN, BREAK, DEFINE, DISPLAY, EDITOR,
     EVENT_FACILITY,    IMAGE,    KEY,    LANGUAGE,    LOG,   MARGINS,
     MAX_SOURCE_FILES, MODE, MODULE, OUTPUT, PROCESS,  PROMPT,  RADIX,
     SCOPE,  SEARCH, SOURCE, STEP, TASK, TERMINAL, TRACE, TYPE, WATCH,
     or WINDOW.

 qualifiers

     Depends on the keyword specified.

 parameters

     Depends on the keyword specified.

ABORT_KEY

     By default, the CTRL/C sequence, when entered within a  debugging
     session,   aborts   the  execution  of  a  debugger  command  and
     interrupts program execution.  The SET ABORT_KEY command  enables
     you  to  assign  the abort function to another CTRL-key sequence.
     This may be necessary if your program has a  CTRL/C  AST  service
     routine enabled.

     Note that many CTRL-key sequences have VMS predefined  functions,
     and  the  SET  ABORT_KEY  command  enables  you  to override such
     definitions (see the VMS  DCL  Concepts  Manual).   Some  of  the
     CTRL-key  characters  not used by the VMS operating system are G,
     K, N, and P.

     The SHOW  ABORT_KEY  command  identifies  the  CTRL-key  sequence
     currently in effect for the abort function.

     Do not use CTRL/Y from within a debugging  session.   Always  use
     either CTRL/C or an equivalent CTRL-key sequence established with
     the SET ABORT_KEY command.

 Format:

     SET ABORT_KEY = CTRL_character

Additional information available:

ExampleParameter

Example

     DBG> SHOW ABORT_KEY
     Abort Command Key is CTRL_C
     DBG> GO
        ...
     <CTRL/C>

     %DEBUG-W-ABORTED, command aborted by user request
     DBG> EXAMINE/BYTE 1000:101000  !should have typed 1000:1010
     1000: 0
     1004: 0
     1008: 0
     1012: 0
     1016: 0
     <CTRL/C>

     %DEBUG-W-ABORTED, command aborted by user request
     DBG> SET ABORT_KEY = CTRL_P
     DBG> GO
        ...
     <CTRL/P>
     %DEBUG-W-ABORTED, command aborted by user request
     DBG> EXAMINE/BYTE 1000:101000  !should have typed 1000:1010
     1000: 0
     1004: 0
     1008: 0
     1012: 0
     1016: 0
     <CTRL/P>

     %DEBUG-W-ABORTED, command aborted by user request
     DBG>

     This sequence of commands shows the following:

     1.  Use of the (default) CTRL/C sequence  to  perform  the  abort
         function.

     2.  Use of the  SET  ABORT_KEY  command  to  reassign  the  abort
         function to the CTRL/P sequence.


Parameter

 character

     Specifies the key you press while holding down the CTRL key.  You
     can specify any alphabetic character.

ATSIGN

     Establishes  the  default  file  specification   for   processing
     debugger  command  procedures.   This  is useful if you wish (for
     example) to  change  the  file  type  of  your  debugger  command
     procedures  from  .COM  to .DBG.  Or if you have several debugger
     command procedures, you can  place  them  in  one  directory  and
     specify this directory as the default file specification.

 Format:

      SET ATSIGN file-spec

 Example:

      DBG> SET ATSIGN MYDISK:[MYDIR.DEBUG].DBG
      DBG> @MYFILE

     The file MYDISK:[MYDIR.DEBUG]MYFILE.DBG is executed as a  command
     procedure.

BREAK

     Establishes a breakpoint at the location denoted  by  an  address
     expression,  at  instructions  of  a  particular class, or at the
     occurrence of specified events.

 Format:

       SET BREAK [/qualifiers]
          [address-expression[,...]]
          [ WHEN (conditional-expression)]
          [ DO   (command[;...])]

     When a breakpoint is triggered, the debugger takes the  following
     action:

     1.  Suspends program execution at the breakpoint location.

     2.  If /AFTER was specified when the breakpoint was  set,  checks
         the  AFTER  count.  If the specified number of counts has not
         been reached, execution is resumed and the debugger does  not
         perform the remaining steps.

     3.  Evaluates the  expression  in  a  WHEN  clause,  if  one  was
         specified  when  the breakpoint was set.  If the value of the
         expression is FALSE, execution is resumed  and  the  debugger
         does not perform the remaining steps.

     4.  Reports that execution has reached the breakpoint location by
         issuing a "break ..." message, unless /SILENT was specified.

     5.  Displays  the  line  of  source  code  where   execution   is
         suspended, unless /NOSOURCE or /SILENT was specified when the
         breakpoint  was  set,  or  SET  STEP  NOSOURCE  was   entered
         previously.

     6.  Executes the commands in a DO clause, if  one  was  specified
         when  the breakpoint was set.  If the DO clause contains a GO
         command,  execution  continues  and  the  debugger  does  not
         perform the next step.

     7.  Issues the prompt.


     You set a breakpoint at a particular location in your program  by
     specifying an address expression with the SET BREAK command.  You
     set  a  breakpoint  on  consecutive  source  lines,  classes   of
     instructions,  or  events  by specifying a qualifier with the SET
     BREAK command.  Generally, you must  specify  either  an  address
     expression  or  a qualifier, but not both.  The only exception is
     with the /EVENT qualifier, which requires  that  you  specify  an
     event  name  keyword  and  permits you also to specify an address
     expression for certain event names.

     If you set a  breakpoint  at  a  location  currently  used  as  a
     tracepoint,   the   tracepoint   is  canceled  in  favor  of  the
     breakpoint, and vice versa.

     Breakpoints may be user  defined  or  predefined.   User  defined
     breakpoints  are those that you set explicitly with the SET BREAK
     command.  Predefined breakpoints, which depend  on  the  type  of
     program you are debugging (for example, Ada or multiprocess), are
     established automatically when you invoke the debugger.  Use  the
     SHOW BREAK command to identify all breakpoints that are currently
     set.  Any predefined breakpoints are identified as such.

     User defined and predefined  breakpoints  are  set  and  canceled
     independently.   For example, a location or event may have both a
     user defined and a predefined  breakpoint.   Canceling  the  user
     defined breakpoint does not affect the predefined breakpoint, and
     conversely.

Additional information available:

ExamplesParametersQualifiers

/ACTIVATING/AFTER:n/BRANCH/CALL/EVENT/EXCEPTION
/INSTRUCTION/INSTRUCTION/INTO/JSB/LINE
/MODIFY/NOJSB/NOSHARE/NOSILENT/NOSOURCE/NOSYSTEM
/OVER/RETURN/SHARE/SILENT/SOURCE/SYSTEM/TEMPORARY
/TERMINATING

Examples

     1   DBG> SET BREAK SWAP\%LINE 12

     This command causes the debugger to break on line  12  of  module
     SWAP.

     2   DBG> SET BREAK/AFTER:3 SUB2

     This command causes the  debugger  to  break  on  the  third  and
     subsequent times that SUB2 (a routine) is executed.

     3   DBG> SET BREAK/NOSOURCE LOOP1 DO (EXAMINE D; STEP; EXAMINE Y; GO)

     This command causes the debugger to break at location LOOP1.   At
     the  breakpoint,  the following commands are issued, in the order
     given:  EXAMINE D,  STEP,  EXAMINE  Y,  and  GO.   The  /NOSOURCE
     qualifier   suppresses   the   display  of  source  code  at  the
     breakpoint.

     4   DBG> SET BREAK ROUT3 WHEN (X > 4) DO (EXAMINE Y)

     This command causes the debugger to break on routine ROUT3 when X
     is  greater  than 4.  At the breakpoint, the command EXAMINE Y is
     issued.

     5   DBG> SET BREAK/TEMPORARY 1440
         DBG> SHOW BREAK
         breakpoint at 1440 [temporary]
         DBG>

     This command sets a temporary breakpoint at location 1440.  After
     that breakpoint is triggered, it disappears.

     6   DBG> SET BREAK/LINE

     This command causes the debugger to break on the start  of  every
     source line encountered during program execution.

     7   DBG> SET BREAK/LINE WHEN (X .NE. 0)
         DBG> SET BREAK/INSTRUCTION WHEN (X .NE. 0)

     These two commands cause the debugger to  break  when  X  is  not
     equal  to  0.   The  first command tests for the condition at the
     start of every source line  encountered  during  execution.   The
     second command tests for the condition at each instruction.

     8   DBG> SET BREAK/INSTRUCTION=ADDL3

     This  command  causes  the  debugger  to   break   whenever   the
     instruction ADDL3 is about to be executed.

     9   DBG> SET BREAK/LINE/INTO/NOSHARE/NOSYSTEM

     This command causes the debugger to break on the start  of  every
     source  line,  including lines in called routines (/INTO) but not
     in  shareable  image  routines  (/NOSHARE)  or  system   routines
     (/NOSYSTEM).

     10  DBG> SET BREAK/RETURN ROUT4

     This command causes  the  debugger  to  break  whenever  the  RET
     instruction of routine ROUT4 is about to be executed.

     11  DBG> SET BREAK/RETURN %LINE 14

     This command causes  the  debugger  to  break  whenever  the  RET
     instruction  of  the routine that includes line 14 is about to be
     executed.  This form of the command is  useful  if  execution  is
     currently  suspended  within  a  routine  and  you  want to set a
     breakpoint on that routine's RET instruction.

     12  DBG> SET BREAK/EXCEPTION DO (SET MODULE/CALLS; SHOW CALLS)

     This command causes the debugger to break whenever  an  exception
     is  signaled.   At  the breakpoint, the commands SET MODULE/CALLS
     and SHOW CALLS are issued.

     13  DBG> SET BREAK/EVENT=RUN RESERVE, %TASK 3

     This command sets two breakpoints, which are associated with  the
     Ada  tasks  RESERVE and task 3, respectively.  Each breakpoint is
     triggered whenever its associated task makes a transition to  the
     RUN state.

     14  DBG_1> SET BREAK/ACTIVATING

     This command causes the debugger to break whenever a process of a
     multiprocess program is brought under debugger control.

Parameters

 address-expression

     Specifies an address expression (a program location) at  which  a
     breakpoint  is  to  be  set.  With high- level languages, this is
     typically a line number, a routine name,  or  a  label,  and  may
     include  a  path  name  to  specify  the  entity  uniquely.  More
     generally, an address expression may also  be  a  virtual  memory
     address  or  a  register and may be composed of numbers (offsets)
     and symbols, as well as  one  or  more  operators,  operands,  or
     delimiters.

     Do not specify the asterisk asterisk wildcard character (*).   Do
     not  specify  an  address  expression  with /ACTIVATING, /BRANCH,
     /CALL, /EXCEPTION, /INSTRUCTION[=(opcode-list)], /INTO, /[NO]JSB,
     /LINE,  /OVER,  /[NO]SHARE,  /[NO]SYSTEM,  or  /TERMINATING.  The
     /MODIFY and /RETURN qualifiers are used with  specific  kinds  of
     address expressions.

     If you specify a virtual memory address or an address  expression
     whose  value  is not a symbolic location, check (with the EXAMINE
     command) that an instruction  actually  begins  at  the  byte  of
     memory  so  indicated.   If an instruction does not begin at this
     byte, a run- time error may occur when an  instruction  including
     that  byte  is executed.  When you set a breakpoint by specifying
     an address expression whose value is not a symbolic location, the
     debugger  does  not  verify that the location specified marks the
     beginning of an instruction.  CALLS and CALLG routines start with
     an entry mask.

 command

     Specifies a debugger command that is to be executed  as  part  of
     the DO clause when break action is taken.

 conditional-expression

     Specifies a conditional expression in the currently set  language
     that  is  to  be evaluated when execution reaches the breakpoint.
     If the expression is TRUE, break action occurs, and the  debugger
     reports  that  a break has occurred.  If the expression is FALSE,
     break action does not occur.  In  this  case,  a  report  is  not
     issued, the commands specified by the DO clause are not executed,
     and program execution is continued.

Qualifiers

     The qualifiers can be grouped as follows.

     The /LINE qualifier sets a breakpoint  on  each  line  of  source
     code.

     The  following  qualifiers  set   breakpoints   on   classes   of
     instructions.  Note that use of these qualifiers and of the /LINE
     qualifier causes the debugger to trace every instruction of  your
     program   as  it  executes  and  thus  significantly  slows  down
     execution:          /BRANCH,         /CALL,         /INSTRUCTION,
     /INSTRUCTION=(opcode-list), /RETURN.

     The following qualifiers set breakpoints on  classes  of  events:
     /ACTIVATING, /EVENT=event-name, /EXCEPTION, /TERMINATING.

     The following qualifiers affect what happens at a  routine  call:
     /INTO, /[NO]JSB, /OVER, /[NO]SHARE, /[NO]SYSTEM.

     The following qualifiers affect what output is displayed  when  a
     breakpoint is reached:  /[NO]SILENT, /[NO]SOURCE.

     The following  qualifiers  affect  the  timing  and  duration  of
     breakpoints:  /AFTER:n, /TEMPORARY.

     The /MODIFY qualifier is  used  to  monitor  changes  at  program
     locations (typically changes in the values of variables).

/ACTIVATING

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     Causes the debugger to break  when  a  new  process  comes  under
     debugger  control.   The  debugger  prompt  is displayed when the
     first process comes under debugger control.  This enables you  to
     enter debugger commands before the program has started execution.
     Do not specify an address expression with /ACTIVATING.  See  also
     /TERMINATING.

/AFTER:n

     Specifies that break action not be taken until the nth  time  the
     designated  breakpoint  is  encountered (n is a decimal integer).
     Thereafter, the breakpoint occurs every time  it  is  encountered
     provided  that  conditions  in the WHEN clause (if specified) are
     TRUE.  The command SET BREAK/AFTER:1 has the same effect  as  the
     SET BREAK command.

/BRANCH

     Causes  the  debugger  to  break  on  every  branch   instruction
     encountered  during  execution (including BEQL, BGTR, BLEQ, BGEQ,
     BLSS, BGTRU, BLEQU, BVC, BVS, BGEQU, BLSSU, BRB, BRW,  JMP,  BBS,
     BBC,  BBSS,  BBCS,  BBSC,  BBCC,  BBSSI, BBCCI, BLBS, BLBC, ACBB,
     ACBW, ACBL, ACBF,  ACBD,  ACBG,  ACBH,  AOBLEQ,  AOBLSS,  SOBGEQ,
     SOBGTR,   CASEB,  CASEW,  CASEL).   Do  not  specify  an  address
     expression with /BRANCH.  See also /INTO, /OVER.

/CALL

     Causes the debugger to break on every call instruction (including
     the  CALLS,  CALLG,  BSBW,  BSBB, JSB, RSB, and RET instructions)
     encountered  during  execution.   Do  not  specify   an   address
     expression with /CALL.  See also /INTO, /OVER.

/EVENT=event-name

     Note:  This qualifier applies only to Ada and SCAN.  See the  VAX
     Ada and VAX SCAN documentation for complete information.

     Causes the debugger to break on  the  specified  event  (if  that
     event  is  defined and detected by the run- time system).  If you
     specify an address expression with /EVENT, causes the debugger to
     break  whenever  the  specified  event  occurs  for  that address
     expression.  Event names depend on the  run-time  facility.   You
     can  display the event names associated with the current run-time
     facility by entering the SHOW EVENT_FACILITY command.  Note  that
     you  cannot  specify  an  address  expression  with certain event
     names.

/EXCEPTION

     Causes the debugger to break whenever an exception  is  signaled.
     The  break  action  occurs  before  any  user-  written exception
     handlers are invoked.  Do not specify an address expression  with
     /EXCEPTION.

     As a result of  a  SET  BREAK/EXCEPTION  command,  whenever  your
     program  generates  an exception condition, the debugger suspends
     program execution, reports the exception condition, and  displays
     its   prompt.   When  you  resume  execution  from  an  exception
     breakpoint, the behavior is as follows:

      o  If you enter a GO  command  without  an  address-  expression
         parameter,  the  exception  is resignalled, thus allowing any
         user-declared exception handler to execute.

      o  If you  enter  a  GO  command  with  an  address-  expression
         parameter,  program  execution  continues  at  the  specified
         location, thus inhibiting the execution of any  user-declared
         exception handler.

      o  If you enter a STEP command,  the  debugger  steps  into  any
         user-declared    exception   handler.    If   there   is   no
         user-declared  handler  for  that  exception,  the   debugger
         resignals the exception.

      o  If you  enter  a  CALL  command,  the  routine  specified  is
         executed.   If  a  routine  is  called  with the CALL command
         directly after an exception breakpoint has been triggered, no
         breakpoints,  tracepoints,  or  watchpoints  set  within that
         routine are triggered.  However, they are  triggered  if  the
         CALL command is given at another time.


/INSTRUCTION

     Causes the debugger to break on every instruction  executed.   Do
     not  specify  an  address expression with /INSTRUCTION.  See also
     /INTO, /OVER.

/INSTRUCTION=(opcode-list)

     Causes the debugger to break on every instruction whose opcode is
     in   the  list.   Do  not  specify  an  address  expression  with
     /INSTRUCTION.  See also /INTO, /OVER.

/INTO

     Applies  only   to   breakpoints   set   with   /BRANCH,   /CALL,
     /INSTRUCTION[=(opcode-list)],  or /LINE; that is, when an address
     expression is not explicitly specified.   When  used  with  those
     qualifiers,  causes the debugger to break at the specified points
     within called routines (as  well  as  within  the  routine  where
     execution is currently suspended).  /INTO is the default behavior
     and is the opposite of /OVER.

     When using /INTO, you can further qualify the break  action  with
     the /[NO]JSB, /[NO]SHARE, and /[NO]SYSTEM qualifiers.

/JSB

     Qualifies /INTO.  Use  /JSB  only  with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)],  or  /LINE.    /JSB   permits   the
     debugger  to  break within routines that are called by the JSB or
     CALL instruction.  /JSB is the default for all  languages  except
     DIBOL.  Do not specify an address expression with /[NO]JSB.

/LINE

     Causes the debugger to break at the start of each new  line.   Do
     not  specify  an  address expression with /LINE.  See also /INTO,
     /OVER.

/MODIFY

     Causes a break at every instruction that writes to  and  modifies
     the  value  of  the location indicated by the address expression.
     The address expression is typically a variable name.

     The SET BREAK/MODIFY  command  acts  exactly  like  a  SET  WATCH
     command and operates under the same restrictions.

     If you specify an absolute address for  the  address  expression,
     the  debugger  may  not  be  able to associate the address with a
     particular data object.   In  this  case,  the  debugger  uses  a
     default  length of 4 bytes.  You can change this length, however,
     by setting the type to either WORD (SET TYPE WORD, which  changes
     the  default  length  to  2  bytes) or BYTE (SET TYPE BYTE, which
     changes the  default  length  to  1  byte).   SET  TYPE  LONGWORD
     restores the default length of 4 bytes.

/NOJSB

     Qualifies /INTO.  Use /NOJSB only  with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /NOJSB specifies that breakpoints  not  be  set  within  routines
     called  by  JSB  instructions.   /NOJSB  is the default for DIBOL
     programs.  In DIBOL, user- written routines  are  called  by  the
     CALL  instruction  and DIBOL run-time library routines are called
     by the JSB instruction.  Do not  specify  an  address  expression
     with /NOJSB.

/NOSHARE

     Qualifies /INTO.  Use /NOSHARE only with /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /NOSHARE specifies that breakpoints not be set  within  shareable
     images.  Do not specify an address expression with /[NO]SHARE.

/NOSILENT

     Specifies that the "break .  .  .  " message is displayed at  the
     breakpoint.  This is the default.

/NOSOURCE

     Specifies that the source line for the current  location  is  not
     displayed at the breakpoint.  See also SET STEP [NO]SOURCE.

/NOSYSTEM

     Qualifies /INTO.  Use /NOSYSTEM only with /INTO and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /NOSYSTEM specifies that breakpoints not  be  set  within  system
     routines  (P1  space).  Do not specify an address expression with
     /SYSTEM.

/OVER

     Applies  only   to   breakpoints   set   with   /BRANCH,   /CALL,
     /INSTRUCTION[=(opcode-list)],  or /LINE; that is, when an address
     expression is not explicitly specified.   When  used  with  those
     qualifiers,  causes the debugger to break at the specified points
     only within the routine where execution  is  currently  suspended
     (not  within  called  routines).   /OVER is the opposite of /INTO
     (the default behavior).

/RETURN

     Causes the debugger to break on the RET (return)  instruction  of
     the  routine  associated  with  the  specified address expression
     (which may be a routine name, line  number,  and  so  on).   This
     qualifier  can only be applied to routines called with a CALLS or
     CALLG instruction; it cannot be used with JSB routines.  Breaking
     on   the  RET  instruction  enables  you  to  inspect  the  local
     environment (for example, obtain the values of  local  variables)
     before  the RET instruction deletes the routine's call frame from
     the call stack.

     For  this  qualifier,  the  address-expression  parameter  is  an
     instruction  address  within  a  CALLS  or CALLG routine.  It may
     simply be a routine name, in which case it specifies the  routine
     start address.  However, you can also specify another location in
     a routine, so you can see only those returns that are taken after
     a certain code path is followed.

     A SET BREAK/RETURN command cancels a previous SET  BREAK  command
     if the same address expresion is specified.

/SHARE

     Qualifies /INTO.  Use /SHARE only  with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /SHARE (default) permits the debugger to break  within  shareable
     image  routines  as  well  as  other routines.  Do not specify an
     address expression with /[NO]SHARE.

/SILENT

     Specifies that the "break .  .  .  " message and the source  line
     for  the  current  location  are not displayed at the breakpoint.
     /SILENT overrides /SOURCE.  See also SET STEP [NO]SOURCE.

/SOURCE

     Specifies that the  source  line  for  the  current  location  is
     displayed  at  the  breakpoint.   This  is  the default.  /SILENT
     overrides /SOURCE.  See also SET STEP [NO]SOURCE.

/SYSTEM

     Qualifies /INTO.  Use /SYSTEM only with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /SYSTEM (default) permits the debugger  to  break  within  system
     routines (P1 space) as well as other routines.  Do not specify an
     address expression with /SYSTEM.

/TEMPORARY

     Causes the breakpoint to disappear after  it  is  triggered  (the
     breakpoint does not remain permanently set).

/TERMINATING

     Causes the debugger to break when a  process  performs  an  image
     exit.   Note  that the debugger always gains control and displays
     its  prompt  when  the  last  image  of   a   single-process   or
     multiprocess  program  exits.   A  process is terminated when the
     image has executed the $EXIT system service and all of  its  exit
     handlers  have  executed.   Do  not specify an address expression
     with /TERMINATING.  See also /ACTIVATING.

DEFINE

     Specifies how to interpret DEFINE commands.  The  DEFINE  command
     can bind a symbol to either an address, a command string, a group
     of process names, or a value.

     Example:

     DBG> SET DEFINE COMMAND
     DBG> DEFINE B = "SET BREAK"
     DBG> DEFINE M = "SET MODULE"

Additional information available:

ADDRESSCOMMANDPROCESS_GROUPVALUE

Parameters

Parameters

 ADDRESS
     Treat subsequent DEFINE commands as DEFINE/ADDRESS.
 COMMAND
     Treat subsequent DEFINE commands as DEFINE/COMMAND.
 PROCESS_GROUP
     Treat subsequent DEFINE commands as DEFINE/PROCESS_GROUP
 VALUE
     Treat subsequent DEFINE commands as DEFINE/VALUE.

ADDRESS

     Treat subsequent DEFINE commands as DEFINE/ADDRESS.

COMMAND

     Treat subsequent DEFINE commands as DEFINE/COMMAND.

PROCESS_GROUP

     Treat subsequent DEFINE commands as DEFINE/PROCESS_GROUP

VALUE

     Treat subsequent DEFINE commands as DEFINE/VALUE.

DISPLAY

     Creates a screen display to be shown on the terminal  screen.   A
     screen  display is a set of text lines that can be viewed through
     a window on the terminal screen.  The SET DISPLAY command defines
     such  a display, sets its maximum size in text lines, defines its
     screen position, and establishes its display kind.  Once set, the
     display may be selected to have certain attributes such as output
     or scrolling by the SELECT command.

 Format:
      SET DISPLAY [/qualifier...] [disp-name [AT wspec] [dkind]
                                [, disp-name [AT wspec] [dkind]...]]

Additional information available:

ExamplesParametersQualifiers

Examples

     1   DBG> SET DISPLAY DISP2 AT RS45
         DBG> SELECT/OUTPUT DISP2

     In this example, the SET DISPLAY command creates  a  new  display
     named  DISP2  essentially at the right bottom half of the screen,
     above the PROMPT display, which is located at  S6.   This  is  an
     output  display  by  default.   The  SELECT/OUTPUT  command  then
     selects DISP2 as the current output display.

     2   DBG> SET WINDOW TOP AT (1,8,45,30)
         DBG> SET DISPLAY NEWINST AT TOP INSTRUCTION
         DBG> SELECT/INST NEWINST

     In this example, the SET WINDOW command creates  a  window  named
     TOP  starting  at  line 1 and column 45, and extending down for 8
     lines and to the right for 30 columns.  The SET  DISPLAY  command
     creates  an  instruction  display  named  NEWINST to be displayed
     through TOP.  The SELECT/INST  command  selects  NEWINST  as  the
     current instruction display.

     3   DBG> SET DISPLAY CALLS AT Q3 DO (SHOW CALLS)

     This command creates a DO display named CALLS at window Q3.  Each
     time  the debugger gains control from the program, the SHOW CALLS
     command is executed and the output is displayed in display CALLS,
     replacing any previous contents.

     4   DBG> SET DISPLAY/MARK EXAM AT Q2 DO (EXAM A,B,C)

     This command creates a DO display named EXAM at window  Q2.   The
     display  shows  the  current  values  of  variables  A,  B, and C
     whenever the debugger prompts for input.  Any changed values  are
     highlighted.

     5   DBG_2> SET DISPLAY/PROCESS OUT_/SUFFIX AT S45 OUTPUT

     This command creates  an  output  display  at  window  S45.   The
     /PROCESS qualifier, by default, makes the display specific to the
     visible process  (process  2,  in  this  example).   The  /SUFFIX
     qualifier  appends a process-identifying suffix, that denotes the
     visible process, to the  display  name  OUT_.   By  default,  the
     /SUFFIX qualifier appends the same process identifier suffix that
     appears on the prompt.   Therefore,  the  full  display  name  is
     OUT_2.

Parameters

 disp-name

     The name of the new display being defined.  If a  screen  display
     by  the  same  name  already exists, the previous display must be
     cancelled before the new one can be established.

 wspec

     The name of the screen window at which  this  display  is  to  be
     positioned.   This may also be a window specification of the form
     (start-line, line-count, start-column, column-count).   If  wspec
     is omitted, the display is positioned at window H1 or H2.

 dkind

     The display kind.  This can be  OUTPUT  for  an  output  display,
     SOURCE  for  a  source  display,  SOURCE(debug-cmd-list)  for  an
     automatically updated source display, DO(debug-cmd-list)  for  an
     automatically   updated   output   display,  INSTRUCTION  for  an
     instruction   display,   INSTRUCTION(debug-cmd-list)    for    an
     automatically  updated  instruction  display,  or REGISTER for an
     automatically  updated  register  display.   If  omitted,   dkind
     defaults to OUTPUT.

Qualifiers

Additional information available:

/DYNAMIC/HIDE/MARK_CHANGE/NODYNAMIC/NOPROCESS
/POP/PROCESS/PUSH/REMOVE/SIZE:n/SUFFIX

/DYNAMIC

     Specifies that the display is to automatically adjust its  window
     dimensions  proportionally  when  you change the screen height or
     width with a SET TERMINAL command.  This is the default  behavior
     for all displays.

/HIDE

     Hides the specified display under any other displays that  occupy
     the same region on the terminal screen.  This has the same effect
     as the /PUSH qualifier.

/MARK_CHANGE

     Specifies that any changed lines of a DO(debug-cmd-list)  display
     are  marked  each time the display is automatically updated.  The
     marking is done by highlighting each line of  the  display  which
     has  a  different  textual content this time compared to the last
     time the display was updated.  This qualifier is useful when  you
     want  changed variables in an automatically updated display to be
     highlighted on change.  This qualifier is not applicable to other
     kinds of displays.

/NODYNAMIC

     Specifies that the display is not  to  automatically  adjust  its
     window dimensions when you change the screen height or width with
     a SET TERMINAL command.

/NOPROCESS

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     Causes the specified display to always  be  associated  with  the
     visible process, which may change during program execution.  This
     is the default behavior.

/POP

     Pops the specified display to the front  of  all  other  displays
     that  occupy the same region on the terminal screen.  This is the
     default action of the SET DISPLAY command.

/PROCESS[=(process-spec)]

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     Causes the specified display to be process specific --  that  is,
     the  specified  display  is  associated  only  with  a particular
     process.   The  contents  of  a  process-specific   display   are
     generated  and  modified in the context of that process.  You can
     make any display process specific, except for the PROMPT display.

     /PROCESS=(process-spec)  causes  the  specified  display  to   be
     associated  with  the  specified  process.   You must include the
     parentheses.  Use any of the following process-spec forms:

     [%PROCESS_NAME] process-name    The VMS process name, if that
                                     name contains no spaces or
                                     lowercase characters[1].

     [%PROCESS_NAME] "process-name"  The VMS process name, if that
                                     name contains spaces or lowercase
                                     characters. You can also use
                                     apostrophes (') instead of
                                     quotation marks (").

     %PROCESS_PID process_id         The VMS process identification
                                     number (PID, a hexadecimal number).

     %PROCESS_NUMBER process-number  The number assigned to a process
     (or %PROC process-number)       when it comes under debugger control.
                                     Process numbers appear in a
                                     SHOW PROCESS display.

     process-group-name              A symbol defined with the
                                     DEFINE/PROCESS_GROUP command to
                                     represent a group of processes.

     %NEXT_PROCESS                   The next process in the debugger's
                                     circular process list after the
                                     visible process.

     %PREVIOUS_PROCESS               The previous process in the
                                     debugger's circular process list
                                     before the visible process.

     %VISIBLE_PROCESS                The process whose stack, register
                                     set, and images are the current
                                     context for looking up symbols,
                                     register values, routine calls,
                                     breakpoints, and so on.
     _______________________________________________________
     [1]The process name can include the asterisk wildcard
     character (*)

     /PROCESS causes the specified display to be associated  with  the
     process  that  was  the  visible process when the DISPLAY/PROCESS
     command was executed.   If  you  do  not  specify  /PROCESS,  the
     current  process-  specific  behavior  (if  any) of the specified
     display remains unchanged.  See also /SUFFIX.

/PUSH

     Pushes the specified display under any other displays that occupy
     the same region on the terminal screen.  This has the same effect
     as the /HIDE qualifier.

/REMOVE

     Marks the specified display as being removed.  A removed  display
     does  not appear on the screen unless explicitly requested with a
     later DISPLAY command.  Although a removed display is not visible
     on the screen, the display and its contents are preserved.

/SIZE:n

     Sets the maximum size of the display in text lines to be n lines.
     If more than n lines are written to the display, the oldest lines
     are lost as new lines are added.  If this qualifier  is  omitted,
     the default size is 64 lines.

     For source displays, n gives the number of source lines to buffer
     at any one time.  This is not normally significant since a source
     display can always be scrolled over the entire source file.

/SUFFIX[=process-identifier-type]

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).  Use
     this qualifier only directly after a display name.

     Appends a process-identifying suffix  to  a  display  name.   The
     suffix  denotes  the  visible  process.   This  qualifier is used
     primarily  in  command   procedures   when   specifying   display
     definitions   or  key  definitions  that  are  bound  to  display
     definitions.  Use any of  the  following  process-identifier-type
     keywords:

        PROCESS_NAME     The display-name suffix is the VMS process name.

        PROCESS_NUMBER   The display-name suffix is the process number
                         (as shown in a SHOW PROCESS display).

        PROCESS_PID      The display-name suffix is the VMS process
                         identification number (PID).

     If  you  specify  /SUFFIX  without  a  process-identifier-   type
     keyword,  the  process  identifier type used for the display-name
     suffix is, by default, the same  as  that  used  for  the  prompt
     suffix (see SET PROMPT/SUFFIX).

     See also /[NO]PROCESS.

EDITOR

     Establishes the editor that is invoked by the EDIT command.

 Format:

      SET EDITOR [{/CALLABLE_EDT |
                   /CALLABLE_EMACS |
                   /CALLABLE_LSEDIT |
                   /CALLABLE_TPU}]
                 [/[NO]START_POSITION]
                 [command_line]

     The qualifiers /CALLABLE_EDT, /CALLABLE_EMACS,  /CALLABLE_LSEDIT,
     and  /CALLABLE_TPU  cause the EDIT command to invoke the callable
     versions of the editor chosen.  If none of these  are  specified,
     then  the command_line is required, and it is SPAWNed to DCL when
     the EDIT command is used.

     For  /CALLABLE_LSEDIT   and   /CALLABLE_TPU,   the   command_line
     specified is passed to the callable editor as the command line to
     use.  If no command_line is specified, the default is "LSEDIT" or
     "TPU",  respectively.   The  command_line  parameter is currently
     ignored  for  /CALLABLE_EDT  and  /CALLABLE_EMACS   since   those
     routines do not allow for a command line.

     The /START_POSITION qualifier on the SET EDITOR  command  defines
     whether  the /START_POSITION qualifier is appended to the command
     line before invoking the specific editor.  Currently only  LSEDIT
     (both SPAWNed and /CALLABLE_LSEDIT) support this qualifier.

     The  default  is  SPAWNed  LSEDIT,   with   the   /START_POSITION
     qualifier.  If the default were set by the SET EDITOR command, it
     would be:

         DBG> SET EDITOR/START_POSITION LSEDIT


 Example:

      DBG> SET EDITOR '@MAIL$EDIT ""'
      DBG> SET EDITOR/CALLABLE_EDT
      DBG> SET EDITOR/CALLABLE_TPU
      DBG> SET EDITOR/CALLABLE_TPU TPU/SECTION=MYSECINI.TPU$SECTION
      DBG> SET EDITOR/CALLABLE_LSEDIT/START_POSITION

     The  first  command  causes  EDIT  to  spawn  the  command   line
     '@MAIL$EDIT ""', which invokes the same editor used in MAIL.

     The second  command  causes  EDIT  to  invoke  CALLABLE_EDT.   No
     command line is allowed with CALLABLE_EDT.

     The third command causes EDIT to  invoke  CALLABLE_TPU  with  the
     default command line of "TPU".

     The fourth command causes EDIT to invoke  CALLABLE_TPU  with  the
     command line "TPU/SECTION=MYSECINI.TPU$SECTION".

     The last command causes EDIT to invoke CALLABLE_LSEDIT  with  the
     default  command  line  of  "LSEDIT".   Also, the /START_POSITION
     qualifier is appended to the command line, so  that  the  editing
     session  starts on the source line that the debugger is currently
     pointing to.

EVENT_FACILITY

     Selects a particular run time facility for the  debugger  to  use
     for the SET BREAK/EVENT and SET TRACE/EVENT commands.

     This allows the specified facility (the run  time  library  of  a
     language  or  other run time system) to define and detect certain
     types of events in the execution  of  your  program  which  would
     otherwise  be  very  difficult  (or  impossible) for you to set a
     breakpoint on.  These events are  treated  as  ordinary  debugger
     "eventpoints".   That  is,  you  can set a break or trace on them
     (using WHEN or DO clauses if desired), display them with the SHOW
     BREAK  or  SHOW  TRACE  commands, and remove them with the CANCEL
     BREAK   or   CANCEL   TRACE   commands.     (See    also    "SHOW
     EVENT_FACILITY").

 Format:

       SET EVENT_FACILITY facility_name

     Example:

     SET EVENT_FACILITY ADA

     Causes the debugger to use the Ada RTL as the event facility  for
     succeeding   "/EVENT"   commands.    The  Ada  language  includes
     multitasking.  The "EVENT_FACILITY" mechanism allows you  to  set
     breakpoints  on events such as task switching which you could not
     do otherwise.

IMAGE

     "SET IMAGE imagename" loads the symbol table  for  the  specified
     shareable   image,  and  sets  your  debugging  context  to  that
     shareable image.  Use the SHOW IMAGE command to find out what the
     shareable images in your program are.


     Format:

     SET IMAGE [/ALL] [image-name [,...]]

     For example, if you want to set a breakpoint in routine  SUBR  in
     module  SUBR  in shareable image SHARE1, then you could enter the
     commands:

     DBG> SET IMAGE SHARE1
     DBG> SET MODU SUBR
     DBG> SET BREAK SUBR

     The specified image should have been linked /DEBUG or /TRACE.  If
     the  image  was linked /NOTRACE then no symbol table is available
     for that image and you cannot SET IMAGE to it.

KEY

     This command changes the current key definition state.  Note that
     keys are defined by using the DEFINE/KEY command.

     Example:  To make DEFINE/KEY redefine the GOLD keys  by  default,
     do:

     DBG> SET KEY/STATE=GOLD


 Format:

     SET KEY [/qualifiers[,...]]


     Command Qualifiers         Defaults

     /[NO]LOG                   /LOG /[NO]STATE=state-name
     current state

Additional information available:

Qualifiers

Qualifiers

Additional information available:

/LOG/NOLOG/NOSTATE/STATE

/LOG

     Print an informational message indicating whether or not the  key
     state has been set.

/NOLOG

     Do not  print  the  informational  message  associated  with  the
     command.

/NOSTATE

     Do not change the current state

/STATE

     Set the state to state-name.

 Format:

     SET KEY/STATE=state-name

LANGUAGE

     Establishes the current language.  This affects what  expressions
     are   allowed   in  commands  that  accept  language  expressions
     (EXAMINE, EVALUATE, DEPOSIT, and so on).  This also  affects  the
     default radix setting.

     At debugger start-up, the debugger sets the current  language  to
     the  language in which the module containing the transfer address
     was written.  You can (and should) change this  language  by  the
     SET LANGUAGE command if you begin debugging a module written in a
     different source language.

 Format:

     SET LANGUAGE language-name

 Example:

     DBG> SET LANGUAGE ADA

Additional information available:

Parameters

Parameters

 language-name

     Specifies the name of the language.  Valid languages include  the
     following:   ADA,  BASIC, BLISS, C, COBOL, DIBOL, FORTRAN, MACRO,
     PASCAL, PLI, RPG, SCAN, and UNKNOWN.  (UNKNOWN gives  a  kind  of
     "generic"  language  support  and  is  intended to be used by any
     language not in the above list).

     Type "HELP Languages" for information on specific support.

LOG

     Specifies the name of the log file to which the  debugger  writes
     when  the output parameter is set to LOG.  Note that SET LOG only
     specifies the name of the file; you need to do SET OUTPUT LOG  to
     actually enable logging.  The default log file name is DEBUG.LOG.

 Format:

     SET LOG file-spec

 Example:

     DBG> SET LOG MARCH24.DBG
     DBG> SET OUTPUT LOG


Additional information available:

Parameters

Parameters

 file-spec

     The log file's file specification.

MARGINS

     Specifies the leftmost source-line character position at which to
     begin  display  of a line of source code (the left margin) and/or
     the rightmost source-line character  position  at  which  to  end
     display of a line of source code.

     The SET MARGINS command affects only  the  display  of  lines  of
     source code, that is, the display resulting from commands such as
     TYPE and EXAMINE/SOURCE.  The SET MARGINS command does not affect
     the  display  resulting from commands (such as EXAMINE, EVALUATE,
     SHOW MODE, and so on) that do not display source code.

 Format:

                    rm
     SET MARGINS lm:rm
                 lm:
                   :rm

 Example:
     DBG> SET MARGINS 10:70

Additional information available:

Parameters:

Parameters:

 lm - The source-line character position at which to begin display  of
     the line of source code (the left margin).

 rm - The source-line character position at which to  end  display  of
     the line of source code (the right margin).

     If you specify a single number, the debugger sets the left margin
     to 1 and the right margin to the number specified.

     If you specify two numbers, separated with a colon, the  debugger
     sets  the  left margin to the number specified to the left of the
     colon and the right margin to the number specified to  the  right
     of the colon.

     If you specify a single number followed by a colon, the  debugger
     sets the left margin to the number specified and leaves the right
     margin unchanged.

     If you specify a colon followed by a single number, the  debugger
     sets the right margin to the number specified and leaves the left
     margin unchanged.

MAX_SOURCE_FILES

     Specifies the maximum number of source files  that  the  debugger
     may keep open at any one time.  The default value is 5.

     The value of MAX_SOURCE_FILES does not limit the number of source
     files  that  the debugger can open, it limits the number that may
     be kept open at any one time.  Thus, if the debugger reaches this
     limit, it must close a file in order to open another one.

     Setting MAX_SOURCE_FILES to a very  small  number  can  make  the
     debugger's    use   of   source   files   inefficient.    Setting
     MAX_SOURCE_FILES to a large number runs  the  risk  of  exceeding
     your   "open   file   quota".    It  is  usually  best  to  leave
     MAX_SOURCE_FILES at the default value of 5.

 Format:

     SET MAX_SOURCE_FILES n

Additional information available:

Parameters

Parameters

 n - Specifies the maximum number of source files  that  the  debugger
     may keep open at any one time.

MODE

     Establishes one or more "modes".  The two most important  "modes"
     are:

     (1) Screen mode or noscreen mode, which affects whether you  want
     to  view  debugger  output  line-by-line, or in a screen-oriented
     fashion.

     (2) Keypad mode or  nokeypad  mode,  which  affects  whether  the
     numeric  keypad is used to enter debugger commands, or whether it
     is used to enter numbers.

     In addition, there are a  large  number  of  other  "modes"  that
     affect  the debugger's behavior; these are described in detail in
     the subtopics.

 Format:

     SET MODE mode-keyword [,mode-keyword]

Additional information available:

DYNAMICG_FLOATINTERRUPTKEYPADLINENODYNAMIC
NOG_FLOATNOINTERRUPTNOKEYPADNOLINENOOPERANDS
NOSCREENNOSCROLLNOSEPARATENOSYMBOLICOPERANDS
SCREENSCROLLSEPARATESYMBOLIC

Parameters

Parameters

 mode-keyword

     May be one of the following:

     o  DYNAMIC -- Enables dynamic  module  setting  (see  description
        under DYNAMIC) (default).

     o  NODYNAMIC -- Disables dynamic module setting (see  description
        under DYNAMIC).

     o  G_FLOAT -- Specifies that debugger pick up D exponent constant
        as G_float.

     o  NOG_FLOAT --  Specifies  that  debugger  pick  up  D  exponent
        constant as D_float.  (default).

     o  INTERRUPT -- Enables interrupt mode for debugging multiprocess
        programs (see description under INTERRUPT) (default).

     o  NOINTERRUPT  --  Disables   interrupt   mode   for   debugging
        multiprocess programs (see description under NOINTERRUPT).

     o  KEYPAD -- Turn on keypad mode.

     o  NOKEYPAD -- Turn off keypad mode.  (default).

     o  LINE -- Specifies that the debugger display code locations  in
        terms of line numbers (%LINE), if possible.  (default).

     o  NOLINE -- Specifies that the debugger symbolize code locations
        to "routine + offset" instead of line number.

     o  OPERANDS -- Enables display of  operands  when  examining  VAX
        instructions.

     o  NOOPERANDS -- Disables display of operands when examining  VAX
        instructions.

     o  SCREEN -- Turns on screen mode.

     o  NOSCREEN -- Turns off screen mode.  (default).

     o  SCROLL -- Specifies that output be scrolled through the output
        display as it is generated (default).

     o  NOSCROLL -- Specifies that the output display be updated  only
        once per command, instead of scrolling the output line-by-line
        as it is generated.

     o  SEPARATE -- Runs debugger I/O in a separate VAXstation window.
        (only available on a VAXstation).

     o  NOSEPARATE -- Runs  debugger  I/O  in  the  window  where  the
        debugger initially started.  (only available on a VAXstation).
        (default).

     o  SYMBOLIC -- Specifies that the debugger display the  locations
        denoted  by  address-expressions  symbolically,  if  possible.
        (default).

     o  NOSYMBOLIC  --  Specifies   that   the   debugger   turn   off
        symbolization of addresses.

DYNAMIC

     Enables dynamic module setting.   Dynamic  module  setting  means
     that  whenever  you  are  at  the  DBG prompt, if your PC is in a
     module that is  not  set,  then  the  debugger  sets  the  module
     automatically.   For  example,  if  you step into a function in a
     module that is not set, the debugger sets the module  and  issues
     an informational that it has done so.

     The debugger does not cancel modules for  you,  so  as  you  step
     through your program there may be an increasing number of modules
     set.

     Example:

     DBG> SET MODE DYNAMIC
     DBG> STEP/INTO
     stepped to routine SUBR
     %DEBUG-I-DYNMODSET, setting module SUBR


G_FLOAT

     Specifies  that  all  double-precision   constants   entered   in
     expressions  should  be  interpreted  as  G_Floating.   This only
     affects the interpretation of constants such as "1.1D0" that  are
     entered  in  expressions;  variables  in  your  program are still
     interpreted according to their declared type.

INTERRUPT

     (Applies to a multiprocess debugging configuration  --  that  is,
     when  DBG$PROCESS  has  the value MULTIPROCESS).  Specifies that,
     when program execution is suspended in any process, the  debugger
     interrupts  execution  in any other processes that were executing
     images and prompts for input.  SET MODE INTERRUPT is the default.

KEYPAD

     Activates keypad mode.  See "Help Keypad" for more information.

LINE

     Specifies that the debugger display code locations  in  terms  of
     line numbers (%LINE), if possible.  (default).

     Example:

     DBG> SET MODE LINE; STEP
     stepped to %LINE 20
     DBG> SET MODE NOLINE; STEP
     stepped to SUBR + 36


NODYNAMIC

     Turns off dynamic module setting.  One might occasionally want to
     turn   off  this  feature  if  performance  is  a  problem.   See
     description under "DYNAMIC" for more info.

NOG_FLOAT

     Specifies  that  all  double-precision   constants   entered   in
     expressions  should  be  interpreted  as  D_Floating.   This only
     affects the interpretation of constants such as "1.1D0" that  are
     entered  in  expressions;  variables  in  your  program are still
     interpreted according to their declared type.  (default).

NOINTERRUPT

     (Applies to a multiprocess debugging configuration  --  that  is,
     when  DBG$PROCESS  has  the value MULTIPROCESS).  Specifies that,
     when program execution is suspended in any process, the  debugger
     take the following action:

     1.  If execution was suspended because of an unhandled exception,
         the debugger interrupts execution in any other processes that
         were executing images and prompts for input.

     2.  If  execution  was  suspended  because  of  a  breakpoint  or
         watchpoint  or the completion of a STEP command, the debugger
         lets execution proceed  in  any  other  processes  that  were
         executing  images  and  does  not  display  the prompt unless
         execution is eventually suspended in all these processes.  As
         long as execution continues in any process, the debugger does
         not prompt for input.  In such cases, use CTRL/C to interrupt
         all processes and display the prompt.


NOKEYPAD

     Disables keypad mode.  This may be necessary if you would  rather
     use the keypad to enter numbers, instead of debugger commands.

NOLINE

     Specifies that the debugger symbolize code locations to  "routine
     + offset" instead of line number.

     Example:

     DBG> SET MODE LINE; STEP
     stepped to %LINE 20
     DBG> SET MODE NOLINE; STEP
     stepped to SUBR + 36


NOOPERANDS

     Specifies that the operands of VAX instructions  are  not  to  be
     evaluated when you enter the command EXAMINE/INSTRUCTION.

     Example:

     DBG> SET MODE OPERANDS=BRIEF
     DBG> EXAMINE .0\%PC
     X\X$START+0C:   MOVL    B^04(R4),R7
          B^04(R4)   X\X$START\K (address 00001058) contains 00000016
          R7         R7 contains 00000000
     DBG> SET MODE NOOPERANDS
     DBG> EXAMINE .0\%PC
     X\X$START+0C:   MOVL    B^04(R4),R7

NOSCREEN

     Disables screen mode.  (default)

NOSCROLL

     Specifies that the  output  display  be  updated  only  once  per
     command,  instead  of  scrolling the output line-by-line as it is
     generated.  This reduces the amount of screen updating that takes
     place, which might be an advantage on slow terminals.

NOSEPARATE

     This command applies only to VAXstations.

     Specifies that debugger input and output  go  to  the  window  in
     which the debugger was invoked.  This is the default behavior.

NOSYMBOLIC

     Specifies that the debugger not attempt to  symbolize  addresses.
     The   only   advantage   of  this  is  performance:   suppressing
     symbolization  may  speed  up  command  processing  slightly   by
     reducing  the  amount  of work the debugger has to do.  Note that
     SET MODE NOSYM does NOT cause the debugger to turn all names into
     numbers  -  it just requests that the debugger make no attempt to
     turn numbers into names.

     Example:

     DBG> EVAL/ADDR X
     7FFFFEC0
     DBG> EXAMINE %HEX 7FFFFEC0
     SUBR\X:   3
     DBG> SET MODE NOSYM
     DBG> EXAMINE %HEX 7FFFFEC0
     7FFFFEC0: 3

OPERANDS

     Specifies that, when you enter an EXAMINE command to  examine  an
     instruction, the display include the address and contents of each
     instruction operand.  The entity being examined must be  of  type
     "instruction".

     You  can  control  the  amount  of  information   displayed,   by
     specifying   either   OPERANDS=BRIEF   or  OPERANDS=FULL.   These
     qualifiers can be  used  on  either  the  SET  MODE  OPERANDS  or
     EXAMINE/OPERANDS commands.  The default is OPERANDS=BRIEF.

     Example:

     DBG> SET MODE OPERANDS=BRIEF
     DBG> EXAMINE .0\%PC
     X\X$START+0C:   MOVL    B^04(R4),R7
          B^04(R4)   X\X$START\K (address 00001058) contains 00000016
          R7         R7 contains 00000000
     DBG> SET MODE OPERANDS=FULL
     DBG> EXAMINE .0\%PC
     X\X$START+0C:   MOVL    B^04(R4),R7
          B^04(R4)   R4 contains X\X$START\M (address 00001054),
                     B^04(00001054) evaluates to X\X$START\K
                     (address 00001058), which contains 00000016
          R7         R7 contains 00000000

SCREEN

     Enables screen mode.  See Screen_features for more information.

SCROLL

     Specifies that, in screen mode, output be  scrolled  through  the
     output display as it is generated.  (default).

SEPARATE

     This command applies only to VAXstations.

     Creates a separate debugger window for debugger input and output.
     The  effect  is as if you had defined DBG$INPUT and DBG$OUTPUT to
     point to the newly created window.  For example:

     DBG> SET MODE SEPARATE
     (... new window ...)
     DBG>


SYMBOLIC

     Specifies that the debugger attempt to symbolize  addresses  that
     appear  in  its  output.   This  is the default behavior (since a
     symbolic representation is usually preferred).  For example:

     DBG> EVAL/ADDR X
     7FFFFEC0
     DBG> EXAMINE %HEX 7FFFFEC0
     SUBR\X:   3
     DBG> SET MODE NOSYM
     DBG> EXAMINE %HEX 7FFFFEC0
     7FFFFEC0: 3


MODULE

     Sets the specified module(s).  "Modules"  are  a  subdivision  of
     your  program.  The exact definition depends on the language, for
     example, in FORTRAN every subroutine is a module, whereas in  ADA
     every  compilation unit is a module.  Setting a module means that
     the symbols in that module become available to the debugger.

 Format:

     SET MODULE [/qualifier] [module-name [,module-name] ...  ]

 Example:

     DBG> EX X  ! X is declared in SUBR
     %DEBUG-W-NOSYMBOL, symbol 'X' is not in the symbol table
     DBG> SET MODU SUBR
     DBG> EX X  ! Now you can examine X
     SUBR\X:    5

Additional information available:

ParametersQualifiers

Parameters

 module-name

     Specifies the name of the module to be set.

Qualifiers

Additional information available:

/ALL/CALLS/NORELATED/RELATED

/ALL

     Specifies that all  of  the  modules  in  your  program  be  set.
     (However,  your  "shareable  image"  modules  is not set by a SET
     MODULE/ALL - you have to explicitly set each one.)

/CALLS

     Sets all the modules that currently have  routines  on  the  call
     stack.   These  are  the modules that are listed when you enter a
     SHOW CALLS command.  You would use the /CALLS  qualifier  to  set
     modules that might not have been dynamically set by the debugger.

/NORELATED

     (Applies to ADA only).

     This qualifier tells the debugger  to  set  only  the  module  or
     modules  specified in this command, but not the "with"ed packages
     and subunit parents that would normally be  set  along  with  the
     specified  module.   This  can  degrade the debugger's ability to
     look up symbols to some  extent,  for  example,  names  that  are
     visible  in ADA because of a "with" clause are not visible in the
     debugging session if the "with"ed package is not set.

/RELATED

     (Applies to ADA only).

     This qualifier is the default.  "Related  module  setting"  means
     that  when  you set an ADA module, all "with"ed package specs are
     also set for you, and if the module is a subunit, its  parent  is
     set  for you.  This enables the debugger to achieve the same name
     visibility rules as the ADA language.

OUTPUT

     Specifies whether or not to send  output  to  the  terminal,  and
     whether or not to send output to a log file.

 Format:

     SET OUTPUT option [,option...]

 Example:

     DBG> SET OUTPUT LOG        ! Enable logging
     DBG> SET OUTPUT NOTERM     ! Turn off terminal output
     ! After the above two commands, output is only going
     ! to the log file, not to the terminal
     DBG> SET OUT NOTERM,NOLOG
     %DEBUG-I-OUTPUTLOST, output being lost
     ! After the above, output is going to neither the terminal
     ! or the log file, so you get an informational that output
     ! is being lost. This is obviously a useless output mode.
     DBG> SET OUT TERM,NOLOG    ! Back to the default

Additional information available:

LOGNOLOGNOSCREEN_LOGNOTERMINALNOVERIFY
SCREEN_LOGTERMINALVERIFY

Parameters

Parameters

 option

     May be one of the following output parameters:

     LOG                NOLOG           NOTERMINAL      NOVERIFY
     TERMINAL VERIFY            SCREEN_LOG      NOSCREEN_LOG

LOG

     Specifies that both debugger output and user input be recorded in
     a  log  file.  If you specify the name of the log file by the SET
     LOG command, the debugger writes to  that  file;  otherwise,  the
     debugger  writes  to  a  file with the default file specification
     DEBUG.LOG.

NOLOG

     Specifies that debugger output and user input not be recorded  in
     a log file.  This is the default.

NOSCREEN_LOG

     Specifies that screen images should not  be  logged  to  the  log
     file,  even  when  logging  is  otherwise  enabled.   This is the
     default.

NOTERMINAL

     Specifies that debugger output, except for  diagnostic  messages,
     not be displayed at the terminal.

NOVERIFY

     Specifies that the debugger's  echoing  of  commands  in  command
     procedures  and  in  DO  Command  Sequences  not  be  included as
     debugger output.  This is the default.

SCREEN_LOG

     Specifies that screen images should be written to  the  log  file
     whenever  screen  mode  is  set and logging is enabled by the LOG
     option.  This parameter can cause log file to get very large, and
     should be used with caution.

TERMINAL

     Specifies that debugger output  be  displayed  at  the  terminal.
     This is the default.

VERIFY

     Specifies that the debugger's  echoing  of  commands  in  command
     procedures  and  in  DO Command sequences be included as debugger
     output.

PROCESS

     Note:   This  command  applies  to   a   multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     The SET PROCESS command establishes the visible process, modifies
     characteristics  of  one  or  more processes, or enables/disables
     dynamic process setting.

 Format:

       SET PROCESS [/qualifier] [process-spec[, . . . ]]

     By default, commands are executed in the context of  the  visible
     process.  The visible process is the process that is your current
     debugging  context.   Symbol   lookups   and   the   setting   of
     breakpoints, tracepoints, and watchpoints are done in the context
     of the visible process.

     The DO command enables you to execute commands in the context  of
     specific  processes  or  of  all  processes.   The  DO command is
     equivalent to entering a SET  PROCESS/VISIBLE  command  for  each
     process  specified  (or  for  all  processes,  if  no  process is
     specified with the DO command) and then  entering  the  specified
     commands.

     Dynamic process setting is enabled by default and  is  controlled
     with the /[NO]DYNAMIC qualifier.  When dynamic process setting is
     enabled (SET PROCESS/DYNAMIC),  whenever  the  debugger  suspends
     program  execution  and displays its prompt, the process in which
     execution is suspended becomes the visible process automatically.

Additional information available:

ExamplesParametersQualifiers

Examples

     1   DBG_1> SET PROCESS/HOLD/ALL
         DBG_1> SHOW PROCESS/ALL
          Number  Name          Hold  State            Current PC
         *    1 TEST_X          YES   step             PROG\%LINE 50
              2 TEST_Y          YES   break            PROG\%LINE 71

     The command SET PROCESS/HOLD/ALL places all  processes  on  hold.
     This is confirmed in the SHOW PROCESS/ALL display.

     2   DBG_1> SET PROCESS/NOHOLD %VISIBLE_PROCESS
         DBG_1> SHOW PROCESS/ALL
          Number  Name          Hold  State            Current PC
         *    1 TEST_X                step             PROG\%LINE 50
              2 TEST_Y          YES   break            PROG\%LINE 71

     The command  SET  PROCESS/NOHOLD  %VISIBLE_PROCESS  releases  the
     visible  process  from  hold.   This  is  confirmed  in  the SHOW
     PROCESS/ALL display.

     3   DBG_1> SET PROCESS TEST_Y
         DBG_2> SHOW PROCESS
          Number   Name            Hold  State         Current PC
         *    2 TEST_Y             YES   break         PROG\%LINE 71

     The command SET PROCESS TEST_Y makes process TEST_Y  the  visible
     process.  The command SHOW PROCESS displays information about the
     visible process, by default.

     4   DBG_1> SET PROCESS/HOLD/ALL
         DBG_1> DO (EXAMINE X; STEP)
         For %PROCESS_NUMBER 1
           MAIN_PROG\X:    78
         For %PROCESS_NUMBER 2
           TEST\X:    29
         stepped to MAIN_PROG\%LINE 26 in %PROCESS_NUMBER 1
         26:     K = K + 1
         DBG_1>

     The command SET PROCESS/HOLD/ALL puts all processes on HOLD.  The
     DO  command  broadcasts  the  commands  EXAMINE X and STEP to all
     processes (processes 1 and 2 in this case).  The STEP is executed
     in  the  visible  process, process 1, because a HOLD condition in
     the visible process is ignored.  Because process 2  is  on  HOLD,
     execution is inhibited in that process.

Parameters

 process-spec

     Specifies a process.  Use any of the following forms:

     [%PROCESS_NAME] process-name    The VMS process name, if that
                                     name contains no spaces or
                                     lowercase characters[1].

     [%PROCESS_NAME] "process-name"  The VMS process name, if that
                                     name contains spaces or lowercase
                                     characters. You can also use
                                     apostrophes (') instead of
                                     quotation marks (").

     %PROCESS_PID process_id         The VMS process identification
                                     number (PID, a hexadecimal number).

     %PROCESS_NUMBER process-number  The number assigned to a process
     (or %PROC process-number)       when it comes under debugger control.
                                     Process numbers appear in a
                                     SHOW PROCESS display.

     process-group-name              A symbol defined with the
                                     DEFINE/PROCESS_GROUP command to
                                     represent a group of processes.

     %NEXT_PROCESS                   The next process in the debugger's
                                     circular process list after the
                                     visible process.

     %PREVIOUS_PROCESS               The previous process in the
                                     debugger's circular process list
                                     before the visible process.

     %VISIBLE_PROCESS                The process whose stack, register
                                     set, and images are the current
                                     context for looking up symbols,
                                     register values, routine calls,
                                     breakpoints, and so on.
     _______________________________________________________
     [1]The process name can include the asterisk wildcard
     character (*)

     You can also use the asterisk wildcard character (*)  to  specify
     all processes.

Qualifiers

Additional information available:

/ALL/DYNAMIC/HOLD/NODYNAMIC/NOHOLD/VISIBLE

/ALL

     Applies the SET PROCESS command to all processes.  Do not specify
     a  process  with this qualifier.  Do not specify /[NO]DYNAMIC, or
     /VISIBLE with /ALL.

/DYNAMIC

     Enables dynamic process setting (default).  When dynamic  process
     setting  is enabled, whenever the debugger suspends execution and
     displays its prompt, the process in which execution is  suspended
     becomes  the  visible  process  automatically.   Do not specify a
     process with  /DYNAMIC.   Do  not  specify  /ALL,  /[NO]HOLD,  or
     /VISIBLE with /DYNAMIC.

/HOLD

     Puts a specified process on hold.  This prevents images  in  that
     process  from  executing  when  you  enter  a  GO,  STEP, or CALL
     command, unless the process  is  the  visible  process.   A  HOLD
     condition  in  the  visible  process  is  ignored.   The behavior
     described also applies when you use the DO command to broadcast a
     GO, STEP, or CALL command to specific processes.

     If no process is specified, /HOLD places the visible  process  on
     HOLD.  See the descriptions of the GO, STEP, CALL, EXIT, and QUIT
     commands for the effects of these commands on held processes.  Do
     not specify /[NO]DYNAMIC with /HOLD.

/NODYNAMIC

     Disables dynamic process setting.  When dynamic  process  setting
     is  disabled,  the  visible  process  remains unchanged until you
     specify another process with the SET PROCESS/VISIBLE command.  Do
     not  specify  a  process  with  /NODYNAMIC.  Do not specify /ALL,
     /[NO]HOLD, or /VISIBLE with /NODYNAMIC.

/NOHOLD

     Unholds a specified process.  This permits images in that process
     to execute when you enter a GO, STEP, or CALL command, regardless
     of which process is the visible process.  The behavior  described
     also applies when you use the DO command to broadcast a GO, STEP,
     or CALL command to specific processes.

     If no process is specified, /NOHOLD unholds the visible  process.
     See  the  descriptions  of  the  GO,  STEP,  CALL, EXIT, and QUIT
     commands for the effects of these commands on  unheld  processes.
     Do not specify /[NO]DYNAMIC with /NOHOLD.

/VISIBLE

     Makes the specified process the visible process.   This  switches
     your  debugging  context to the specified process, so that symbol
     lookups  and  the  setting  of  breakpoints,   tracepoints,   and
     watchpoints  are  done  in the context of that process.  You must
     specify one, and only  one,  process.   If  you  do  not  specify
     /VISIBLE,  it  is  assumed  by  default.  Do not specify /ALL, or
     /[NO]DYNAMIC with /VISIBLE.

PROMPT

     Changes the debugger prompt string from DBG> to a string of  your
     choice.   In  addition,  the  /[NO]SUFFIX and /[NO]POP qualifiers
     control convenience features for debugging multiprocess  programs
     or using the debugger at a VAXstation, respectively.

 Format:

       SET PROMPT [/qualifier] [prompt-parameter]

Additional information available:

ExamplesParametersQualifiers

Examples

     1   DBG> SET PROMPT "$ "
         $ SET PROMPT "d b g : "
         d b g : SET PROMPT "DBG> "
         DBG>

     The successive SET PROMPT commands  change  the  debugger  prompt
     from "DBG>" to "$", to "d b g :", then back to "DBG>".

     2   DBG_1> SET PROMPT/NOSUFFIX "dbg> "
         dbg> SET PROMPT/SUFFIX
         DBG_1> SET PROMPT/SUFFIX=PROCESS_NUMBER "xyz_"
         xyz_1> SET PROMPT/SUFFIX=PROCESS_NAME
         SMITH> SET PROMPT/SUFFIX=PROCESS_NAME "John "
         John SMITH> SET PROMPT/SUFFIX=PROCESS_PID
         20800E4D>

     The successive  SET  PROMPT  commands  show  the  effect  of  the
     /[NO]SUFFIX   qualifier   and  the  prompt-parameter  string  for
     multiprocess programs.

Parameters

 prompt-parameter

     Specifies the string which is to become the new prompt.   If  the
     string  contains spaces, semicolons, or lowercase characters, you
     must enclose it in quotation marks (") or  apostrophes  (').   If
     you  do  not  specify a string, the current prompt string remains
     unchanged.  By default, the prompt string  is  DBG>  for  a  non-
     multiprocess  debugging  configuration  (when  the  logical  name
     DBG$PROCESS is undefined or has the value DEFAULT).

     By default, for  a  multiprocess  debugging  configuration  (when
     DBG$PROCESS  has  the  value  MULTIPROCESS),  the  prompt  string
     consists  of   a   process-independent   prefix   (specified   by
     prompt-parameter) and a process-specific suffix (specified by the
     /[NO]SUFFIX qualifier).  The suffix changes automatically as  the
     visible process changes.

Qualifiers

Additional information available:

/SUFFIX/NOPOP/NOSUFFIX/POP

/SUFFIX[=process-identifier-type]

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     /SUFFIX enables "dynamic  prompt  setting".   As  a  result,  the
     prompt   string   includes   a   process-specific   suffix   that
     automatically  identifies  the  visible  process.   This  is  the
     default behavior.

     When you invoke the debugger with the  RUN  command  to  debug  a
     multiprocess  program,  the  prompt  string is DBG_1> by default.
     This indicates that dynamic prompt setting is  enabled  and  that
     the  visible process is process 1 (the first process connected to
     the   debugger).    You   can   control   the    process-specific
     prompt-string   suffix   by   specifying  one  of  the  following
     process-identifier-type keywords with the /SUFFIX qualifier:

     PROCESS_NAME     The prompt-string suffix is the VMS process name.

     PROCESS_NUMBER   The prompt-string suffix is the process number
                      (as shown in a SHOW PROCESS display). This is the
                      default.

     PROCESS_PID      The prompt-string suffix is the VMS process
                      identification number (PID).

     The following table illustrates  the  possible  kinds  of  prompt
     strings  for  a  multiprocess debugging configuration.  Note that
     the entire prompt string depends on the prompt-parameter  command
     parameter (which controls the process-independent prefix), and on
     the  values  of  /[NO]SUFFIX  and  the  process-  identifier-type
     keyword (which control the process-specific suffix):

     Prompt-
     parameter      Qualifier and Keyword    Resulting
     (prefix):      (suffix):                Prompt_String:

     none           none                     unchanged
     none           /NOSUFFIX                DBG>
     none           /SUFFIX                  DBG_process-number> [1]
     none           /SUFFIX=PROCESS_NAME     process-name>
     none           /SUFFIX=PROCESS_NUMBER   process-number>
     none           /SUFFIX=PROCESS_PID      pid>
     XYZ_           /NOSUFFIX                XYZ_>
     XYZ_           /SUFFIX                  XYZ_process-number>
     XYZ_           /SUFFIX=PROCESS_NAME     XYZ_process-name>
     XYZ_           /SUFFIX=PROCESS_NUMBER   XYZ_process-number>
     XYZ_           /SUFFIX=PROCESS_PID      XYZ_pid>
     _______________________________________________________
     [1]The default prompt for a multiprocess debugging  configuration
     is  DBG_process-number>,  which  is  equivalent  to  entering the
     following command:

        DBG> SET PROMPT/SUFFIX=PROCESS_NUMBER "DBG_"

/NOPOP

     Note:  This qualifier applies only to VAXstations.

     Causes the debugger window to not pop over other windows, nor  to
     attach  to  the keyboard automatically, when the debugger prompts
     for input.  This is the default behavior.  If you do not  specify
     /NOPOP, the prompt behavior is set to /NOPOP.

/NOSUFFIX

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     /NOSUFFIX disables dynamic prompt  setting.   As  a  result,  the
     prompt string does not include a process-specific suffix and does
     not change when another process becomes the visible process.

/POP

     Note:  This qualifier applies only to VAXstations.

     Causes the debugger window to pop over other windows  and  become
     attached to the keyboard when the debugger prompts for input.  If
     you do not specify /POP, the prompt behavior is set to /NOPOP.

RADIX

     SET RADIX is the new syntax (in place of SET MODE) for specifying
     the  radix  (decimal,  hex, octal, binary) of numbers.  Input and
     output radices can be specified separately.

 Format:

     SET RADIX[/qualifier...] radix

 Example:

     DBG> SET RADIX DECIMAL
     DBG> EVAL 5 + 5
     10
     DBG> SET RADIX HEX
     DBG> EVAL 5 + 5
     0A


Additional information available:

BINARYDECIMALDEFAULTHEXADECIMALOCTAL

ParametersQualifiers

Parameters

 radix

     May be one of the following:

     o  BINARY -- Sets the radix to binary.

     o  DECIMAL -- Sets the radix to decimal.

     o  DEFAULT -- Sets the radix back to the language default.

     o  HEXADECIMAL -- Sets the radix to hexadecimal.

     o  OCTAL -- Sets the radix to octal.

BINARY

     Sets the radix to binary.

DECIMAL

     Sets the radix to decimal.

DEFAULT

     Sets the radix back to the default for the current language.

HEXADECIMAL

     Sets the radix to hexadecimal.

OCTAL

     Sets the radix to octal.

Qualifiers

Additional information available:

/INPUT/OUTPUT/OVERRIDE

/INPUT

     Set only the input radix.

     Example:

     DBG> SET RADIX/INPUT DECIMAL; SET RADIX/OUTPUT HEX
     DBG> EVAL 31
     1F

/OUTPUT

     Set only the output radix.

     DBG> SET RADIX/INPUT DECIMAL; SET RADIX/OUTPUT HEX
     DBG> EVAL 31
     1F

/OVERRIDE

     Set the "override" radix.

     "Override" radix is like output radix except that it also  causes
     all  data  to  be  displayed  as  integer  (that  is, the type is
     overriden).

SCOPE

     SET SCOPE is used to control how the debugger looks up names.  If
     you find yourself repeatedly using the same pathname on examines,
     then SET SCOPE provides  a  way  of  abbreviating  those  examine
     commands.  Also see the help on "Pathnames" and "Scopes".

     Example:  instead of saying:

     DBG> EXAM ROUT1\ROUT2\X
     DBG> EXAM ROUT1\ROUT2\Y

     you can say:

     DBG> SET SCOPE ROUT1\ROUT2
     DBG> EXAM X
     DBG> EXAM Y

 Format:

     SET SCOPE location [,location,...]

Additional information available:

ParametersQualifierDefaultExamplesNotes

Parameters

 location

     Can either be a "pathname", a  "numeric  scope"  or  the  "global
     scope".  These are further explained below:

     o  Pathname -- One or more program location labels, separated  by
        the   backslash  character  (\),  that  identifies  a  program
        location.  The pathname elements may be module,  routine,  and
        block  names,  as  well as line numbers and numeric labels.  A
        common     pathname     format     is      the      following:
        MODULE\ROUTINE\BLOCK.    A   pathname   may   be  complete  or
        incomplete,  so  long  as  it  identifies  a  unique   program
        location.  Also see the help on "Pathnames".

     o  0,1,2,...-- The  set  of  decimal  integers  represent  called
        routines,  where  0  represents  the  currently active program
        unit, 1 represents  the  routine  that  called  the  currently
        active program unit, and so on.

     o  \ -- Represents the  global  scope.   That  is,  "EXAMINE  \X"
        displays the global symbol X, if one exists.

Qualifier

Additional information available:

/MODULE

/MODULE

     This qualifier is only needed in the case where you have a module
     and  a  routine  with  the  same name.  Normally, you want to set
     scope to the routine, so that is the default.  If you want to set
     scope to the module, then SET SCOPE/MODULE is used.

Default

     The default scope is the search list 0,1,2,3,...,N,  where  N  is
     the  current  number  of  levels in your call stack.  The default
     scope therefore changes as your program executes.

     The meaning of this default scope is that a symbol lookup such as
     "EXAMINE  X"  first  looks for X in the routine that is currently
     executing.  If no X is visible there, then the debugger looks  in
     the  caller of that routine.  Next it looks in the caller of that
     routine, and so on up the stack.

Examples

     DBG> SET SCOPE ROUTINE_NAME\NESTED_ROUTINE
     ! Now if you EXAMINE something the debugger first looks
     ! for it in NESTED_ROUTINE
     DBG> CANCEL SCOPE
     ! This sets you back to the default scope of 0,1,2,3,...,N,
     ! where N is the number of active call frames.
     ! This means symbol lookups are done relative to your current PC.
     ! This search list tells the debugger to perform symbol
     ! lookups first relative to the current routine, then relative to
     ! the caller of the current routine, and so on up the stack.
     DBG> SET SCOPE 1
     ! Now symbol lookups are done one level up the call stack.
     ! For example, now if you do EXAM R5, you are seeing the value
     ! of register 5 in the caller of the current routine.


Notes

     SET SCOPE may have the side effect  of  setting  a  module.   For
     example, if FOO is the name of one of your modules, SET SCOPE FOO
     sets the module FOO if it is not already set.  However,  if  what
     you  want  to  do  is to make the symbols in FOO available to the
     debugger, you should use SET MODULE, not SET SCOPE.  The scope is
     best left at its default value of "0,1,2,...", so that it changes
     dynamically as your program executes.

SEARCH

     Establishes current SEARCH parameters to be used by the  debugger
     whenever  a SEARCH command qualifier is not specified in a SEARCH
     command.

     SEARCH parameters determine whether the debugger searches for all
     occurrences  (ALL)  of  the  string  or  only the next occurrence
     (NEXT) of the string,  and  whether  the  debugger  displays  any
     occurrence  of  the  string (STRING) or only those occurrences in
     which the string is not bounded on either  side  by  a  character
     that  cannot  be  part  of  an identifier in the current language
     (IDENTIFIER).

     You can specify more than one SEARCH parameter in  a  single  SET
     SEARCH command by separating each parameter with a comma.

 Format:

     SET SEARCH option [,option...]

Additional information available:

ALLIDENTIFIERNEXTSTRING

ParametersExamples

Parameters

 option

     Specifies the current SEARCH parameters.

     o  ALL -- specifies that the debugger search for all  occurrences
        of  the  string  in the specified range and display every line
        containing an occurrence of the string.

     o  NEXT -- specifies that  the  debugger  search  for  the  first
        occurrence  of  the  string in the specified range and display
        the line containing this occurrence.  This is the default.

     o  IDENTIFIER --  specifies  that  the  debugger  search  for  an
        occurrence  of  the  string in the specified range but display
        the string only  if  it  is  bounded  on  either  side  by  af
        character  that cannot be part of an identifier in the current
        language.

     o  STRING -- specifies that the debugger search for  and  display
        the  string  as  specified,  and  not  interpret  the  context
        surrounding an occurrence of the string, as  it  does  in  the
        case of IDENTIFIER.  This is the default.

ALL

     Specifies that the debugger search for  all  occurrences  of  the
     string  in  the specified range and display every line containing
     an occurrence of the string.

IDENTIFIER

     Specifies that the debugger  search  for  an  occurrence  of  the
     string  in  the specified range but display the string only if it
     is bounded on either side by af character that cannot be part  of
     an identifier in the current language.

NEXT

     Specifies that the debugger search for the  first  occurrence  of
     the string in the specified range and display the line containing
     this occurrence.  This is the default.

STRING

     Specifies that the debugger search for and display the string  as
     specified,   and   not   interpret  the  context  surrounding  an
     occurrence of the string, as it does in the case  of  IDENTIFIER.
     This is the default.

Examples

     DBG> SET SEARCH ALL,IDENT
     DBG> SEARCH FOO X  ! Find all occurences of X in module FOO
     module FOO
     21:        X = 3
     33:        Y = X+1

SOURCE

     Directs the  debugger  in  the  location  of  source  file(s)  by
     overriding  selected  field(s)  in the full file specification of
     the original (at compile time) source file(s).

     Typically you would specify a directory,  or  a  search  list  of
     directories.  For example:

     DBG> SET SOURCE [],SRC$

     The above says to first look for the source file in  the  current
     working  directory,  then  look  for it in the directory with the
     logical name SRC$.  If several versions of the file exist in  the
     specified  directory  then  the  debugger  attempts to choose the
     right one by matching the date and time  of  the  file  with  the
     information it has in the symbol table.

 Format:

     SET SOURCE[/MODULE=modname][/EDIT] dirname[,dirname...]

Additional information available:

ParametersQualifiers

Parameters

 dirname

     Specifies one or more  file-specification  fields  to  insert  in
     place   of   the   corresponding   field(s)   in  the  full  file
     specification of the original (at compile time) source file(s).

     Dirname may consist of one, several,  or  all  of  the  following
     fields  in  the  full file specification, which has the following
     format:

       node::device:[directory]file-name.file-type;version-number

     Typically, the reason for using SET SOURCE is that the  file  has
     been copied to another directory, and in this case you would just
     specify the [directory] portion of the full file spec.

Qualifiers

Additional information available:

/MODULE/EDIT

/MODULE=modname

     Specifies that the indicated directory search list is to be  used
     in locating source files only for the specified module.

/EDIT

     Specifies that the indicated directory search list is to be  used
     only for the EDIT command.

STEP

     The SET  STEP  command  establishes  default  qualifiers  (/LINE,
     /INTO, and so on) for subsequent STEP commands.

 Format:

       SET STEP step-default[,...]

     The parameters that you specify in the SET STEP command have  the
     same names as the STEP command qualifiers.

     You can override the current STEP defaults for the duration of  a
     single STEP command by specifying other qualifiers.  Use the SHOW
     STEP command to identify the current STEP defaults.

     If you invoke screen mode with the keypad-key  sequence  PF1-PF3,
     the  command  SET  STEP  NOSOURCE  is  entered in addition to the
     command SET MODE SCREEN.  Therefore, any display of  source  code
     in  output  and DO displays that would result from a STEP command
     or from a breakpoint, tracepoint, or watchpoint  being  triggered
     is suppressed, to eliminate redundancy with the source display.

Additional information available:

BRANCHCALLEXCEPTIONINSTRUCTIONINTO
JSBLINENOJSBNOSHARENOSILENTNOSOURCENOSYSTEM
OVERRETURNSHARESILENTSOURCESYSTEM

ParametersExamples

Parameters

 Step-default

     The following parameters affect where the STEP  command  suspends
     execution after a step:

       SET STEP BRANCH
       SET STEP CALL
       SET STEP EXCEPTION
       SET STEP INSTRUCTION
       SET STEP INSTRUCTION=(opcode-list)
       SET STEP LINE
       SET STEP RETURN

     The following parameters affect what output is seen when  a  STEP
     command is executed:

       SET STEP [NO]SILENT
       SET STEP [NO]SOURCE

     The following parameters affect what happens at a routine call:

       SET STEP INTO
       SET STEP [NO]JSB
       SET STEP OVER
       SET STEP [NO]SHARE
       SET STEP [NO]SYSTEM

BRANCH

     Subsequent STEP commands are treated as STEP/BRANCH (step to  the
     next branch instruction).

CALL

     Subsequent STEP commands are treated as STEP/CALL  (step  to  the
     next call instruction).

EXCEPTION

     Subsequent STEP commands are treated as STEP/EXCEPTION  (step  to
     the next exception condition).

INSTRUCTION

     Subsequent STEP commands are treated as STEP/INSTRUCTION (step to
     the  next  instruction).   You  can  also  specify  one  or  more
     instructions (INSTRUCTION=(opcode-  list)).   The  debugger  then
     steps to the next instruction that is in the specified list.

INTO

     Subsequent STEP commands are  treated  as  STEP/INTO  (step  into
     called   routines)   rather  than  STEP/OVER  (step  over  called
     routines).  When INTO is in effect, you can qualify the types  of
     routines  to  step  into  by means of the [NO]JSB, [NO]SHARE, and
     [NO]SYSTEM   parameters,   or   by   using   the    STEP/[NO]JSB,
     STEP/[NO]SHARE,     and     STEP/[NO]SYSTEM     command/qualifier
     combinations (the latter three take effect only for the immediate
     STEP command).

JSB

     If INTO is in effect, subsequent STEP  commands  are  treated  as
     STEP/INTO/JSB  (step into routines called by a JSB instruction as
     well as those called by a CALL instruction).  This is the default
     for all languages except DIBOL.

LINE

     Subsequent STEP commands are treated as STEP/LINE  (step  to  the
     next line).  This is the default for all languages.

NOJSB

     If INTO is in effect, subsequent STEP  commands  are  treated  as
     STEP/INTO/NOJSB  (step over routines called by a JSB instruction,
     but step into routines called by a CALL  instruction).   This  is
     the default for DIBOL.

NOSHARE

     If INTO is in effect, subsequent STEP  commands  are  treated  as
     STEP/INTO/NOSHARE (step over called routines in shareable images,
     but step into other routines).

NOSILENT

     Subsequent STEP commands are treated as  STEP/NOSILENT  (after  a
     step,  display  the "stepped to .  .  .  " message).  This is the
     default.

NOSOURCE

     Subsequent STEP commands are treated as  STEP/NOSOURCE  (after  a
     step,  do  not display the source line for the current location).
     Also, subsequent SET BREAK, SET TRACE, and SET WATCH commands are
     treated  as  SET  BREAK/NOSOURCE,  SET  TRACE/NOSOURCE,  and  SET
     WATCH/NOSOURCE, respectively (at  a  breakpoint,  tracepoint,  or
     watchpoint,  do  not  display  the  source  line  for the current
     location).

NOSYSTEM

     If INTO is in effect, subsequent STEP  commands  are  treated  as
     STEP/INTO/NOSYSTEM  (step  over  called routines in system space,
     but step into other routines).

OVER

     Subsequent STEP commands are treated as STEP/OVER (step over  all
     called   routines)   rather  than  STEP/INTO  (step  into  called
     routines).  SET STEP OVER is the default.

RETURN

     Subsequent STEP commands are treated as STEP/RETURN (step to  the
     RET  instruction  of  the  routine that is currently executing --
     that is, up to the point just prior to transferring control  back
     to the calling routine).

SHARE

     If INTO is in effect, subsequent STEP  commands  are  treated  as
     STEP/INTO/SHARE (step into called routines in shareable images as
     well as into other called routines).  This is the default.

SILENT

     Subsequent STEP commands are  treated  as  STEP/SILENT  (after  a
     step,  do  not  display the "stepped to .  .  .  " message or the
     source line for the current location).

SOURCE

     Subsequent STEP commands are  treated  as  STEP/SOURCE  (after  a
     step,  display  the source line for the current location).  Also,
     subsequent SET BREAK, SET  TRACE,  and  SET  WATCH  commands  are
     treated   as   SET   BREAK/SOURCE,   SET  TRACE/SOURCE,  and  SET
     WATCH/SOURCE,  respectively  (at  a  breakpoint,  tracepoint,  or
     watchpoint,  display  the  source line for the current location).
     This is the default.

SYSTEM

     If INTO is in effect, subsequent STEP  commands  are  treated  as
     STEP/INTO/SYSTEM  (step  into called routines in system space (P1
     space) as well as into  other  called  routines).   This  is  the
     default.

Examples

     1   DBG> SET STEP INSTRUCTION,NOSOURCE

     This command causes the debugger to execute the  program  to  the
     next  instruction  when  a  STEP  command  is entered, and to not
     display lines of source code with each STEP command.

     2   DBG> SET STEP LINE,INTO,NOSYSTEM,NOSHARE

     This command causes the debugger to execute the  program  to  the
     next line when a STEP command is entered, and to step into called
     routines in user space only.  The debugger steps over routines in
     system space and in shareable images.

TASK

     (Only valid for ADA multitasking programs).

     Modifies certain characteristics of tasks in your program.  Using
     this  command,  you  can  change a task's priority, put a task on
     hold, switch to a different active task, make a task  visible  to
     the debugger, cause a task to abort, or change the time all tasks
     are given to execute.

     For those commands which operate on individual tasks,  the  tasks
     to modify can be specified by taskname parameters and/or by "task
     selection qualifiers".  If neither of these means are  used,  the
     task  defaults  to  the  "visible task", %VISIBLE_TASK.  (See SET
     TASK/VISIBLE and SET TASK/ACTIVE).

 Format:
      SET TASK [/qualifier...]  [taskname [,taskname...] ]

Additional information available:

ParametersSelection QualifiersAttribute QualifiersExamples

Parameters

 taskname

     A taskname parameter may be a pathname which  designates  a  task
     declared in your program, for example, MY_MAIN\PROG\MONITOR.

     A taskname parameter may also be a task ID or pseudo taskname.  A
     task  ID is a unique number that is associated with a task at the
     time the task is created.  The debugger syntax for  specifying  a
     task  ID  is  "%TASK n", where "n" is a positive decimal integer.
     You can see what task IDs  are  assigned  to  currently  existing
     tasks by typing SHOW TASK/ALL.

     A pseudo taskname is one of the  built-in  symbols  %ACTIVE_TASK,
     %CALLER_TASK, %NEXT_TASK, or %VISIBLE_TASK.  Type "HELP Lexicals"
     for more information on these.

     The default taskname parameter is %VISIBLE_TASK.

Selection Qualifiers

     There is only one task selection qualifier, the  /ALL  qualifier.
     It cannot be used in combination with taskname parameters.

Additional information available:

/ALL

/ALL

     Selects all tasks that currently exist  in  your  program  to  be
     modified  as  specified  by the other qualifiers given.  Taskname
     parameters are not permitted.

Attribute Qualifiers

     These  qualifiers  determine  what  task  attributes  are  to  be
     modified.   If no task attribute qualifer is given, the qualifier
     /VISIBLE is assumed by default.

Additional information available:

/ABORT/ACTIVE/HOLD/PRIORITY/RESTORE/TIME_SLICE
/VISIBLE

/ABORT

     Forces an ABORT of the selected tasks.

/ACTIVE

     Causes the task given by the taskname  parameter  to  become  the
     "active  task"  (see  Lexicals %ACTIVE_TASK).  The active task is
     that task which executes instructions when the debugger  is  left
     (as when you type GO, STEP, or CALL).  It is marked with a '*' in
     the SHOW TASK display.

     The SET TASK/ACTIVE command allows you to force a  "task  switch"
     to the named task without leaving the debugger.

     In addition to making the named task become the active task, this
     command  also  makes  it  become  the  visible task, which is the
     default task assumed by other debugging commands.

     This qualifier requires exactly one taskname  parameter  and  the
     named task must be in either the READY or the RUN state.

/HOLD

 /HOLD
 /NOHOLD

     Controls whether or not the selected task(s) is allowed  to  make
     the  transition  into  the  RUN  state (that is become the active
     task).

     Placing a task on HOLD restricts the state transitions  the  task
     can  make once the program is subsequently allowed to execute.  A
     task that is already in the RUNNING state (the active  task)  and
     is  then  placed  on  HOLD  can continue to execute as long as it
     remains in the RUNNING state.  If the  task  leaves  the  RUNNING
     state while on HOLD, or is placed on HOLD while in another state,
     it cannot enter the RUNNING state until the HOLD  is  removed  or
     until it is made active with the SET TASK/ACTIVE command.

/PRIORITY = n

     Causes the selected task(s) to have its priority  changed  to  n,
     where  n  is  a decimal integer from 0 to 15 inclusive.  (VAX Ada
     specifies subtype PRIORITY to be INTEGER range 0..15).

/RESTORE

     Causes  the  selected  task(s)  to  have  its  natural   priority
     restored.

     This allows you to undo the effect of SET TASK/PRIORITY,  without
     the  need  to  remember  the task's natural priority.  The task's
     natural priority is the value given by the pragma PRIORITY in the
     task specification.

/TIME_SLICE = t

     Change the current  setting  of  the  value  of  the  Ada  pragma
     TIME_SLICE to t, where t is given as a fixed point decimal number
     of seconds.

     This is  the  time  used  by  the  Ada  multitasking  system  for
     round-robin  scheduling.   (See the command SET TASK/TIME_SLICE).
     The task list and task selection qualifiers must be omitted.

/VISIBLE

     Causes the task given by the taskname  parameter  to  become  the
     "visible task" (see Lexicals %VISIBLE_TASK).

     The visible  task  is  the  default  task  assumed  by  debugging
     commands  when  you  do  not  (or  cannot)  specify  a task.  For
     example, the debugger command EXAMINE %R0 displays register 0  of
     the visible task.

     The task whose execution  entered  the  debugger  is  called  the
     active task.  Each time the debugger is entered, the visible task
     and the active task are one and the same.  Using this  qualifier,
     you  can  make  the  visible task be a task other than the active
     task.

     This qualifier requires exactly one taskname parameter.

Examples

 SET TASK/PRI=3 X,Y

     Set the priority of tasks X and Y to 3.

 SET TASK/RESTORE X

     Restore the priority of task X.

 SET TASK/ALL/HOLD

     Put all tasks on hold.

 SET TASK/ALL/NOHOLD

     Remove hold status from all tasks that are currently held.

 SET TASK/VISIBLE X

     Make task X be the default visible task.

 SET TASK/ACTIVE %TASK 3

     Switch from the currently active task to task 3 and remain in the
     debugger.

TERMINAL

     The debugger obtains the size of your  terminal  when  you  begin
     your debugging session, and uses this size information (width and
     height) when formatting output.  You  may  change  your  terminal
     size during a debugging session with the SET TERMINAL command.

     This command adjusts all  the  predefined  windows  for  the  new
     screen  size.  (For example, H1 changes size to remain at the top
     half of the new screen.)

     This command also adjusts screen displays.  Those  displays  that
     are  marked  as  DYNAMIC  (See  HELP  [SET]  DISPLAY/DYNAMIC) are
     adjusted just like all the  windows.   Those  displays  that  are
     marked NODYNAMIC are not be affected.

Additional information available:

ExamplesQualifiers

Examples

     DBG> SET TERM/WIDTH:132

     ! Or on a VAXstation...
     DBG> SET TERM/PAGE=55/WIDTH=155


Qualifiers

Additional information available:

/PAGE/WIDTH

/PAGE

     Sets the terminal page size (that is, the number of lines on  the
     screen).

 Format:

     SET TERMINAL/PAGE:n

     This qualifier specifies that the terminal is now  n  rows  long.
     "n"  may  have  any  value between 18 and 100.  This qualifier is
     most commonly used on a VAXstation.

/WIDTH

     Sets the terminal screen width.

 Format:

     SET TERMINAL/WIDTH:n

     This qualifier specifies that the terminal is now n columns wide.
     Typically  n is either 80 or 132 on VT100 type terminals, but may
     have any value  between  20  and  255.   (these  sizes  are  most
     commonly used on a VAXstation.)

TRACE

     Establishes a tracepoint at the location denoted  by  an  address
     expression,  at  instructions  of  a  particular class, or at the
     occurrence of specified events.

 Format:

       SET TRACE[/qualifiers]
           [address-expression[,...]]
           [ WHEN (conditional-expression)]
           [ DO   (command[;...]]

     When a tracepoint is triggered, the debugger takes the  following
     action:

     1.  Suspends program execution at the tracepoint location.

     2.  If /AFTER was specified when the tracepoint was  set,  checks
         the  AFTER  count.  If the specified number of counts has not
         been reached, execution is resumed and the debugger does  not
         perform the remaining steps.

     3.  Evaluates the  expression  in  a  WHEN  clause,  if  one  was
         specified  when  the tracepoint was set.  If the value of the
         expression is FALSE, execution is resumed  and  the  debugger
         does not perform the remaining steps.

     4.  Reports that execution has reached the tracepoint location by
         issuing a "trace ..." message, unless /SILENT was specified.

     5.  Displays  the  line  of  source  code  corresponding  to  the
         tracepoint,  unless  /NOSOURCE  or /SILENT was specified when
         the breakpoint was set, or  SET  STEP  NOSOURCE  was  entered
         previously.

     6.  Executes the commands in a DO clause, if  one  was  specified
         when the tracepoint was set.

     7.  Resumes execution.


     You set a tracepoint at a particular location in your program  by
     specifying an address expression with the SET TRACE command.  You
     set  a  tracepoint  on  consecutive  source  lines,  classes   of
     instructions,  or  events  by specifying a qualifier with the SET
     TRACE command.  Generally, you must  specify  either  an  address
     expression  or  a qualifier, but not both.  The only exception is
     with the /EVENT qualifier, which requires  that  you  specify  an
     event  name  keyword  and  permits you also to specify an address
     expression for certain event names.

     If you set a  tracepoint  at  a  location  currently  used  as  a
     breakpoint,   the   breakpoint   is  canceled  in  favor  of  the
     tracepoint, and vice versa.

     Tracepoints may be user  defined  or  predefined.   User  defined
     tracepoints  are those that you set explicitly with the SET TRACE
     command.  Predefined tracepoints, which depend  on  the  type  of
     program you are debugging (for example, Ada or multiprocess), are
     established automatically when you invoke the debugger.  Use  the
     SHOW TRACE command to identify all tracepoints that are currently
     set.  Any predefined tracepoints are identified as such.

     User defined and predefined  tracepoints  are  set  and  canceled
     independently.   For example, a location or event may have both a
     user defined and a predefined  tracepoint.   Canceling  the  user
     defined tracepoint does not affect the predefined tracepoint, and
     conversely.

Additional information available:

ExamplesParametersQualifiers

/ACTIVATING/AFTER:n/BRANCH/CALL/EVENT/EXCEPTION
/INSTRUCTION/INSTRUCTION/INTO/JSB/LINE
/MODIFY/NOJSB/NOSHARE/NOSILENT/NOSOURCE/NOSYSTEM
/OVER/RETURN/SHARE/SILENT/SOURCE/SYSTEM/TEMPORARY
/TERMINATING

Examples

     1   DBG> SET TRACE SUB3

     This command causes the debugger to trace the  start  of  routine
     SUB3 when that routine is executed.

     2   DBG> SET TRACE/BRANCH/CALL

     This  command  causes  the  debugger  to   trace   every   BRANCH
     instruction and every CALL instruction encountered during program
     execution.

     3   DBG> SET TRACE/LINE/INTO/NOSHARE/NOSYSTEM

     This command causes the debugger to  trace  the  start  of  every
     source  line,  including lines in called routines (/INTO) but not
     in  shareable  image  routines  (/NOSHARE)  or  system   routines
     (/NOSYSTEM).

     4   DBG> SET TRACE/NOSOURCE TEST5\%LINE 14 WHEN (X .NE. 2) DO (EX Y)

     This command causes the debugger to trace line 14 of module TEST5
     when X is not equal to 2.  At the tracepoint, the command EXAMINE
     Y is issued.  The /NOSOURCE qualifier suppresses the  display  of
     source code at the tracepoint.

     5   DBG> SET TRACE/INSTRUCTION WHEN (X .NE. 0)

     This command causes the debugger to trace when X is not equal  to
     0.   The  condition  is  tested  at  each instruction encountered
     during execution.

     6   DBG> SET TRACE/SILENT SUB2 DO (SET WATCH K)

     This SET TRACE command causes the debugger to trace the start  of
     routine  SUB2 during execution.  At the tracepoint, the DO clause
     sets a watchpoint on variable K.  The /SILENT  qualifier  on  the
     SET  TRACE  command  suppresses the "trace .  .  .  " message and
     the display of source code at the tracepoint.  This example shows
     a convenient way of setting a watchpoint on a nonstatic (stack or
     register) variable.  A nonstatic variable is  defined  only  when
     its  defining routine (SUB2, in this case) is active (on the call
     stack).

     7   DBG> SET TRACE/RETURN ROUT4 DO (EXAMINE X)

     This SET TRACE command causes  the  debugger  to  trace  the  RET
     instruction  of  routine  ROUT4  (that  is, just before execution
     returns to the calling  routine).   At  the  tracepoint,  the  DO
     clause  issues  the  command  EXAMINE  X.   This  example shows a
     convenient way of obtaining the value  of  a  nonstatic  variable
     just before execution leaves that variable's defining routine.

     8   DBG> SET TRACE/EVENT=TERMINATED

     This command causes the debugger to trace when an Ada task  makes
     a transition to the TERMINATED state.

Parameters

 address-expression

     Specifies an address expression (a program location) at  which  a
     tracepoint  is  to  be  set.  With high- level languages, this is
     typically a line number, a routine name,  or  a  label,  and  may
     include  a  path  name  to  specify  the  entity  uniquely.  More
     generally, an address expression may also  be  a  virtual  memory
     address  or  a  register and may be composed of numbers (offsets)
     and symbols, as well as  one  or  more  operators,  operands,  or
     delimiters.

     Do not specify the  asterisk  wildcard  character  (*).   Do  not
     specify  an  address expression with /ACTIVATING, /BRANCH, /CALL,
     /EXCEPTION,  /INSTRUCTION[=(opcode-  list)],   /INTO,   /[NO]JSB,
     /LINE,  /OVER,  /[NO]SHARE,  /[NO]SYSTEM,  or  /TERMINATING.  The
     /MODIFY and /RETURN qualifiers are used with  specific  kinds  of
     address expressions.

     If you specify a virtual memory address or an address  expression
     whose  value  is not a symbolic location, check (with the EXAMINE
     command) that an instruction  actually  begins  at  the  byte  of
     memory  so  indicated.   If an instruction does not begin at this
     byte, a run- time error may occur when an  instruction  including
     that  byte  is executed.  When you set a tracepoint by specifying
     an address expression whose value is not a symbolic location, the
     debugger  does  not  verify that the location specified marks the
     beginning of an instruction.  CALLS and CALLG routines start with
     an entry mask.

 command

     Specifies a debugger command that is to be executed  as  part  of
     the DO clause when trace action is taken.

 conditional-expression

     Specifies a conditional expression in the currently set  language
     that   is   to   be  evaluated  whenever  execution  reaches  the
     tracepoint.  If the expression is TRUE, trace action occurs,  and
     the  debugger reports that a tracepoint has been reached.  If the
     expression is FALSE, trace action does not occur.  In this  case,
     a  report  is not issued, the commands specified by the DO clause
     are not executed, and program execution is continued.

Qualifiers

     The qualifiers can be grouped as follows.

     The /LINE qualifier sets a tracepoint  on  each  line  of  source
     code.

     The  following  qualifiers  set   tracepoints   on   classes   of
     instructions.  Note that use of these qualifiers and of the /LINE
     qualifier causes the debugger to trace every instruction of  your
     program   as  it  executes  and  thus  significantly  slows  down
     execution:          /BRANCH,         /CALL,         /INSTRUCTION,
     /INSTRUCTION=(opcode-list), /RETURN.

     The following qualifiers set tracepoints on  classes  of  events:
     /ACTIVATING, /EVENT=event-name, /EXCEPTION, /TERMINATING.

     The following qualifiers affect what happens at a  routine  call:
     /INTO, /[NO]JSB, /OVER, /[NO]SHARE, /[NO]SYSTEM.

     The following qualifiers affect what output is displayed  when  a
     tracepoint is reached:  /[NO]SILENT, /[NO]SOURCE.

     The following  qualifiers  affect  the  timing  and  duration  of
     tracepoints:  /AFTER:n, /TEMPORARY.

     The /MODIFY qualifier is  used  to  monitor  changes  at  program
     locations (typically changes in the values of variables).

/ACTIVATING

     Note:   This  qualifier  applies  to  a  multiprocess   debugging
     configuration (when DBG$PROCESS has the value MULTIPROCESS).

     Causes the debugger to trace  when  a  new  process  comes  under
     debugger  control.  This is the default behavior.  Do not specify
     an address expression with /ACTIVATING.  See also /TERMINATING.

/AFTER:n

     Specifies that trace action not be taken until the nth  time  the
     designated  tracepoint  is  encountered (n is a decimal integer).
     Thereafter, the tracepoint occurs every time  it  is  encountered
     provided  that  conditions  in the WHEN clause (if specified) are
     TRUE.  The command SET TRACE/AFTER:1 has the same effect  as  the
     SET TRACE command.

/BRANCH

     Causes the debugger to trace every branch instruction encountered
     during program execution (including BEQL, BGTR, BLEQ, BGEQ, BLSS,
     BGTRU, BLEQU, BVC, BVS, BGEQU, BLSSU, BRB, BRW,  JMP,  BBS,  BBC,
     BBSS,  BBCS,  BBSC,  BBCC,  BBSSI, BBCCI, BLBS, BLBC, ACBB, ACBW,
     ACBL, ACBF, ACBD, ACBG, ACBH,  AOBLEQ,  AOBLSS,  SOBGEQ,  SOBGTR,
     CASEB,  CASEW, CASEL).  Do not specify an address expression with
     /BRANCH.  See also /INTO, /OVER.

/CALL

     Causes the debugger to trace every call  instruction  encountered
     during program execution (including the CALLS, CALLG, BSBW, BSBB,
     JSB, RSB, and RET  instructions).   Do  not  specify  an  address
     expression with /CALL.  See also /INTO, /OVER.

/EVENT=event-name

     Note:  This qualifier applies only to Ada and SCAN.  See the  VAX
     Ada and VAX SCAN documentation for complete information.

     Causes the debugger to trace the specified event (if  that  event
     is  defined and detected by the run-time system).  If you specify
     an address expression with /EVENT, causes the debugger  to  trace
     whenever  the specified event occurs for that address expression.
     Event names depend on the run-time facility.  You can display the
     event  names  associated  with  the  current run-time facility by
     entering the SHOW EVENT_FACILITY command.  Note that  you  cannot
     specify an address expression with certain event names.

/EXCEPTION

     Causes the debugger to trace every exception  that  is  signaled.
     The  trace  action  occurs  before  any  user-  written exception
     handlers are invoked.  Do not specify an address expression  with
     /EXCEPTION.

     As a result of  a  SET  TRACE/EXCEPTION  command,  whenever  your
     program  generates  an  exception condition, the debugger reports
     the  exception  condition  and  resignals  the  exception,   thus
     allowing any user-declared exception handler to execute.

/INSTRUCTION

     Causes the debugger to trace every instruction executed.  Do  not
     specify an address expression with /INSTRUCTION.  See also /INTO,
     /OVER.

/INSTRUCTION=(opcode-list)

     Causes the debugger to trace every instruction whose opcode is in
     the   list.    Do   not   specify   an  address  expression  with
     /INSTRUCTION.  See also /INTO, /OVER.

/INTO

     Applies  only   to   tracepoints   set   with   /BRANCH,   /CALL,
     /INSTRUCTION[=(opcode-list)],  or /LINE; that is, when an address
     expression is not explicitly specified.   When  used  with  those
     qualifiers,  causes  the  debugger  to trace the specified points
     within called routines (as  well  as  within  the  routine  where
     execution is currently suspended).  /INTO is the default behavior
     and is the opposite of /OVER.

     When using /INTO, you can further qualify the trace  action  with
     the /[NO]JSB, /[NO]SHARE, and /[NO]SYSTEM qualifiers.

/JSB

     Qualifies /INTO.  Use  /JSB  only  with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)],  or  /LINE.    /JSB   permits   the
     debugger  to  set  tracepoints within routines that are called by
     the JSB or  CALL  instruction.   /JSB  is  the  default  for  all
     languages  except  DIBOL.   Do  not specify an address expression
     with /[NO]JSB.

/LINE

     Causes the debugger to trace the start of each new line.  Do  not
     specify an address expression with /LINE.  See also /INTO, /OVER.

/MODIFY

     Causes  the  debugger  to  report  a   tracepoint   whenever   an
     instruction  writes  to  and  modifies  the  value  of a location
     indicated  by  a  specified  address  expression.   The   address
     expression is typically a variable name.

     The command SET TRACE/MODIFY X is equivalent to the  command  SET
     WATCH  X  DO(GO).   SET  TRACE/MODIFY  operates  under  the  same
     restrictions as SET WATCH.

     If you specify an absolute address for  the  address  expression,
     the  debugger  may  not  be  able to associate the address with a
     particular data object.   In  this  case,  the  debugger  uses  a
     default  length of 4 bytes.  You can change this length, however,
     by setting the type to either WORD (SET TYPE WORD, which  changes
     the  default  length  to  2  bytes) or BYTE (SET TYPE BYTE, which
     changes the  default  length  to  1  byte).   SET  TYPE  LONGWORD
     restores the default length of 4 bytes.

/NOJSB

     Qualifies /INTO.  Use /NOJSB only  with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /NOJSB specifies that tracepoints  not  be  set  within  routines
     called  by  JSB  instructions.   /NOJSB  is the default for DIBOL
     programs.  In DIBOL, user- written routines  are  called  by  the
     CALL  instruction  and DIBOL run-time library routines are called
     by the JSB instruction.  Do not  specify  an  address  expression
     with /NOJSB.

/NOSHARE

     Qualifies /INTO.  Use /NOSHARE only with /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /NOSHARE specifies that tracepoints not be set  within  shareable
     images.  Do not specify an address expression with /[NO]SHARE.

/NOSILENT

     Specifies that the "trace .  .  .  " message is displayed at  the
     tracepoint.  This is the default.

/NOSOURCE

     Specifies that the source line for the current  location  is  not
     displayed at the tracepoint.  See also SET STEP [NO]SOURCE.

/NOSYSTEM

     Qualifies /INTO.  Use /NOSYSTEM only with /INTO and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /NOSYSTEM specifies that tracepoints not  be  set  within  system
     routines  (P1  space).  Do not specify an address expression with
     /SYSTEM.

/OVER

     Applies  only   to   tracepoints   set   with   /BRANCH,   /CALL,
     /INSTRUCTION[=(opcode-list)],  or /LINE; that is, when an address
     expression is not explicitly specified.   When  used  with  those
     qualifiers,  causes  the  debugger  to trace the specified points
     only within the routine where execution  is  currently  suspended
     (not  within  called  routines).   /OVER is the opposite of /INTO
     (the default behavior).

/RETURN

     Causes the debugger to trace the RET (return) instruction of  the
     routine  associated  with the specified address expression (which
     may be a routine name, line number, and so on).   This  qualifier
     can  only  be  applied  to  routines called with a CALLS or CALLG
     instruction; it cannot be used with JSB  routines.   Tracing  the
     RET instruction enables you to inspect the local environment (for
     example, obtain the values of local  variables)  before  the  RET
     instruction deletes the routine's call frame from the call stack.

     Causes the debugger to trace the RETURN (RET) instruction of  the
     specified  routine.   This  qualifier  can  only  be  applied  to
     routines called with a CALLS or CALLG instruction; it  cannot  be
     used with JSB routines.

     For  this  qualifier,  the  address-expression  parameter  is  an
     instruction  address  within  a  CALLS  or CALLG routine.  It may
     simply be a routine name, in which case it specifies the  routine
     start address.  However, you can also specify another location in
     a routine, so you can see only those returns that are taken after
     a certain code path is followed.

     A SET TRACE/RETURN command cancels a previous SET  TRACE  command
     if the same address expresion is specified.

/SHARE

     Qualifies /INTO.  Use /SHARE only  with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /SHARE (default) permits the debugger to set  tracepoints  within
     shareable  image  routines  as  well  as  other routines.  Do not
     specify an address expression with /[NO]SHARE.

/SILENT

     Specifies that the "trace .  .  .  " message and the source  line
     for  the  current  location  are not displayed at the tracepoint.
     /SILENT overrides /SOURCE.

/SOURCE

     Specifies that the  source  line  for  the  current  location  is
     displayed  at the tracepoint.  This is the default.  See also SET
     STEP [NO]SOURCE.

/SYSTEM

     Qualifies /INTO.  Use /SYSTEM only with  /INTO  and  one  of  the
     following          qualifiers:           /BRANCH,          /CALL,
     /INSTRUCTION[=(opcode-list)], or /LINE.

     /SYSTEM (default) permits the debugger to set tracepoints  within
     system  routines  (P1  space)  as well as other routines.  Do not
     specify an address expression with /SYSTEM.

/TEMPORARY

     Causes the tracepoint to disappear after  it  is  triggered  (the
     tracepoint does not remain permanently set).

/TERMINATING

     Causes the debugger to trace when a  process  performs  an  image
     exit.   This  is  the  default  behavior.  Note that the debugger
     always gains control and displays its prompt when the last  image
     of  a  single-process  or  multiprocess  program  exits.   Do not
     specify  an  address  expression  with  /TERMINATING.   See  also
     /ACTIVATING.

TYPE

     Establishes the  default  type  to  be  associated  with  untyped
     program locations and, when the /OVERRIDE qualifier is specified,
     the type to be associated with both untyped program locations and
     program locations that have compiler-generated types.

 Format:

     SET TYPE [/qualifier] type-keyword

Additional information available:

ASCICASCIDASCIWASCIZBYTED_FLOATDATE_TIME
FLOATG_FLOATH_FLOATINSTRUCTIONLONGOCTAWORD
QUADWORDWORD

ParametersASCII:nPACKED:nTYPE=(t)QualifiersExamples

Parameters

 type-keyword

     May be one of the following debugger types:

     o  BYTE -- Type byte integer (length 1 byte).

     o  WORD -- Type word integer (length 2 bytes).

     o  LONGWORD -- Type longword integer (length 4 bytes).

     o  QUADWORD -- Type quadword integer (length 8 bytes).

     o  OCTAWORD -- Type octaword integer (length 16 bytes).

     o  PACKED:n -- Type packed decimal (length n nibbles).

     o  ASCII:n --  Type  ASCII  character  (length  n  bytes).   Each
        character  occupies one byte of memory.  If you do not specify
        a value for n, the debugger assumes  a  default  length  of  4
        bytes.  The value n is interpreted in decimal radix.

     o  ASCIC -- Counted ascii string (byte count).

     o  ASCIW -- Counted ascii string (word count).

     o  ASCIZ -- Zero-terminated ascii string.

     o  DATE_TIME -- Type date-time (internal VMS representation).

     o  INSTRUCTION -- Type  instruction  whose  length  is  variable,
        depending  on  the number of instruction operands and the kind
        of addressing modes used.

     o  FLOAT -- F_floating type (length 4  bytes).   Values  of  type
        F_floating  may  range  from  .29*10**-38  to  1.7*10**38 with
        approximately 7 decimal digits of precision.

     o  D_FLOAT -- D_floating type (length 8 bytes).  Values  of  type
        D_floating  may  range  from  .29*10**-38  to  1.7*10**38 with
        approximately 16 decimal digits of precision.

     o  G_FLOAT -- G_floating type (length 8 bytes).  Values  of  type
        G_floating  may  range  from  .56*10**-308  to .9*10**308 with
        approximately 15 decimal digits of precision.

     o  H_FLOAT -- H_floating type (length 16 bytes).  Values of  type
        H_floating  may  range from .84*10**-4932 to .59*10**4932 with
        approximately 33 decimal digits of precision.

     o  TYPE=(t) -- Same type as "t", where "t" is a variable in  your
        program.

ASCIC

     Sets the default type to counted ASCII.

ASCID

     Sets the default type to ASCID.

ASCII:n

     Sets the default type to ASCII strings of length n.

ASCIW

     Sets the default type to word-counted ASCII.

ASCIZ

     Sets the default type to zero-terminated ASCII.

BYTE

     Sets the default type to byte-integer.

D_FLOAT

     Sets the default type to D_Floating.

DATE_TIME

     Sets  the   default   type   to   be   VMS   internal   date/time
     representation.

FLOAT

     Sets the default type to single-precision floating.

G_FLOAT

     Sets the default type to G_Floating.

H_FLOAT

     Sets the default type to H_Floating.

INSTRUCTION

     Sets the default type to instruction.

LONG

     Sets the default type to LONG.

OCTAWORD

     Sets the default type to OCTAWORD.

PACKED:n

     Sets the default type to PACKED with length n.

QUADWORD

     Sets the default type to QUADWORD.

TYPE=(t)

     Sets the default type to be the same type as "t", where "t" is  a
     variable in your program.

WORD

     Sets the default type to WORD.

Qualifiers

Additional information available:

/OVERRIDE

/OVERRIDE

     Indicates that the specified  type  be  associated  with  untyped
     program   locations   and   with   those   locations   that  have
     compiler-generated types.

Examples

     DBG> SET TYPE ASCII
     ! Now untyped locations get displayed as ASCII strings.
     DBG> EXAM 1000 ! Location 1000 has no compiler-generated type.
     1000: "...."
     DBG> SHOW SYM/TYPE X
     data FOO\X
         type: floating point (F_FLOAT, size 4 bytes)
     DBG> EXAMINE X
     FOO\X:     1.2    ! X does have a type (float), so it is
     displayed
                    ! according to that type.
     DBG> SET TYPE/OVERR ASCII
     DBG> EXAMINE X
     FOO\X: "...."  ! Now X is displayed as ASCII because of the
                    ! /OVERRIDE qualifier on the SET TYPE.

WATCH

     Establishes a watchpoint at the location denoted  by  an  address
     expression.

 Format:

       SET WATCH [/qualifiers]
           address-expression [,...]
           [ WHEN (conditional-expression)]
           [ DO   (command[;...])]

     Whenever an instruction causes  the  modification  of  a  watched
     location, the debugger takes the following action:

     1.  Suspends  program  execution  after  that   instruction   has
         completed execution.

     2.  If /AFTER was specified when the watchpoint was  set,  checks
         the  AFTER  count.  If the specified number of counts has not
         been reached, execution continues and the debugger  does  not
         perform the remaining steps.

     3.  Evaluates the  expression  in  a  WHEN  clause,  if  one  was
         specified  when  the watchpoint was set.  If the value of the
         expression is FALSE, execution  continues  and  the  debugger
         does not perform the remaining steps.

     4.  Reports that execution has reached the  watchpoint  location,
         unless /SILENT was specified.

     5.  Reports the old (unmodified) value at the watched location.

     6.  Reports the new (modified) value at the watched location.

     7.  Displays  the  line  of  source  code  where   execution   is
         suspended, unless /NOSOURCE or /SILENT was specified when the
         watchpoint  was  set,  or  SET  STEP  NOSOURCE  was   entered
         previously.

     8.  Executes the commands in a DO clause, if  one  was  specified
         when  the watchpoint was set.  If the DO clause contains a GO
         command,  execution  continues  and  the  debugger  does  not
         perform the next step.

     9.  Issues the prompt.


     For high-level language programs,  the  address  expressions  you
     specify  with the SET WATCH command are typically variable names.
     If you specify an absolute memory address that is associated with
     a  compiler-generated  type,  the debugger symbolizes the address
     and uses the  length  in  bytes  associated  with  that  type  to
     determine  the  length  in bytes of the watched location.  If you
     specify an absolute  memory  address  that  the  debugger  cannot
     associate  with a compiler-generated type, the debugger watches 4
     bytes of virtual  memory,  by  default,  beginning  at  the  byte
     identified  by  the  address  expression.   You  can  change this
     length, however, by setting the type to  either  WORD  (SET  TYPE
     WORD,  which  changes the default length to 2 bytes) or BYTE (SET
     TYPE BYTE, which changes the default length to 1 byte).  SET TYPE
     LONGWORD restores the default length of 4 bytes.

     You can set watchpoints on aggregates (that is, entire arrays  or
     records).  A watchpoint set on an array or record triggers if any
     element of the array or record changes.  Thus, you do not need to
     set   watchpoints   on   individual   array  elements  or  record
     components.  Note, however, that  you  cannot  set  an  aggregate
     watchpoint on a variant record.

Additional information available:

ExamplesGlobal Section WatchpointsParametersQualifiersStatic Nonstatic Watchpoints

/AFTER:n/INTO/NOSILENT/NOSOURCE/NOSTATIC/OVER
/SILENT/SOURCE/STATIC/TEMPORARY

Examples

     1   DBG> SET WATCH MAXCOUNT

     This command establishes a watchpoint on the variable MAXCOUNT.

     2   DBG> SET WATCH ARR
         DBG> GO
            .
            .
         watch of SUBR\ARR at SUBR\%LINE 12+8
           old value:
            (1):         7
            (2):         12
            (3):         3

           new value:
            (1):         7
            (2):         12
            (3):         28

         break at SUBR\%LINE 14
         DBG>

     In this example, the SET WATCH command sets a watchpoint  on  the
     three-element integer array, ARR.  Execution is then resumed with
     the GO command.  The watchpoint is triggered whenever  any  array
     element changes.  In this case the third element changed.

     3   DBG> SET TRACE/SILENT SUB2 DO (SET WATCH K)

     In this example variable K is a nonstatic variable and is defined
     only  when  its  defining  routine,  SUB2, is active (on the call
     stack).  The SET TRACE command sets a tracepoint on  SUB2.   When
     the  tracepoint is triggered during execution, the DO clause sets
     a  watchpoint  on  K.   The  watchpoint  is  then  canceled  when
     execution  returns  from  routine SUB2.  The /SILENT qualifier on
     the SET TRACE command suppresses the "trace at .  .  .  " message
     and the display of source code at the tracepoint.

     4   DBG_1> SET WATCH ARR(1)
         DBG_1> SHOW WATCH
         watchpoint of PPL3\ARR(1)
         DBG_1> GO
         %DEBUG-I-WATVARNOWGBL, watched variable PPL3\ARR(1) has been
                 remapped to a global section
         predefined trace on activation at routine PPL3
                 in %PROCESS_NUMBER 2
         predefined trace on activation at routine PPL3
                 in %PROCESS_NUMBER 3
         watch of PPL3\ARR(1) at PPL3\%LINE 93 in %PROCESS_NUMBER 2
             93:             ARR(1) = INDEX
            old value: 0
            new value: 1
         break at PPL3\%LINE 94 in %PROCESS_NUMBER 2
             94:             ARR(I) = I
         DBG_2> DO (SHOW WATCH)
         For %PROCESS_NUMBER 1
           watchpoint of PPL3\ARR(1) [global-section watchpoint]
         For %PROCESS_NUMBER 2
           watchpoint of PPL3\ARR(1) [global-section watchpoint]
         For %PROCESS_NUMBER 3
           watchpoint of PPL3\ARR(1) [global-section watchpoint]
         DBG_2>

     In this example of a global section  watchpoint,  the  SET  WATCH
     command sets a watchpoint on element 1 of array ARR.  Because ARR
     has not yet been mapped to  a  global  section,  the  SHOW  WATCH
     command  identifies  the  watchpoint  as  a  conventional  static
     watchpoint.

     After the GO command resumes execution,  ARR  is  remapped  to  a
     global  section.   The  watchpoint  is automatically treated as a
     global section watchpoint.

     Processes  2  and  3  come  under  debugger  control,  then   the
     watchpoint is triggered in process 2, interrupting execution.  At
     this point, the SHOW WATCH command confirms that  the  watchpoint
     is visible from each process.

Global Section Watchpoints

     You  can  set  watchpoints  on  variables  or  arbitrary  program
     locations  in  global  sections.  A global section is a region of
     virtual  memory  that  is  shared  among  all  processes   of   a
     multiprocess  program.  A watchpoint that is set on a location in
     a global section (a global section watchpoint) triggers when  any
     process modifies the contents of that location.

     You set a global section watchpoint  just  as  you  would  set  a
     watchpoint on a static variable.  However, because of the way the
     debugger monitors global section watchpoints, note the  following
     point.    When   setting   watchpoints   on  arrays  or  records,
     performance is improved if you specify individual elements rather
     than the entire structure with the SET WATCH command.

     If you set a watchpoint on a location that is not yet mapped to a
     global  section,  the  watchpoint  is  treated  as a conventional
     static watchpoint.  When the location is subsequently mapped to a
     global  section,  the  watchpoint  is  automatically treated as a
     global section watchpoint and an informational message is issued.
     The   watchpoint  is  then  visible  from  each  process  of  the
     multiprocess program.

Parameters

 address-expression

     Specifies an address expression (a program location) at  which  a
     watchpoint  is  to  be  set.   With high-level languages, this is
     typically the name of a program variable and may include  a  path
     name  to  specify  the  variable  uniquely.   More  generally, an
     address expression may also be a  virtual  memory  address  or  a
     register and may be composed of numbers (offsets) and symbols, as
     well as one or more operators, operands, or delimiters.

     Do not specify the asterisk wildcard character (*).

 command

     Specifies a debugger command that is to be executed  as  part  of
     the DO clause when watch action is taken.

 conditional-expression

     Specifies a conditional expression in the currently set  language
     that   is   to   be  evaluated  whenever  execution  reaches  the
     watchpoint.  If the expression is TRUE, watch action occurs,  and
     the  debugger  reports  that a watchpoint has been triggered.  If
     the expression is FALSE, watch action does not  occur.   In  this
     case,  a  report  is not issued, the commands specified by the DO
     clause are not executed, and program execution is continued.

Qualifiers

     The qualifiers can be grouped as follows.

     The following qualifiers  affect  what  output  is  seen  when  a
     watchpoint is reached:  /[NO]SILENT, /[NO]SOURCE.

     The following  qualifiers  affect  the  timing  and  duration  of
     watchpoints:  /AFTER:n, /TEMPORARY.

     The following  qualifiers  apply  only  to  nonstatic  variables:
     /INTO, /OVER.

     The following qualifiers are  used  to  override  the  debugger's
     determination  of  whether  a  variable  is  static or nonstatic:
     /[NO]STATIC.

Static Nonstatic Watchpoints

     The technique for setting a watchpoint  depends  on  whether  the
     variable is static or nonstatic.  A static variable is associated
     with the same virtual memory address throughout execution of  the
     program.   You  can  always set a watchpoint on a static variable
     throughout execution.

     A nonstatic variable is allocated on the stack or in  a  register
     and  has a value only when its defining routine is active (on the
     call stack).  Therefore, you can set a watchpoint on a  nonstatic
     variable  only  when  the  PC  value  is  within the scope of the
     defining routine (including any routine called by the  definining
     routine).   The  watchpoint  is  cancelled when execution returns
     from the defining routine.

     The debugger determines whether a variable is static or nonstatic
     by checking how it is allocated.  Typically, a static variable is
     in P0  space  (0  through  3FFFFFFF,  hexadecimal);  a  nonstatic
     variable  is  in  P1  space  (40000000  through 7FFFFFFF) or in a
     register.  The debugger issues a warning if  you  try  to  set  a
     watchpoint  on  a  variable that is allocated in P1 space or in a
     register when the PC  value  is  not  within  the  scope  of  the
     defining  routine.   The  /[NO]STATIC  qualifiers  enable  you to
     override  the  default  behavior.   For  example,  if  you   have
     allocated nonstack storage in P1 space, use the /STATIC qualifier
     when setting a watchpoint on a variable that is allocated in that
     storage  area.   This  enables  the  debugger  to  use the faster
     write-protection method  of  watching  the  location  instead  of
     tracing every instruction.  Conversely, if, for example, you have
     allocated your own stack in P0 space, use the /NOSTATIC qualifier
     when setting a watchpoint on a variable that is allocated on that
     stack.  This enables the debugger to treat the  watchpoint  as  a
     nonstatic watchpoint.

     Another distinction between static and nonstatic  watchpoints  is
     speed  of  execution.   To  watch a static variable, the debugger
     write-protects the page containing the variable.  If your program
     attempts  to  write  to that page, an access violation occurs and
     the debugger  handles  the  exception,  determining  whether  the
     watched variable was modified.  Except when writing to that page,
     the program executes at normal speed.

     To  watch  a  nonstatic  variable,  the  debugger  traces   every
     instruction  in  the  variable's  defining routine and checks the
     value of the variable after each instruction has  been  executed.
     Since  this  significantly  slows  down  execution,  the debugger
     issues a message when you set a nonstatic watchpoint.  The  /INTO
     and  /OVER  qualifiers enable you to choose whether to also trace
     instructions within any routine that is called  by  the  defining
     routine or to execute the called routine at normal speed.

/AFTER:n

     Specifies that watch action not be taken until the nth  time  the
     designated  watchpoint  is  encountered (n is a decimal integer).
     Thereafter, the watchpoint occurs every time  it  is  encountered
     provided  that  conditions  in  the  WHEN  clause  are TRUE.  The
     command SET WATCH/AFTER:1 has the same effect as  the  SET  WATCH
     command.

/INTO

     Specifies that the debugger is to monitor a nonstatic variable by
     tracing  instructions  not  only within the defining routine, but
     also within a routine that is called from  the  defining  routine
     (and any other such nested calls).  SET WATCH/INTO enables you to
     monitor nonstatic variables within called routines more precisely
     than  SET  WATCH/OVER;  but  the speed of execution within called
     routines is faster with SET WATCH/OVER.

/NOSILENT

     Specifies that the "watch .  .  .  " message is displayed at  the
     watchpoint.  This the default.

/NOSOURCE

     Specifies that the source line for the current  location  is  not
     displayed at the watchpoint.  See also SET STEP [NO]SOURCE.

/NOSTATIC

     Enables you to override the debugger's default  determination  of
     whether  a  specified variable (location) is static or nonstatic.
     /NOSTATIC specifies that the debugger should treat  the  variable
     as  a  nonstatic  variable, even though it may be allocated in P0
     space.  /NOSTATIC causes the debugger to monitor the location  by
     tracing  every  instruction.   Exercise  caution  when using this
     qualifier.

/OVER

     Specifies that the debugger is to monitor a nonstatic variable by
     tracing instructions only within the defining routine, not within
     a routine that is called by the defining routine.  As  a  result,
     the  debugger  executes  a  called  routine  at  normal speed and
     resumes tracing instructions only when execution returns  to  the
     defining  routine.  SET WATCH/OVER provides faster execution than
     SET WATCH/INTO; but if a  called  routine  modifies  the  watched
     variable,  execution  is  interrupted  only upon returning to the
     defining routine.  SET WATCH/OVER is the  default  behavior  when
     you set watchpoints on nonstatic variables.

/SILENT

     Specifies that the "watch .  .  .  " message and the source  line
     for  the  current  location  are not displayed at the watchpoint.
     /SILENT overrides /SOURCE.

/SOURCE

     Specifies that the  source  line  for  the  current  location  is
     displayed  at  the  watchpoint.   This  is  the default.  /SILENT
     overrides /SOURCE.  See also SET STEP [NO]SOURCE.

/STATIC

     Enables you to override the debugger's default  determination  of
     whether  a  specified variable (location) is static or nonstatic.
     /STATIC specifies that the debugger should treat the variable  as
     a  static  variable, even though it may be allocated in P1 space.
     This causes the debugger to monitor the  location  by  using  the
     faster  write-protection  method  rather  than  by  tracing every
     instruction.  Exercise caution when using this qualifier.

/TEMPORARY

     Causes the watchpoint to disappear after  it  is  triggered  (the
     watchpoint does not remain permanently set).

WINDOW

     Establishes a screen window definition.  A  screen  window  is  a
     region  on  the  terminal screen at which a screen display may be
     displayed.  A screen window definition associates a  window  name
     with  a  screen  region  specified  in terms of a beginning line,
     height (line count),  beginning  column,  width  (characters  per
     line).   The  last two values are optional and, if not specified,
     default to  column  1  and  the  current  terminal  screen  width
     respectively.   Once  defined, the name of a screen window can be
     used in DISPLAY and  SET  DISPLAY  commands  to  position  screen
     displays on the screen.

 Format:
      SET WINDOW wname AT (start-line, line_count
                          [, start-column, column-count])

Additional information available:

ParametersExamples

Parameters

 wname

     The name of the window being defined.

 start-line

     The starting line number of the window.   This  is  the  line  at
     which  the  window header line is displayed.  The top line of the
     screen is line 1.

 line-count

     The number of lines of text  in  the  window,  not  counting  the
     header  line.   Line-count  must  be at least 1.  Start-line plus
     line-count may not exceed the current screen height.

 start-column

     The starting column number of the window.  This is the column  at
     which  the first character in the window is displayed.  Note, the
     left hand border may occupy the column just to the  left  of  the
     starting  column  number.   The left most column on the screen is
     column 1.

 column-count

     The number of characters per line in  the  window.   Column-count
     must  be  at  least  1  and less than the current terminal screen
     width.  Start-column plus column-count may not exceed the current
     screen width.

Examples

     ! Make a window named ONELINE at the top of the
     ! screen that spans the entire width of the screen.
     !
     DBG> SET WINDOW ONELINE AT (1,1)

     ! Make a window named MIDDLE for the central
     ! region of the screen.
     !
     DBG> SET WINDOW MIDDLE AT (9,4,30,20)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026