Symbol ambiguities can occur when a symbol (for example, a variable
name X) is defined in more than one routine or other program unit.
In most cases, the debugger resolves symbol ambiguities automatically.
First, it uses the scope and visibility rules of the currently set
language. In addition, because the debugger permits you to specify
symbols in arbitrary modules (to set breakpoints and so on), the
debugger uses the ordering of routine calls on the call stack to
resolve symbol ambiguities.
In some cases, however, the debugger might respond as follows when you
specify a symbol that is defined multiple times:
- It might issue a "symbol not unique" message because it is not able
to determine the particular declaration of the symbol that you
intended.
- It might reference the symbol declaration that is visible in the
current scope, which is not the one you want.
To resolve such problems, you must specify a scope where the debugger
should search for the particular declaration of the symbol:
- If the different declarations of the symbol are within routines
that are currently active on the call stack, use the Call Stack
menu on the source window to reset the current scope.
- Otherwise, enter the appropriate command at the command-entry
prompt (EXAMINE or MONITOR, for example), specifying a path-name
prefix with the symbol. For example, if the variable X is defined
in two modules named COUNTER and SWAP, the following command uses
the path name SWAP\X to specify the declaration of X that is in
module SWAP:
DBG> EXAMINE SWAP\X