home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
vacbdbg.zip
/
betadbg.zip
/
help
/
derdhy1.hlp
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1998-02-13
|
201KB
|
6,756 lines
ΓòÉΓòÉΓòÉ 1. Procedure Help for Debugger ΓòÉΓòÉΓòÉ
The Debugger Online Help is divided into four types of information:
Procedures - how to perform a specific task or set of tasks
Reference - technical information you may need to understand how to
perform a task
User Interface - context-sensitive help pages displayed when you press F1
from within the debugger
Concepts - overview information you may need to understand basic
principles of debugging or components of the debugger interface
Procedure help is organized hierarchically, so that you start from a
high-level task and follow it down to the specific task you want to perform.
Help is available for the following high-level tasks:
Prepare a program for debugging
Start or stop debugging a program
Set breakpoints in your program
Step through, run, or halt your program
Debug variable contents and memory
Debug logic and program flow
ΓòÉΓòÉΓòÉ 1.1. Prepare a Program for Debugging ΓòÉΓòÉΓòÉ
To prepare a program for debugging, you may need to perform some or all of the
following tasks:
Establish a debug environment
Write programs for debugging
Compile a program for debugging
ΓòÉΓòÉΓòÉ 1.1.1. Write Programs for Debugging ΓòÉΓòÉΓòÉ
You can make your programs easier to debug by following these simple
guidelines:
Do not hand-tune your source code for performance until you have fully
debugged and tested the untuned version. Hand tuning may introduce new
bugs or make the logic of your code harder to understand.
Where possible, do not put multiple statements on a single line, because
some debugger features operate on a line basis. For example, you cannot
set line breakpoints on more than one statement on the same line.
Although you can step over multiple statements on the same line, it is
difficult to determine which statements on the current line have been
executed already, and which ones have not.
Assign intermediate expression values to temporary variables to make it
easier to verify intermediate results.
To be able to debug your programs at the line level, you must specify compiler
options that generate debug information. For information on these compiler
options, and for other information on preparing your application for
debugging, see the Debug Tool User's Guide and Reference.
ΓòÉΓòÉΓòÉ 1.1.2. Compile a Program for Debugging ΓòÉΓòÉΓòÉ
In order to be able to debug your program at the source code level, you need to
compile your program with certain compiler options that instruct the compiler
to generate symbolic information in the object file. The Related Topics section
below points to information on how to compile your program for a specific
environment.
Related Information
Reference
Compiler Options on OS/390
Procedures
Write Programs for Debugging
ΓòÉΓòÉΓòÉ 1.1.3. Establish a Debug Environment ΓòÉΓòÉΓòÉ
To establish a debug environment, you need to perform some or all of the
following tasks:
Set environment variables for the debugger
Start the debug session
ΓòÉΓòÉΓòÉ 1.1.3.1. Set Environment Variables for the Debugger ΓòÉΓòÉΓòÉ
The debugger user interface running on the workstation uses certain environment
variables to determine where it looks for source files, executables, online
help, and so on. See the Related Topics below for help on the environment
variables themselves.
To set an environment variable for a given session of the debugger, do the
following on your OS/2 or Windows workstation:
1. Open a command shell window.
2. Use the SET command to set each environment variable to the required
value:
SET VARNAME=VAL1;VAL2;VAL3
where VARNAME is the name of the environment variable, and VAL1, VAL2,
and VAL3 are values assigned to it (normally multiple values for a
variable are separated by semicolons).
If you want to add more values to an existing variable, use the following
syntax:
SET VARNAME=%VARNAME%;VAL4;VAL5
This adds both the existing contents of VARNAME and the new values to the
variable.
3. Invoke the debugger daemonfrom that command shell.
If you want to set these environment variables permanently, or if you are
debugging remotely to an OS/390 host via APPC, do the following, depending on
the operating system you are using:
From Control Panel select System, then within the System notebook choose the
Environment tab. Select the variable you want to change from the list, or
enter a new variable name in the Variable entry field, and enter its values in
the Value entry field. Click on OK or Apply to save the changed or new
variable.
Add the SET... commands to your CONFIG.SYS file. A reboot is required for
these changes to take effect.
Related Information
Reference
Environment Variables
ΓòÉΓòÉΓòÉ 1.1.3.2. Invoke the Debugger ΓòÉΓòÉΓòÉ
How you invoke the debugger for an OS/390 program depends on the communications
protocol you are using. See the following for details:
TCP/IP connection
APPC connection (OS/2 only)
Related Information
Procedures
Start the Debug Tool under OpenEdition MVS
ΓòÉΓòÉΓòÉ 1.1.3.2.1. Establish an APPC Connection ΓòÉΓòÉΓòÉ
Follow these steps to debug a program running on an OS/390 system through APPC.
1. Set the DEBUG_LANG environment variable to indicate the dominant
programming language for your application. (For debugging remotely to
OS/390, only COBOL is supported.) You can set this from the command shell
or in your OS/2 CONFIG.SYS file. Note that this variable is usually set
for you during installation.
2. Start your application on OS/390 with the TEST runtime option. This will
cause the Debug Tool to be loaded; it will then automatically establish a
connection to the OS/2 workstation through APPC. You can specify the TEST
runtime option as:
TEST(,,,VADAPPC&machinename:*)
where machinename is the APPC symbolic destination name for your
workstation. The details of how to start your program with the TEST
option vary depending on the OS/390 environment the program runs in. The
environments supported are batch (JES), TSO, CICS, and BTS. For more
information on specific environments, or on what you can specify with the
TEST option, see the Debug Tool User's Guide and Reference.
Related Information
Reference
DEBUG_LANG Environment Variable
Procedures
Start the Debug Tool under OpenEdition MVS
ΓòÉΓòÉΓòÉ 1.1.3.2.2. Establish a TCP/IP Connection ΓòÉΓòÉΓòÉ
Follow these steps to debug a program running on an OS/390 system through
TCP/IP.
1. Set the DEBUG_LANG environment variable to indicate the dominant
programming language for your application. (For debugging remotely to
OS/390, only COBOL is supported.) You can set this from the command
shell, in your CONFIG.SYS file (OS/2), or in System Settings (Windows).
Note that this variable is usually set for you during installation.
2. Start the remote debug daemon on the workstation. Click on the Remote
Debug Daemon icon or shortcut, start the daemon from a WorkFrame MVS
project, or issue the following command and options:
idbugd -qport=nnnn -v
where nnnn is a TCP/IP port such as 8000 or 8001 (note that this same
port number must be specified when you start your application on OS/390).
The daemon only needs to be started once. You can then conduct as many
remote debug sessions as needed without having to restart the daemon.
3. Start your application on OS/390 with the TEST runtime option. This will
cause the Debug Tool to be loaded. You can specify the TEST runtime
option as:
TEST(,,,VADTCPIP&machinename%nnnn:*)
where machinename is the ip address of your workstation and nnnn is the
same TCP/IP port number as specified on the idbugd command. If omitted,
the port number defaults to 8000. The details of how to start your
program with the TEST option vary depending on the OS/390 environment the
program runs in. The environments supported are batch (JES), TSO, CICS,
and BTS. For more information on specific environments, or on what you
can specify with the TEST option, see the Debug Tool User's Guide and
Reference.
Related Information
Reference
DEBUG_LANG Environment Variable
Procedures
Start the Debug Tool under OpenEdition MVS
ΓòÉΓòÉΓòÉ 1.1.3.2.3. Start the Debug Tool under OpenEdition MVS ΓòÉΓòÉΓòÉ
As with MVS or TSO you must set up your STEPLIB so that the application to be
debugged, the debugger and the runtime library can be found. Also you need to
specify the runtime TEST option. If you did not compile with #pragma runopts
then you need to specify this option through the system variable _CEE_RUNOPTS
One possibility is to create a shell script in OpenEdition MVS with the
following commands:
#comment
export STEPLIB=SHRC390.DEBUG.LEVEL4.SEQAMOD
:SHARE.CEE170.SCEERUN
export _CEE_RUNOPTS='TEST(,,,VADTCPIP&WRKST:*) POSIX(ON)'
To set up your environment and execute myprog in the shell, invoke the shell
script. Debug Tool should connect to the waiting debugger user interface on the
workstation. The C runtime library must be Language Environment 1.7 or later in
the exported STEPLIB variable.
If your program is an MVS executable you need to:
Create an OpenEdtion file which has the same name as the MVS executable
Set the file's attributes to be executable with the sticky bit on
Put the MVS PDS or PDSE in the STEPLIB variable
Set the Language Environment runtime TEST option to invoke the debugger
Run the OpenEdition file, which is essentially a link to the MVS one.
An example of doing this is:
>touch /u/userid/myprog10
>chmod 1700 /u/userid/myprog10
>export STEPLIB=USERID.PROJ1.LOAD:$STEPLIB
>export _CEE_RUNOPTS='TEST(,,,VADTCPIP&9.24.25.26:*) POSIX(ON)'
>/u/userid/myprog10
The program to be debugged is USERID.PROJ1.LOAD(MYPROG10)
ΓòÉΓòÉΓòÉ 1.1.3.3. Use the Source Window ΓòÉΓòÉΓòÉ
Use the Source window to view the progress of your program as you debug it. The
Source window displays your program's source code, and updates the display
after each step or run command. You can set or clear breakpoints, add variables
or expressions to a monitor, and more. See the following tasks related to using
the Source window:
View different source files
Set and clear breakpoints
Add expressions and variables to a monitor
Run your program
Step through your program
Open other windows and monitors
ΓòÉΓòÉΓòÉ 1.1.3.3.1. View Different Source Files ΓòÉΓòÉΓòÉ
When you start the debugger, a single Source window appears.
If your executable file was linked from several object files, you can open a
Source window for each object, and view several source files at once:
1. Raise the Session Control window by selecting it from the Windows menu of
any main debugger window
2. Click on the + icon beside the name of the executable, to open a list of
object files
3. Double-click on the object file you want to view. If that object file is
not already in a Source window, a new Source window opens containing the
source file for that object file.
You can also open new Source windows from the File menu of the Session Control
window or of an existing Source window:
1. Select File->Open new source
2. Enter the name of the source file. This source file must be a part of the
application you are currently debugging.
3. Click on OK. A Source window for the new source file opens, if the
debugger is able to locate the file.
Related Information
Procedures
Open Other Debugger Windows
Use the Source Window
Reference
Problems Getting a Source View
ΓòÉΓòÉΓòÉ 1.1.3.4. Open Other Debugger Windows ΓòÉΓòÉΓòÉ
You can open other Source windows from a Source window or from the Session
Control window.
To open a monitor window from a Source window, click on a monitor toolbar
button or select the desired monitor from the Monitors menu. You can also open
a monitor window by adding a variable to that monitor, in one of the following
ways:
Click the right mouse button on the variable in the Source window, then
select the appropriate monitor from the popup menu.
Double-click the left mouse button on the variable, to add the variable
to the Program monitor.
Click the right mouse button on the variable, press Ctrl+M, and select
the desired monitor from the Monitor Expression dialog.
To open the Breakpoints list window, select Breakpoints->List from the menu
bar, or press Ctrl+X.
To change the focus from a Source window to another window that is already
opened (or minimized), select that window from the Windows menu.
Related Information
Procedures
View Different Source Files
Add Expressions and Variables to a Monitor
ΓòÉΓòÉΓòÉ 1.2. Start or Stop Debugging a Program ΓòÉΓòÉΓòÉ
To start or stop debugging a program, you will need to know how to perform some
of the following subtasks:
Invoke the debugger
Set breakpoints in your program
Step through or run a program
ΓòÉΓòÉΓòÉ 1.2.1. Start Debugging a Compile Unit from a Load Occurrence Breakpoint Dialog ΓòÉΓòÉΓòÉ
You can set a breakpoint in a compile unit that causes execution to stop when
the compile unit is first loaded by your application. The compile unit is
generally loaded by your application the first time a function contained within
the compile unit is called by another function within your application.This
type of breakpoint is called a load occurrence breakpoint.
To set a load occurrence breakpoint, do the following:
1. From the Breakpoints menu of the Session Control or Source windows, or
from the Set menu of the Breakpoints List window, choose Set load
occurrence breakpoint.
2. In the Load Occurrence Breakpoint dialog, enter the name of the compile
unit you want to set the breakpoint in.
3. Click on OK to set the breakpoint and close the Load Occurrence
Breakpoint dialog, or click on Set if you want to set more load
occurrence breakpoints.
When you run your application, execution will stop when the compile unit is
first loaded.
ΓòÉΓòÉΓòÉ 1.2.2. Start Debugging a Compile Unit from the Breakpoints List Window ΓòÉΓòÉΓòÉ
You can start debugging a compile unit from the Breakpoints List window by
setting a line breakpoint in that compile unit, then issuing the Run command.
You can only do this if the compile unit you want to place the breakpoint in
was compiled with debug information. To set a line breakpoint in a compile unit
and then start debugging the compile unit, do the following:
1. Open a Breakpoints List window
2. From the Set menu choose Set line
3. In the Line Breakpoint dialog, from the Source pulldown list choose the
compile unit containing the code you want to debug.
4. In the Line entry field, enter the line number within the source file you
want to place a breakpoint in.
5. Click on the Defer breakpoint check box.
6. Issue the Run command by pressing Ctrl+R.
You can also use a function breakpoint instead of a line breakpoint to
accomplish the same task. Follow the above instructions, but choose Set -> Set
function instead of Set -> Set line, and select the desired function name from
the pulldown list in the breakpoint dialog.
Related Information
Procedures
Set a Deferred Breakpoint
Set a Line Breakpoint
ΓòÉΓòÉΓòÉ 1.2.3. Start Debugging a Compile Unit from the Session Control Window ΓòÉΓòÉΓòÉ
You can use the Session Control window to access a Source window containing the
source for a compile unit you want to debug.
1. In the Session Control window, expand the Components Pane entry for the
compile unit you want to debug.
2. Continue expanding appropriate items in the list until you find the
source file or function you want to debug. If the source file or function
is not listed, you may not have compiled the function with debug
information.
3. Double-click on the source file or function to raise a Source window for
it.
4. Set a line, function, or other breakpoint at an appropriate point in that
source window.
5. Run your program.
Related Information
Procedures
Run a Program
Set Breakpoints
ΓòÉΓòÉΓòÉ 1.3. Set Breakpoints in Your Program ΓòÉΓòÉΓòÉ
You can set breakpoints in your program from a number of windows. See the
following subtasks:
Set breakpoints from the Breakpoints List window
Set breakpoints from a Source window
Set function breakpoints from the Session Control window
ΓòÉΓòÉΓòÉ 1.3.1. Set Breakpoints in the Breakpoints List Window ΓòÉΓòÉΓòÉ
To set breakpoints from the Breakpoints List window, open the window (if it is
not already open), using one of the following methods
1. Type Ctrl+X from any main debugger window or monitor
2. Select List from the Breakpoints menu of the Source window
3. Click on the button in the Source Window
4. Position the cursor in the prefix area, click mouse button 2, and select
List from the popup menu.
Then do the following:
1. From the Breakpoints List window, select the type of breakpoint you want
to set from the Set menu.
2. Enter the information for the breakpoint in the dialog, and click on OK
or press the Enter key.
You can set breakpoints from the Source window and the Session Control window
as well. Unless you want to set multiple breakpoints with the same nonstandard
optional parameters, you may find it easier to use the Source window for
setting line breakpoints, and the Session Control window for setting function
breakpoints. Storage change breakpoints and load occurrence breakpoints can be
set from any of the three windows.
Related Information
Procedures
Set Multiple Breakpoints
Set and Clear Breakpoints from a Source Window
Set Function Breakpoints from the Session Control Window
Concepts
Types of Breakpoints
ΓòÉΓòÉΓòÉ 1.3.2. Set and Clear Breakpoints from a Source Window ΓòÉΓòÉΓòÉ
You can set and clear breakpoints from a Source window in the following ways:
Toggle a breakpoint on or off for a line. There are three ways to do
this:
- Double-click on the prefix area for that line
- Highlight the line using either the up and down cursor keys or the
mouse, then press the space bar
- Highlight the line, then select Breakpoints->Toggle at current line.
From the prefix area, or while the pointer is over a function name, click
on mouse button 2 [note] and select a breakpoint option from the popup
menu
Open a Breakpoints List window, and set or clear the breakpoint from
there
Select a type of breakpoint from the Breakpoints menu, and enter the
appropriate information.
Note: Clearing a breakpoint deletes it, meaning that you must recreate it if
you want to use it again. If you plan to use a breakpoint again later, it is
better to disable the breakpoint instead.
Related Information
Procedures
Enable and Disable Breakpoints
ΓòÉΓòÉΓòÉ 1.3.3. Set Function Breakpoints from the Session Control Window ΓòÉΓòÉΓòÉ
You can set function breakpoints in the Session Control window by either of the
following methods:
Go to the Breakpoints menu and choose Set function breakpoint
Select a function in the Components pane, click mouse button 2 to bring
up a popup menu, and choose Set function breakpoint.
Related Information
Procedures
Set Breakpoints
ΓòÉΓòÉΓòÉ 1.3.4. Set a Deferred Breakpoint ΓòÉΓòÉΓòÉ
A deferred breakpoint is a breakpoint set in a compile unit that is not
currently loaded.
To set a deferred line breakpoint, do the following:
1. Open a Line breakpoint dialog in one of the following ways:
From a Source window or the Session Control window, select
Breakpoints->Set line
From a Breakpoint List window, select Set->Set line.
2. Enter an asterisk (*) in the Executable field, or the name of the load
module if the compile unit is not in the main load module.
3. Enter the line number where you want the breakpoint set
4. Specify any additional information you wish in the Optional Parameters
group box.
5. Check the Defer breakpoint check box.
6. Click on OK or press Enter.
You can set function breakpoints in a similar manner.
Related Information
Procedures
Start Debugging a Compile Unit from a Load Occurrence Breakpoint Dialog
Start Debugging a Compile Unit from the Session Control Window
ΓòÉΓòÉΓòÉ 1.4. Run or Step Through a Program ΓòÉΓòÉΓòÉ
You can use debugger toolbar buttons, accelerator keys, and menu commands to
accomplish the following subtasks:
Run your program
Step through your program
ΓòÉΓòÉΓòÉ 1.4.1. Run a Program ΓòÉΓòÉΓòÉ
After you have set appropriate breakpoints in your program, you are ready to
issue the Run command. The debugger runs the program from the current line to
the first enabled breakpoint it encounters and a Source window displays the
current line. You can then examine the contents of storage, variables, the call
stack, or processor registers; step through your program; or issue the Run
command again to run to the next enabled breakpoint.
Related Information
Procedures
Set Breakpoints
Step through a Program
View Variables, Memory, Registers, and the Stack
ΓòÉΓòÉΓòÉ 1.4.2. Step through a Program ΓòÉΓòÉΓòÉ
Use the Step Over and Step Into commands to step through your program one
statement at a time. For statements that do not contain a subroutine call or
method invocation, these commands work in exactly the same way. The current
statement is executed. Then, if the next statement is on a different line, the
debugger moves the current line in the current Source window to the next
executable line (comment and blank lines are skipped). If the next statement is
on the same line, the debugger does not reposition the current line.
The Step Over command works differently from the Step Into command, for
statements that call subroutines and invoke methods: with function calls:
When you issue a Step Over command, the debugger runs through all
functions called from within the line, the called routine or function,
and execution stops at the next line in the Source window you issued the
Step Over command from. (If the debugger encounters an enabled breakpoint
in a called function, execution stops at that breakpoint.)
When you issue a Step Into command, the debugger stops at the next
statement for which debug information is available. This statement is the
first statement of the called function, if that function was compiled
with debug information. If not, it is the first statement in another
function further down the call, if a function within the call has debug
information. If neither the called function nor any function it calls was
compiled with debug information, the debugger stops at the statement
following the call.
When you are inside a function and want to return to the code that issued the
call, you can use the Step Return command. If the debugger can determine a
return address, it runs the program up to but excluding the statement
immediately after the one containing the call.
ΓòÉΓòÉΓòÉ 1.4.3. Terminate a Debug Session ΓòÉΓòÉΓòÉ
To terminate a debug session and exit the debugger, do one of the following:
Select File->Close debugger from any debugger window that has a File
menu.
Press F3 from any debugger window that is not a dialog
Switch to the Session Control window and use your windowing system's
technique for closing that window. For example, OS/2 and Windows
operating systems, double-click on the upper left corner of the window or
press Alt+F4.
ΓòÉΓòÉΓòÉ 1.5. Debug Variable Contents and Memory ΓòÉΓòÉΓòÉ
Choose from among the following subtasks:
Change the contents of storage
View a location in storage
Add expressions and variables to a monitor
Open a new storage monitor
View variables, memory, registers, and the stack
ΓòÉΓòÉΓòÉ 1.5.1. Change the Contents of Storage, Variables, and Registers ΓòÉΓòÉΓòÉ
To change the contents of storage in a Storage monitor, do the following:
1. Raise or open a Storage monitor (select Storage monitor from the Monitors
menu of the Source or Session Control windows, or press Ctrl+G, or click
on the button)
2. If the address whose contents you want to change is not shown, use the
PageUp and PageDown keys to scroll to that address, or click on an entry
in the address column and enter a new address
3. Double-click on an entry in a data column in the monitor (or click on the
entry and press Enter)
4. Type a value that is valid for the shown representation
5. Press Enter.
To change the contents of a variable in a Local Variables, Program, Private,
or Popup monitor, or a register in the Registers monitor, do the following:
1. Raise or open the appropriate monitor (from the Monitors menu of a Source
window or the Session Control window, or using the appropriate
accelerator key or toolbar button)
2. Double-click on the entry field that shows the contents of the variable
or register you want to change
3. Type a value that is valid for the current representation of that
variable or register
4. Press Enter.
Related Information
Reference
Values that Are Valid for the Current Representation
ΓòÉΓòÉΓòÉ 1.5.1.1. Use the Registers Monitor ΓòÉΓòÉΓòÉ
Here are some of the common tasks you can perform from the Registers monitor:
Change the contents of registers
Change what kinds of registers are displayed
ΓòÉΓòÉΓòÉ 1.5.1.1.1. View the Contents of Registers ΓòÉΓòÉΓòÉ
You may want to view the contents of a single register, or of many registers at
once.
View Contents of a Single Register
If you only want to view the contents of a small number of registers, enter the
names of those registers as expressions in a Monitor Expression dialog and
select what monitor you want them to appear in. For example, if you want to
monitor the EAX register on an Intel machine, do the following:
1. From a Source window, select Monitors->Monitor expression from the menu
bar, or press the Ctrl+M accelerator key, to open a Monitor expression
dialog.
2. Enter the register name as the expression (EAX)
3. Choose what monitor you want the expression to appear in. Do not choose
the storage monitor.
4. Click on the OK button or press Enter.
The register is displayed in the monitor you selected. Note that if the name
of the register corresponds to the name of a variable in your program, the
variable may be displayed instead of the register depending on the monitor you
choose, the current scope, and the scope of the variable.
View Contents of Many Registers at Once
If you want to open a monitor showing the contents of all or most processor
registers, do the following:
1. Raise a Source window or the Session Control window
2. Select Monitors->Registers or click on the pushbutton.
3. A Registers Monitor displays the contents of processor registers for the
current thread.
Related Information
Procedures
Add Expressions and Variables to a Monitor
Change the Contents of Registers
Change Which Registers Are Displayed
Use the Registers Monitor
Concepts
Introduction to the Registers Monitor
ΓòÉΓòÉΓòÉ 1.5.1.1.2. Change Which Registers Are Displayed ΓòÉΓòÉΓòÉ
You can choose what groups of registers are displayed in the Registers monitor
by selecting Options->Display style. In the dialog that appears, select what
items you want to display.
Related Information
Concepts
Introduction to the Registers Monitor
Procedures
Change the Contents of Registers
View the Contents of Registers
Reference
Registers Monitor Split Bars
ΓòÉΓòÉΓòÉ 1.5.1.1.3. Change the Contents of Registers ΓòÉΓòÉΓòÉ
Caution: Changing the contents of registers that affect program flow (for
example, registers used to manipulate the stack) can destabilize the program
you are debugging and may cause it to terminate abnormally.
You can change the contents of most registers in the Registers monitor as
follows:
1. Either double-click on the current value of the register or move the
cursor to that register and press Enter.
2. Type in a new value, and press Enter.
If updating of the register is allowed and your entry can be evaluated to a
value the register supports, the register is updated.
Note: On OS/390, you cannot change the contents of the IAR (Instruction
Address Register) register, which displays the currently executing
instruction's address.
Related Information
Reference
Valid Entries for Registers
Expressions Supported
ΓòÉΓòÉΓòÉ 1.5.2. Add Expressions and Variables to a Monitor ΓòÉΓòÉΓòÉ
From the Source window, you can add a variable or expression to a monitor, so
that you can keep track of how the variable's contents or the expression's
value changes during program execution. You can use any of the following
methods:
Position the pointer over the variable, click mouse button 2 [note], and
select the monitor you want from the popup menu.
Highlight the variable or expression, then select Monitors->Monitor
expression. A dialog opens containing the variable or expression; select
a monitor from there.
Select Monitors->Monitor expression. In the dialog, enter the variable or
expression and choose a monitor.
Double-click on a variable to add it to the Program monitor.
Related Information
Reference
Expressions Supported
ΓòÉΓòÉΓòÉ 1.5.3. Open a New Storage Monitor ΓòÉΓòÉΓòÉ
You can bring up a new Storage monitor in a number of ways:
Click on the toolbar button from a Source window or the Session Control
window.
Select Monitors->Storage from a Source window or the Session Control
window.
Highlight an expression in a Source window, click mouse button 2 [note],
and select Add to storage monitor from the popup menu.
Select Monitors->Monitor expression from a Source window or the Session
Control window, enter the expression you want to monitor, and select the
Storage monitor radio button.
A new storage monitor opens each time you do one of the above, even if you
already opened another storage monitor for the same Source window, variable or
expression.
Related Information
Procedures
Open Other Debugger Windows
Change the Storage Monitor Address Range
ΓòÉΓòÉΓòÉ 1.5.4. View Variables, Memory, Registers, and the Stack ΓòÉΓòÉΓòÉ
Follow one or more of the tasks below:
Add a variable or expression to a monitor so you can view or change its
contents
View variable contents
View storage contents
View the contents of registers
View the contents of the call stack
ΓòÉΓòÉΓòÉ 1.5.4.1. View Variable Contents ΓòÉΓòÉΓòÉ
To view the contents of a variable you have already added to a monitor, do the
following:
1. Raise a window that contains a Windows menu (for example, a Source window
or the Session Control window)
2. Select the monitor you added the variable to from that Windows menu.
3. If necessary, use the scroll bars or PageUp and PageDown keys to scroll
the monitor until the variable is visible.
4. If necessary, change the representation of the variable: select its
contents, click on mouse button 2, and select Next representation from
the popup menu.
To view the contents of a variable you have not yet added to a monitor, do one
of the following:
If the variable is in scope in the current Source window, select
Monitors->Local variables from the menu bar of the Source window to open
a Local variables monitor. This monitor should contain all local
variables that are currently in scope. If the value of the variable you
are looking for is blank, invalid, or incorrect, the variable may not
currently be in scope.
Add the variable to a monitor (see under Procedures below).
Related Information
Procedures
Add Expressions and Variables to a Monitor
Debug Variable Contents and Memory
ΓòÉΓòÉΓòÉ 1.5.4.2. View a Location in Storage ΓòÉΓòÉΓòÉ
To view a particular location in storage (for example, the storage used by a
variable), either select Options->Monitor expression from the Storage monitor,
or open a new Storage monitor from a Source window or the Session Control
window, and specify an expression to monitor. See the Reference section below
for information on what types of expressions the debugger supports.
COBOL: If a variable whose type is other than POINTER is specified, the Storage
monitor opens at the address of that variable. For variables of type POINTER,
the storage monitor opens at the address contained in the variable.
C++: To view the storage for a class object or a variable, specify the address
of the object or variable name by preceding the name with an ampersand (&).
Related Information
Reference
Expressions Supported
Procedures
Change the Contents of Storage, Variables, and Registers
Add Expressions and Variables to a Monitor
Change the Representation of Storage
ΓòÉΓòÉΓòÉ 1.5.4.2.1. Change the Storage Monitor Address Range ΓòÉΓòÉΓòÉ
You can change the address range you want displayed in a Storage monitor to a
specified address. Double-click on an entry in one of the address columns (for
example, the 'Flat' column), or move the cursor to that entry and press Enter;
then enter a new address. You can also scroll through the range using the
cursor keys (including Page Up and Page Down), or using the scrollbar.
If the debugger cannot determine the contents of storage at a particular
location, it displays the contents as a series of question marks (?). This can
occur when you display storage that your program does not own or when the
address range does not point to a valid storage area.
If you want to view the storage associated with a different variable, adding
that variable to a new Storage monitor is easier because the debugger
determines the variable's address in storage for you. You may want to close the
old Storage monitor first if its contents are no longer needed.
Related Information
Procedures
Add Expressions and Variables to a Monitor
Change the Contents of Storage, Variables, and Registers
Change the Representation of Storage
Open a New Storage Monitor
View a Location in Storage
Concepts
Introduction to the Storage Monitor
ΓòÉΓòÉΓòÉ 1.5.4.2.2. Change the Representation of Storage ΓòÉΓòÉΓòÉ
To change the representation of storage in the Storage monitor, do one of the
following:
Select a representation from Options->Display style, OR
Click on the appropriate display style toolbar button: .
The change in representation does not affect any other open storage monitors,
only the one in which you make the change.
Related Information
Procedures
Change the Contents of Storage, Variables, and Registers
Change the Storage Monitor Address Range
ΓòÉΓòÉΓòÉ 1.5.4.3. View the Contents of the Call Stack ΓòÉΓòÉΓòÉ
You can view information for the active functions on a thread's stack. A
function is on the stack from the time it is called until after it returns.
To view stack information for functions, open or raise a Call Stack window in
one of the following ways:
If a Call Stack monitor is already open, access it from the Windows menu
of any debugger window that contains this menu.
Select Monitors->Call stack from a Source or Session Control window, or
press the Ctrl+K accelerator key, or click on the toolbar button.
Related Information
Procedures
Use the Call Stack Window
Concepts
Introduction to the Call Stack Window
ΓòÉΓòÉΓòÉ 1.5.4.4. Use the Call Stack Window ΓòÉΓòÉΓòÉ
You can display functions in the Call Stack window in two orders: the order in
which they were called, and the order in which they will return (in other
words, with the most recently called function on top or on the bottom). To
change the order, click on the Growth Direction button () or select Display
style and change the setting of the Growth direction group box.
To view the code for a function, position the pointer over the line for that
function, and do one of the following:
Select the line and press Enter
Double-click with mouse button 1
Click mouse button 2 [note] and select View from the popup menu
A Source window appears containing the source for the function. If this
function is the current function, the current execution point is highlighted.
Otherwise, the line that called the next innermost function on the call stack
is highlighted.
You can select what type of information is displayed in the Call Stack window
by changing the display style. You can choose to display the program unit
name, call statement number, compilation date/time, and other information.
Related Information
Concepts
Introduction to the Call Stack Window
ΓòÉΓòÉΓòÉ 1.6. Debug Logic and Program Flow ΓòÉΓòÉΓòÉ
To debug logic and program flow, you may need to perform the following
subtasks:
Set, clear, enable, and disable breakpoints
Step through, run, or halt a program
Skip over sections of code using Jump to location commands
View the contents of variables, memory, registers, and the stack.
ΓòÉΓòÉΓòÉ 1.6.1. Set, Clear, Enable, and Disable Breakpoints ΓòÉΓòÉΓòÉ
See the following subtasks:
Set breakpoints
Clear breakpoints
Enable and disable breakpoints
Modify breakpoint characteristics
ΓòÉΓòÉΓòÉ 1.6.1.1. Set Breakpoints ΓòÉΓòÉΓòÉ
You can set breakpoints from the following windows:
Breakpoints List window
Source window
Session Control window (function breakpoints only)
Related Information
Procedures
Set Multiple Breakpoints
Concepts
Types of Breakpoints
Introduction to the Breakpoints List Window
ΓòÉΓòÉΓòÉ 1.6.1.1.1. Set a Line Breakpoint ΓòÉΓòÉΓòÉ
You can set a line breakpoint from a Source window or from the Breakpoints List
window.
There are three ways to set a line breakpoint from the Source window:
1. Make sure the appropriate line is visible in the window (use the scroll
bar or cursor keys to locate it), then double-click on the line number in
the prefix area of the line.
2. Type the line number in the source window. A Line number dialog opens up.
The line number you entered is placed in the dialog entry field. Click on
the the Breakpoint button.
3. Select Breakpoints->Set line from the menu bar, and fill in appropriate
fields in the resulting Line breakpoint dialog box as described below for
the Breakpoints List window.
To set a line breakpoint in a Breakpoints List window, do the following:
1. Select Set->Line from the menu bar.
2. In the resulting Line breakpoint dialog box, enter the line number and
source file you want to place the breakpoint in.
3. Enter other conditions for your breakpoint, such as the frequency, if you
like.
Related Information
Procedures
Set Breakpoints
Set Breakpoints in the Breakpoints List Window
Set and Clear Breakpoints from a Source Window
Concepts
Types of Breakpoints
ΓòÉΓòÉΓòÉ 1.6.1.1.2. Set Multiple Breakpoints ΓòÉΓòÉΓòÉ
You can set several breakpoints with the same optional parameters from a Type
Breakpoint dialog, where Type corresponds to the type of breakpoint (Line,
Function, Storage change, Load occurrence). To do this, follow these steps:
1. From the breakpoint dialog, enter the information for the first
breakpoint. Change any fields in the Optional Parameters section of the
window, as desired.
2. Click on Set. The settings are saved for the current breakpoint.
3. For each additional breakpoint, enter only the changed information (for
example, the new line number, new function name, new address), and again
click on Set.
4. After you have set the last breakpoint, click on Cancel to dismiss the
dialog.
Related Information
Procedures
Set Breakpoints
ΓòÉΓòÉΓòÉ 1.6.1.2. Delete Breakpoints ΓòÉΓòÉΓòÉ
To delete all breakpoints at once, select Edit->Delete all from the Breakpoints
List window. To delete individual breakpoints, position the pointer over the
desired breakpoint, click on mouse button 2, and select Delete.
When you delete a breakpoint, all information about it is lost. If you want to
temporarily deactivate a breakpoint and activate it later, you should disable
the breakpoint instead.
Related Information
Procedures
Enable and Disable Breakpoints
ΓòÉΓòÉΓòÉ 1.6.1.2.1. Delete All Breakpoints ΓòÉΓòÉΓòÉ
You can delete all breakpoints for your program from the Breakpoints List
window in three ways:
Click on the toolbar button
Select Delete all from the Edit menu
Position the pointer on a breakpoint in the list, click mouse button 2,
and select Delete all from the popup menu.
Once you have deleted all breakpoints, all information on them is lost. If you
want to temporarily prevent all breakpoints from stopping execution, but you
may need to activate them later, disable them instead, by selecting
Edit->Disable all.
Related Information
Procedures
Enable and Disable Breakpoints
ΓòÉΓòÉΓòÉ 1.6.1.3. Enable and Disable Breakpoints ΓòÉΓòÉΓòÉ
You can disable a breakpoint so that it does not stop execution, and then later
enable it again. The advantage of disabling a breakpoint instead of deleting it
is that it is easier to enable a breakpoint than to recreate it. The debugger
lets you:
Enable breakpoints one at a time
Disable breakpoints one at a time
Enable all breakpoints at once
Disable all breakpoints at once.
Related Information
Procedures
Delete Breakpoints
Set Breakpoints
ΓòÉΓòÉΓòÉ 1.6.1.4. Modify Breakpoint Characteristics ΓòÉΓòÉΓòÉ
Note: Modifying breakpoints is not supported for OS/390 debugging. You can
still enter values in the dialog, however when you click on OK or Set, a popup
error message displays. To modify breakpoint characteristics for OS/390
debugging, delete the breakpoint in question and add it again with the desired
characteristics.
You can change the following characteristics of a breakpoint:
Which threads the breakpoint applies to
How often the debugger should skip the breakpoint (the frequency)
You can also change the Required parameters fields for a breakpoint, which
amounts to deleting the existing breakpoint and setting a new one.
To change a breakpoint's characteristics, select the breakpoint in the
Breakpoints List window and choose Edit->Modify, or place your pointer over
the breakpoint, click mouse button 2, and select Modify.
A Type Breakpoint window opens, where Type corresponds to the type of
breakpoint (Line, Function, Storage change, Load occurrence), with the current
settings for the breakpoint already placed in the window's fields. For
information on individual fields within each window, see that window's help.
Related Information
Procedures
Set a Deferred Breakpoint
ΓòÉΓòÉΓòÉ 1.6.2. Skip over Sections of Code ΓòÉΓòÉΓòÉ
You can change the current execution point in a debugging session to another
location in the current Source window, so that certain lines are executed
again, or are skipped over when they otherwise would not be. From within the
Source window containing the current execution point, do the following:
1. Scroll to the line number you want to jump to, if it is not already
visible.
2. Issue the Jump to location command by doing one of the following:
Click on the prefix area for the line, click mouse button 1, and
select Jump to location from the popup menu
Select the line, then select Run->Jump to location from the menu bar
Select the line, then press the N key, which is the accelerator for
the Jump to location command.
Note that using Jump to location can cause unpredictable results if you jump
outside the current function, jump over code that has side-effects (for
example, calls to functions whose results are assigned to variables, or
functions that change the contents of variables passed by reference), or jump
into the middle of a block such as a for loop.
ΓòÉΓòÉΓòÉ 2. Concepts Help for Debugger ΓòÉΓòÉΓòÉ
The Debugger Online Help is divided into four types of information:
Procedures - how to perform a specific task or set of tasks
Reference - technical information you may need to understand how to
perform a task
User Interface - context-sensitive help pages displayed when you press F1
from within the debugger
Concepts - overview information you may need to understand basic
principles of debugging or components of the debugger interface
Concepts help is organized hierarchically; see the following main topics:
Main debugger windows
Monitors
ΓòÉΓòÉΓòÉ 2.1. Main Debugger Windows ΓòÉΓòÉΓòÉ
You can get to help on the following debugger windows from here:
Source Window
Call Stack Window
Breakpoint List Window
Session Control Window
See also the following main help pages:
Dialogs
Monitor Windows
Other Help Topics
ΓòÉΓòÉΓòÉ 2.1.1. Introduction to the Source Window ΓòÉΓòÉΓòÉ
The Source window displays the source code for the program you are debugging.
You can either step through or run your program from the Source window. A step
command lets you step through your program, usually one statement at a time.
Step commands are useful for monitoring logic flow, and for seeing how
variables, storage, registers, or the stack are affected by each line that you
step through. The Run command runs your program up to the next breakpoint, or
until an exception that is not handled occurs, or until the program ends.
Breakpoints are markers you place in your program to tell the debugger to stop
whenever execution reaches that point. For example, if a particular statement
in your program is causing problems, you could set a breakpoint on the line
containing the statement, then run your program. Execution stops at the
breakpoint, before the statement is executed, and you can check the contents of
variables, registers, storage, and the stack, then either step over the
statement to see how the problem arises, or jump over the statement to
temporarily circumvent the problem.
Related Information
Procedures
Run a Program
Run or Step Through a ProgramStep through a Program
Set and Clear Breakpoints from a Source Window
Reference
When You Start Debugging
Problems Getting a Source View
Prefix Area
ΓòÉΓòÉΓòÉ 2.1.2. Introduction to the Call Stack Window ΓòÉΓòÉΓòÉ
When one function calls another, information about the calling function is
placed on the stack for the executing thread. The debugger examines the stack
and the processor registers to determine all functions that have been called
for that thread, and lists these functions in the Call Stack window.
Each Call Stack window displays information for a single thread. The thread
number is indicated in the window title.
Related Information
Procedures
Use the Call Stack Window
ΓòÉΓòÉΓòÉ 2.1.3. Introduction to the Breakpoints List Window ΓòÉΓòÉΓòÉ
Use the Breakpoints List window to view breakpoints for your program, delete
them, or add new ones.
Related Information
Procedures
Set Breakpoints
Delete Breakpoints
Enable and Disable Breakpoints
Modify Breakpoint Characteristics (not supported on OS/390)
View Popup Choice
Reference
Breakpoints List Popup Menu
ΓòÉΓòÉΓòÉ 2.1.3.1. Types of Breakpoints ΓòÉΓòÉΓòÉ
The debugger supports the following types of breakpoints:
Statement breakpoints are triggered before a statement at a particular
point is executed.
Function breakpoints are triggered when the function they apply to is
reached.
Storage change breakpoints are triggered when the storage within a
particular address range is written to.
Load occurrence breakpoints are triggered when a DLL or dynamically
loaded module is loaded into an application. This happens the first time
a reference is made to a function within the DLL or dynamically loaded
module.
Related Information
Procedures
Set Breakpoints
ΓòÉΓòÉΓòÉ 2.1.4. Introduction to the Session Control Window ΓòÉΓòÉΓòÉ
The Session Control window is the control window of the debugger, and is
displayed during the entire debugging session. It contains a status line that
indicates what the debugger is doing (for example, Ready).
The window is divided into two panes. The left pane, called the Threads pane,
shows the active threads for the program, while the right pane, called the
Components pane, shows the list of object files. You can resize these panes
with the mouse by dragging the split bar between them to the left or right.
Use the mouse or the cursor left and right keys to shift the focus between the
panes.
You can expand the items in these panes by clicking on the '+' to their left,
and you can collapse them by clicking on the '-'.
Related Information
Reference
Using the Threads Pane
Using the Components Pane
ΓòÉΓòÉΓòÉ 2.2. Monitors ΓòÉΓòÉΓòÉ
You can view help on the following debugger monitor windows:
Registers Monitor
Storage Monitor
Monitor Expression Dialog
Popup Monitor
Private Monitor
Program Monitor
Local Variables Monitor
Help is also available on the following monitor-related topics:
Popup Menus for Private and Program Monitors
Differences Between the Program and Private Monitors
See also the following main help pages:
Main Debugger Windows
Dialogs
Other Help Topics
ΓòÉΓòÉΓòÉ 2.2.1. Introduction to the Program Monitor ΓòÉΓòÉΓòÉ
You can monitor variables and expressions from Source windows in the Program
monitor. This monitor is not associated with any particular Source window, and
remains open until you close it directly or exit the debugger. Use it to
monitor global variables or variables you want to see at all times during your
debugging session.
You can open the Program monitor from a Source window by adding a variable or
expression to the program monitor.
From within the Program monitor, you can select one or more expressions or
variables, and access a popup menu to apply changes to them. For example, you
can delete an expression from the monitor, change its representation, or edit
its contents.
Expressions and variables that have a '+' on their left can be expanded, and
those with a '-' can be collapsed. Arrays and C++ class objects, for example,
are displayed by default in expanded format, with entries both for the array
and for elements within it. To collapse the list of elements, or to expand a
collapsed list, double-click on the '+' or '-', or place the cursor on that
line and press the Enter key.
C++ only: Pointers are displayed with a '>' on their left. You can change an
array or class object to pointer representation by dereferencing it. You can
display the value of the pointer, or the start of the memory it points to, by
choosing a different representation for it.
Related Information
Procedures
Add Expressions and Variables to a Monitor
ΓòÉΓòÉΓòÉ 2.2.2. Introduction to the Private Monitor ΓòÉΓòÉΓòÉ
You can monitor variables and expressions from a given Source window in a
Private monitor, which is associated with only that Source window. Private
monitors help you keep track of local variables and expressions in programs
with multiple compile units. They are particularly useful in cases where the
number of variables or expressions is large, or where variables with the same
name appear in different compilation units.
You can open a Private monitor for a Source window by adding an expression or
variable to the Private monitor from that Source window.
From within a Private monitor, you can select one or more expressions or
variables, and access a popup menu to apply changes to them. For example, you
can delete an expression from the monitor, change its representation, or edit
its contents.
Expressions and variables that have a '+' on their left can be expanded, and
those with a '-' can be collapsed. Arrays and C++ class objects, for example,
are displayed by default in expanded format, with entries both for the array
and for elements within it. To collapse the list of elements, or to expand a
collapsed list, double-click on the '+' or '-', or place the cursor on that
line and press the Enter key.
C++ only: Pointers are displayed with a '>' on their left. You can change an
array or class object to pointer representation by dereferencing it. You can
display the value of the pointer, or the start of the memory it points to, by
choosing a different representation for it.
Related Information
Procedures
Add Expressions and Variables to a Monitor
ΓòÉΓòÉΓòÉ 2.2.3. Differences between Program and Private Monitors ΓòÉΓòÉΓòÉ
The Program and Private monitors are very similar, but have the following
differences:
The Program monitor can be used to monitor all variables, while a Private
monitor is associated with a single Source window.
The Program monitor remains open at all times unless you close it or exit
the debugger. A Private monitor closes whenever the Source window it is
associated with closes, and is hidden whenever its Source window becomes
inactive (for example, when a statement in that Source window returns
control to code in another Source window).
Because a Private monitor is associated with a specific Source window,
whose focus is raised whenever you select the monitor, it does not have a
Windows menu.
Related Information
Procedures
Add Expressions and Variables to a Monitor
Debug Variable Contents and Memory
View Variable Contents
ΓòÉΓòÉΓòÉ 2.2.4. Introduction to the Local Variables Monitor ΓòÉΓòÉΓòÉ
You can monitor variables within the current scope of a Source window from the
Local Variables monitor. This monitor is associated with a particular thread,
and closes automatically when that thread terminates. It is updated, after each
Step or Run command, to show what variables are currently in scope, and what
the contents of those variables are.
To open a Local Variables monitor for a given thread, highlight that thread in
the Threads pane of the Session Control window, or raise the Source window for
that thread; then choose Monitors->Local variables.
From within a Local Variables monitor, you can select one or more variables,
and access a popup menu to apply changes to them. For example, you can delete a
variable from the monitor, change its representation, or edit its contents.
Expressions and variables that have a '+' on their left can be expanded, and
those with a '-' can be collapsed. Arrays and C++ class objects, for example,
are displayed by default in expanded format, with entries both for the array
and for elements within it. To collapse the list of elements, or to expand a
collapsed list, double-click on the '+' or '-', or place the cursor on that
line and press the Enter key.
C++ only: Pointers are displayed with a '>' on their left. You can change an
array or class object to pointer representation by dereferencing it. You can
display the value of the pointer, or the start of the memory it points to, by
choosing a different representation for it.
Related Information
Reference
Private Monitor
Program Monitor
Popup Monitor
ΓòÉΓòÉΓòÉ 2.2.5. Introduction to the Registers Monitor ΓòÉΓòÉΓòÉ
The Registers monitor shows the contents of processor registers for a
particular thread in your program. If you are debugging multiple threads, you
can display a separate Registers monitor for each thread. Although all threads
share the same set of registers, the operating system saves the register
contents of each thread as the thread is suspended, and restores that thread's
processor contents when the thread resumes.
ΓòÉΓòÉΓòÉ 2.2.6. Introduction to the Storage Monitor ΓòÉΓòÉΓòÉ
The Storage monitor lets you view and update the contents of storage areas used
by your program. You can do the following:
Specify a variable, array, class object (C++ only), expression, or
storage address to view.
Change the address range to view
Modify the contents of storage
Change the representation the debugger uses to display storage, for
example, from hexadecimal to floating-point
You can open a new Storage monitor from a Source window or from the Session
Control window.
The title of each Storage monitor includes the variable name or address range
whose contents the window displays, as well as the current representation for
the window.
Related Information
Procedures
View a Location in Storage
Change the Storage Monitor Address Range
Change the Contents of Storage, Variables, and Registers
Change the Representation of Storage
Open a New Storage Monitor
ΓòÉΓòÉΓòÉ 2.3. Expressions ΓòÉΓòÉΓòÉ
For information on what expressions you can enter in the Expression entry field
of the Monitor Expression dialog or the Monitor Expression in Storage dialog,
see the section on supported expressions for the language you are debugging:
C++
COBOL
ΓòÉΓòÉΓòÉ 2.4. Stopping Thread ΓòÉΓòÉΓòÉ
A stopping thread is the thread that caused the program being debugged to stop.
ΓòÉΓòÉΓòÉ 2.5. Other Help Topics ΓòÉΓòÉΓòÉ
You can get to the following debugger help topics from here:
Common Menu Choices
Toolbar Buttons
Expressions Supported
Toolbar Short Cut Menu
Environment Variables
Search Order
See also the following main help pages:
Main Debugger Windows
Dialogs
Monitor Windows
Debugger Help Home Page
ΓòÉΓòÉΓòÉ 2.5.1. Record of Directories ΓòÉΓòÉΓòÉ
The record of directories is a cumulative list of all directories you have
entered in source path dialog boxes that opened when the debugger could not
locate a source file. This list is only cumulative for the duration of the
debugger session; when you exit the debugger, the list is not saved.
The debugger assumes that any directory in the record of directories may be on
either the debugger machine or the debuggee machine.
ΓòÉΓòÉΓòÉ 3. Reference Help for Debugger ΓòÉΓòÉΓòÉ
The Debugger Online Help is divided into four types of information:
Procedures - how to perform a specific task or set of tasks
Reference - technical information you may need to understand how to
perform a task
User Interface - context-sensitive help pages displayed when you press F1
from within the debugger
Concepts - overview information you may need to understand basic
principles of debugging or components of the debugger interface
Reference help is organized hierarchically; see the following main topics:
When you start debugging
Debugging threads
Debugger options
Environment variables
Expressions supported
Problems Getting a Source View
ΓòÉΓòÉΓòÉ 3.1. When You Start Debugging ΓòÉΓòÉΓòÉ
The first time you debug a program, the debugger raises the following windows:
A Source window. This window contains the source code of the compile unit
that contains the entry point for your program. If that compile unit was
not compiled with the TEST option, the Source window is not displayed.
The Session Control window. Use this window to access other windows, to
control the debugging of threads and functions, and to perform various
debugger commands. (Only a single thread is supported on COBOL programs.)
The DEBUG_LANG environment variable sets the dominant language for a debugging
session. The dominant language affects certain terminology (for example,
whether the C++ term function or the COBOL term entry point is used) in both
the user interface and the help. It also affects what choices are available on
certain dialogs and menus. The setting of DEBUG_LANG overrides the language of
the compilation unit being debugged; for example, if DEBUG_LANG=COBOL and you
step into a C++ function, the debugger's appearance continues to reflect a
dominant language of COBOL. Only the COBOL choice is available for debugging
OS/390 programs.
DEBUG_LANG=CPP The debugger runs up to the start of main.
DEBUG_LANG=COBOL The debugger runs up to the first debuggable statement in the
application. If no part of the application was compiled and linked
with debug information, the debugger displays a Source Filename
dialog, and ignores any file name you enter. You can then press
Cancel; only the Session Control window is displayed. From here you
issue a Run command and the program will run to completion.
The debugger starts after program initialization but before static (C++) or
symbolic (COBOL) variables have been initialized. This means that you cannot
view the contents of variables until you have performed a step or run.
When you start debugging a program for the first time, no variables or
expressions are being monitored. During the debug session, you may add
variables or expressions to a local variables monitor. When you exit the
debugger, local variables and expressions are saved in the program profile,
and will be activated the next time you debug this program.
ΓòÉΓòÉΓòÉ 3.1.1. Stepping and Functions ΓòÉΓòÉΓòÉ
In a line that contains multiple calls, you can choose to step over all the
calls, or step through the calls individually. Given a complex C++ call such as
func1( func2(), func3() );, you can do the following:
Step over the entire line with a single Step Over command.
Step through each called function with a series of Step Into commands.
You can then step through the function, or, to return to the original
statement so that you can step into the next function, issue a Step
Return command.
You can also use a combination of step commands and function breakpoints to
more finely control which functions called from a given line are stepped into
and which are stepped over.
Related Information
Procedures
Set and Clear Breakpoints from a Source Window
ΓòÉΓòÉΓòÉ 3.2. Debugger Options ΓòÉΓòÉΓòÉ
The idbugd command on the workstation supports the following options:
-v Display connection information. The default is not to display this
information.
-qdebugger=<debugger name> The debugger that the daemon will invoke. The
default is the name of the daemon without the last letter. For
example, if the daemon name is idbugd, the default debugger is
idbug.
-qservice=<service name> The service name that is used by the daemon to get
the port number. The default is the name of the daemon without the
last letter.
-qport=<port number> The port number that the daemon listens to for incoming
requests. If you do not specify a port, the daemon looks up the port
number for the specified service from the system services file on
the workstation (for example the file \etc\services).
ΓòÉΓòÉΓòÉ 3.3. Compiler Options on OS/390 ΓòÉΓòÉΓòÉ
If you want to debug your program on OS/390, you must compile and link it as
follows:
Compile with the TEST option.
Link an MVS load module.
For further details on the required compilation and linking options, see the
Debug Tool User's Guide and Reference
ΓòÉΓòÉΓòÉ 3.4. Environment Variables ΓòÉΓòÉΓòÉ
The debugger uses the following environment variables. If you want to place
multiple entries in any of the variables that contain path names, separate the
entries with a semicolon.
DEBUG_LANG
DEBUG_NUMBEROFELEMENTS
DEBUG_REMOTE_SEARCH_PATH
DEBUG_TAB
DEBUG_TABGRID
DPATH
LIBPATH (OS/2 only)
HELP
PATH
You should also ensure that the Debug Tool load library is available. See the
Debug Tool User's Guide for more information.
Related Information
Procedures
Set Environment Variables for the Debugger
ΓòÉΓòÉΓòÉ 3.4.1. DEBUG_LANG Environment Variable ΓòÉΓòÉΓòÉ
The DEBUG_LANG environment variable sets the dominant language for a debugging
session. The dominant language affects certain terminology (for example,
whether the C++ term function or the COBOL term entry point is used) in both
the user interface and the help. It also affects what choices are available on
certain dialogs and menus.
The setting of DEBUG_LANG overrides the language of the compile unit being
debugged; for example, if DEBUG_LANG=COBOL and you step into a C++ function,
the debugger's appearance continues to reflect a dominant language of COBOL.
Available choices are:
CPP The dominant language is C++. If DEBUG_LANG is not set, this is the
default.
COBOL The dominant language is COBOL. The VisualAge for COBOL product sets
DEBUG_LANG to COBOL at installation.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéValue of DEBUG_LANG ΓöéCPP ΓöéCOBOL Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé'Entry' vs. 'Function' ΓöéThe term 'function' is ΓöéThe term 'entry' is used.Γöé
Γöéused in dialogs and Γöéused Γöé Γöé
Γöéwindows to indicate a C++Γöé Γöé Γöé
Γöéfunction or a COBOL or Γöé Γöé Γöé
ΓöéPL/I entry point Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHeap checking ΓöéYou can perform heap ΓöéHeap checking is not Γöé
Γöé Γöéchecks using Run->Check Γöéavailable. Γöé
Γöé Γöéheap when stopping Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Debugger settings, such as default fonts, changed when one dominant
language is in effect are not applied to the debugger when the other
dominant language is in effect
Step commands in a source view may behave differently in certain
situations.
Related Information
Reference
Environment Variables
ΓòÉΓòÉΓòÉ 3.4.2. DEBUG_NUMBEROFELEMENTS Environment Variable ΓòÉΓòÉΓòÉ
The DEBUG_NUMBEROFELEMENTS environment variable can be set to an integer value,
to tell the debugger the maximum number of elements to display for an array,
structure, or object in a Program, Private, Local Variables, or Popup monitor.
Related Information
Reference
Environment Variables
ΓòÉΓòÉΓòÉ 3.4.3. DEBUG_REMOTE_SEARCH_PATH Environment Variable ΓòÉΓòÉΓòÉ
The DEBUG_REMOTE_SEARCH_PATH environment variable is used to search partitioned
data sets on the remote host for a requested source file. If more than one PDS
is specified, the names must be separated by a semicolon.
Related Information
Reference
Environment Variables
Search Order
ΓòÉΓòÉΓòÉ 3.4.4. DEBUG_TAB Environment Variable ΓòÉΓòÉΓòÉ
The DEBUG_TAB environment variable affects how the debugger expands tab
characters in a Source window, when DEBUG_TABGRID is set to 0 (or is not set).
The value for this variable is an integer, indicating the number of spaces to
convert a tab character into.Unlike DEBUG_TABGRID, DEBUG_TAB does not cause the
debugger to place tabbed information in specific columns; it simply results in
each tab in the displayed files being converted to the indicated number of
spaces.
Related Information
Reference
DEBUG_TABGRID Environment Variable
ΓòÉΓòÉΓòÉ 3.4.5. DEBUG_TABGRID Environment Variable ΓòÉΓòÉΓòÉ
The DEBUG_TABGRID environment variable affects how the debugger uses tab
characters to align tabs to columns in a Source window. The value of this
variable is an integer indicating the starting position and frequency of the
tab. For example, if you set DEBUG_TABGRID=6, the debugger sets tab stops at 6,
12, 18, 24, and so on. If DEBUG_TABGRID is set to a nonzero value, the setting
of DEBUG_TAB has no effect.
Related Information
Reference
Environment Variables
DEBUG_TAB Environment Variable
ΓòÉΓòÉΓòÉ 3.4.6. LIBPATH Environment Variable (OS/2 Only) ΓòÉΓòÉΓòÉ
The LIBPATH environment variable tells the debugger where to look for debugger
DLLs on the workstation. The LIBPATH environment variable must be set from
within CONFIG.SYS; you cannot set it using the SET command.
Related Information
Reference
Environment Variables
ΓòÉΓòÉΓòÉ 3.4.7. Other Environment Variables ΓòÉΓòÉΓòÉ
The debugger also uses the following standard environment variables on the
Windows or OS/2 workstation. These variables all contain one or more directory
names separated by semicolons:
PATH
The PATH environment variable is used to locate the debugger executable , as
well as any other executables being run on the workstation. On Windows
platforms the PATH environment variable is also used to locate DLLs.
DPATH
The DPATH environment variable is used to locate message files, which the
debugger needs to display messages and the text of menus and dialogs.
HELP
The HELP environment variable is used to locate the online help files for the
debugger.
Related Information
Reference
Environment Variables
ΓòÉΓòÉΓòÉ 3.4.8. Search Order ΓòÉΓòÉΓòÉ
The debugger searches for C++ source files for an OS/390 debuggee program in
the following locations:
1. The specified PDS or sequential file on the host
2. The current directory of the debugger machine
3. The record of directories on the debugger machine
4. Paths in the DEBUG_PATH environment variable on the debugger machine
If the source file cannot be located in any of the above directories, a dialog
box opens requesting the path name for the source file. The path name you
enter is searched for on the debugger machine. This path name is also added to
the record of directories to be used in future searches.
Related Information
Concepts
Record of Directories
ΓòÉΓòÉΓòÉ 3.5. Expressions Supported ΓòÉΓòÉΓòÉ
The expressions you can enter in an expression entry field (for example, in a
Monitor Expression dialog or a Set breakpoint dialog) are different for each
language the debugger supports. See the following for more information:
Supported C++ expressions
Supported COBOL expressions
Related Information
Concepts
Expressions
ΓòÉΓòÉΓòÉ 3.5.1. COBOL Expressions Supported ΓòÉΓòÉΓòÉ
You can enter the following types of COBOL expressions in an expression entry
field:
Variable: A variable used in your program. The following can be specified with
COBOL variables:
Group qualification (for example, A OF B OF C)
Table subscripting (for example, A(1, 2, 3)) Note that only constants can
be specified for array indices (no variables or operators).
Reference modification (for example, A(1:2)) Note that reference
modification is not allowed for group names. Also, only constants can be
specified for the reference modification begin and length values (no
variables or operators).
Notes
1. COBOL condition names cannot be specified.
2. Operators (for example, A + B) are not allowed.
3. The value displayed for COBOL index names and data items is the actual
value in storage. For example, if INM is an index name for a
one-dimensional table whose elements are two bytes wide and INM is set to
reference the third element in the table, the value shown by the debugger
(i.e., the value in storage) would be 4.
Constant: The constant can be one of the following types:
Fixed or floating-point constant
A string constant, enclosed in double or single quotation marks (for
example, 'string' or 'string')
Hexadecimal constant (for example, X'0041014D'). Note that the number of
bytes represented by the hexadecimal constant must be equal to the number
of bytes of the corresponding variable in assignment or comparison.
Note: In a COBOL constant, the period is always used as the decimal point
(i.e., the DECIMAL-POINT IS COMMA clause is ignored by the debugger). COBOL
figurative constants are not supported by the debugger.
Register: Any of the processor registers that can be displayed in the
Registers Monitor. In the case of conflicting names, program variable names
take precedence over register names.
Expressions Supported in Conditional Breakpoints
Expressions supported by the expression conditions in conditional breakpoints
are further limited in the following ways:
Only the relation condition is supported, with the following operators:
>, <, =, >=, <=, NOT >, NOT <, NOT =
The left operand must be a variable and the right operand must be a
constant. For example, var1 > 5 is valid, while 5 < var1 and var1 > var2
are not.
The hexadecimal constant is allowed only with POINTER variables.
Nonnumeric and external floating point variables must be compared with a
nonnumeric literal.
Zoned decimal variables must be compared with a numeric constant.
Complex conditions and group comparisons are not allowed.
Comparison is locale-based, independent of any COLLSEQ compile option or
collating sequence specification within the program.
ΓòÉΓòÉΓòÉ 3.5.2. C++ Expressions Supported ΓòÉΓòÉΓòÉ
The expression language that is supported by the debugger for C++ programs is a
subset of the C/C++ language. You can only monitor expressions with:
A supported operand type
A supported operator
A supported typecasting operation
ΓòÉΓòÉΓòÉ 3.5.2.1. C++ Supported Data Types ΓòÉΓòÉΓòÉ
You can monitor an expression that uses the following typecasting operations
only:
8-bit signed byte
8-bit unsigned byte
16-bit signed integer
16-bit unsigned integer
32-bit signed integer
32-bit unsigned integer
Single-precision floating-point floating-point
Double-precision floating-point floating-point
80-bit floating-point (OS/390 only)
Pointers
User-defined types
These data types include int, short, char and so on.
ΓòÉΓòÉΓòÉ 3.5.2.2. C++ Supported Expression Operands ΓòÉΓòÉΓòÉ
You can monitor an expression that uses the following types of operands only:
Operand Definition
Variable A variable used in your program.
Constant The constant can be one of the following types:
Fixed or floating-point constant within the ranges supported by
the system the debuggee program is running on.
A string constant, enclosed in double quotation marks (for
example, 'mystring')
A character constant, enclosed in single quote marks (for
example, 'x')
Register Any of the processor registers that can be displayed in the
Registers Monitor. In the case of conflicting names, program
variable names take precedence over register names. For conversions
that are done automatically when the registers display in mixed-mode
expressions, general-purpose registers are treated as unsigned
arithmetic items with a length appropriate to the register.
If you monitor an enumerated variable, a comment appears to the right of the
value. If the value of the variable matches one of the enumerated types, the
comment contains the name of the first enumerated type that matches the value
of the variable. If the length of the enumerated name does not fit in the
monitor, the contents appear as an empty entry field.
The comment (empty or not) lets you distinguish between a valid enumerated
value and an invalid value. An invalid value does not have a comment to its
right.
You cannot update an enumerated variable by entering an enumerated type. You
must enter a value or expression. If the value is a valid enumerated value,
the comment to the right of it is updated.
Bit fields are supported for C/C++ compiled code only. You can display and
update bit fields, but you cannot use them in expressions. You cannot look at
variables that have been defined using the #define preprocessor directive.
ΓòÉΓòÉΓòÉ 3.5.2.3. C++ Supported Expression Operators ΓòÉΓòÉΓòÉ
You can monitor an expression that uses the following operators only:
Operator Coded as
Global scope resolution ::a
Class or namespace scope resolution a::b
Subscripting a[b]
Member selection a.b or a->b
Size sizeof a or sizeof (type)
Logical not !a
Ones complement ~a
Unary minus -a
Unary plus +a
Dereference *a
Type cast (type) a
Multiply a * b
Divide a / b
Modulo a % b
Add a + b
Subtract a - b
Left shift a << b
Right shift a >> b
Less than a < b
Greater than a > b
Less than or equal to a <= b
Greater than or equal to a >= b
Equal a == b
Not equal a != b
Bitwise AND a & b
Bitwise OR a | b
Bitwise exclusive OR a ^ b
Logical AND a && b
Logical OR a || b
ΓòÉΓòÉΓòÉ 3.5.3. Values that Are Valid for the Current Representation ΓòÉΓòÉΓòÉ
When you are entering a value in an entry field such as a register in the
Registers monitor, a column of storage in the Storage monitor, or the contents
of a variable in another monitor, the debugger checks that the value you enter
is valid for the current representation of that column or entry field.
A value is valid for the current representation if it contains only the
characters used for that representation, and does not exceed the length of the
variable or register involved. For example, if you want to change the contents
of storage, and the Content style setting for a particular Storage monitor is
32-bit integer, the value you enter must be a valid 32-bit integer, not a
floating-point value or other value.Or, if you want to change the contents of a
character string and the current representation is as a text string, you must
enter a new string in double quotes, and the length of the string must not
exceed the declared array size.
Related Information
Reference
Expressions Supported
Procedures
Change the Contents of Storage, Variables, and Registers
ΓòÉΓòÉΓòÉ 3.5.4. Valid Addresses and Expressions ΓòÉΓòÉΓòÉ
Here are some examples of addresses or expressions you can enter in the Address
or expression field of the Set Storage Change dialog:
MyVariable (C++) : The address pointed to by MyVariable, if such a variable
exists in your program, and if its value is a valid storage address
(for example, if the variable is a pointer to another variable or to
an offset within an array).
MyVariable (COBOL or PL/I) If MyVariable is of type POINTER, the contents of
the variable are used as the address; for other variables, the
address of the variable is used.
&MyVariable (C++) The storage of the variable MyVariable.
A1FCC The hex address A1FCC, unless you have a variable declared as A1FCC,
in which case it is treated the same as MyVariable above.
0xA1FCC The hex address A1FCC.
RegisterName The name of a processor register on the system the debuggee
program is running on. If the expression evaluates to a processor
register, that register's contents are used in place of the register
name.
X'000A1FCC' (COBOL) The hex address A1FCC. Note that if you use this syntax,
you must specify an even number of hex digits. For the above value
you could specify 0xA1FCC or X'0A1FCC', but not X'A1FCC'.
Related Information
Reference
Expressions Supported
ΓòÉΓòÉΓòÉ 3.6. Problems Getting a Source View ΓòÉΓòÉΓòÉ
Sometimes when debugging, you may find that the Source window is not available,
or that the Source window does not appear to match the program you are
debugging (for example, step commands behave erratically). There are several
likely reasons for such problems:
The code you are debugging was compiled with debug information, but the
debugger cannot locate the source code
The source has been downloaded to your workstation but is not pointed to
by the DEBUG_LOCAL_PATH environment variable.
Related Information
Reference
Debugger Cannot Find Source Code
Debugger Cannot Find Source Files on Workstation
Environment Variables
ΓòÉΓòÉΓòÉ 3.6.1. Debugger Cannot Find Source Code ΓòÉΓòÉΓòÉ
You may not be able to open a Source window for an object, even though the code
was compiled with debug information, if the debugger cannot find the source
code for it. When you start debugging such a program, or when execution lands
in a part of the program that was compiled with debug information but the
debugger cannot find the source code for it, the debugger opens a Source
Filename dialog. In this dialog you can enter the name of the data set or PDS
and member containing the source file. If you choose Cancel when this dialog
appears, no Source window displays for the object. If the source code has been
moved to another data set, select View->Change text, and enter the name of the
data set, including the PDS member name, in the Change text file dialog.(The
debugger searches for source files using a search path based on environment
variables. If you are having problems getting a Source window for an object,
check that the appropriate variables are properly set.
If you choose Cancel, only the Session Control window will display. From there
you can run your application or exit the debugger. If your application contains
calls to routines that have debug data and have source code available, you can
have the debugger stop at the entry to these routines. To do this from the
Session Control window, you can set a deferred breakpoint for individual
routines or you can have the debugger stop at entry to all routines.
Related Information
Reference
Environment Variables
Procedures
Set a Deferred Breakpoint
ΓòÉΓòÉΓòÉ 3.6.2. Debugger Is Using a Different Executable Version ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 3.6.3. Debugger Cannot Find Source Files on Workstation ΓòÉΓòÉΓòÉ
One possible reason the debugger does not display your source code is that you
expected the debugger to look for source files on the workstation, but have not
downloaded the required source files, or have not told the debugger where to
find them.
If you have want the debugger to search for source files on the workstation,
make sure that:
You have downloaded the necessary source files
The DEBUG_PATH environment variable on the workstation contains the paths
of all directories where such source files are stored. You must separate
entries with semicolons. For example, if you have files in
F:\PRIVATE\SOURCE and G:\BUILD\SRC on your workstation, you should set
DEBUG_PATH to:
F:\PRIVATE\SOURCE;G:\BUILD\SRC
ΓòÉΓòÉΓòÉ 3.7. Debugging Threads ΓòÉΓòÉΓòÉ
Note: The sections on debugging threads are intended primarily for users with
limited knowledge of developing multithreaded programs, in particular, those
whose programming experience is mainly with single-threaded environments such
as Windows 3.1.
Multithreaded programs may behave differently in the debugger than they do when
run normally. Because debugger features such as single-stepping and certain
kinds of breakpoints involve processing overhead, running a multithreaded
program within the debugger may affect the timing of thread switches. If you
are experiencing problems, you can use the Threads pane of the Session Control
window to enable or disable threads so that you can debug problems related to
thread timing.
The main problems you are likely to encounter in debugging multithreaded
programs are timing and deadlock problems. You should not assume that a timing
or deadlock problem that seems only to occur when your program is running
within the debugger will never occur outside of the debugger. It is far more
likely that the processing overhead of the debugger is merely increasing the
frequency with which coding problems lead to deadlocks or thread timing errors.
The following sections describe issues relating to debugging multithreaded
programs, and contain suggestions for ensuring that your multithreaded programs
are threadsafe both during debugging and in production use:
Threads and C++ Class Members
Threads and Load Occurrence Breakpoints
ΓòÉΓòÉΓòÉ 3.7.1. Threads and C++ Class Members ΓòÉΓòÉΓòÉ
If you use the same C++ class in two different threads, you may have thread
problems such as the following:
If the class contains static variables, you may have re-entrancy
problems.
If you are using the same instance from two separate threads, the
instance may be accessed by both threads at once, resulting in a loss of
data integrity.
In both cases you need re-entrancy protection. For example, use a semaphore
whenever you access the static variables or the common class instance.
Related Information
Reference
Debugging Threads
ΓòÉΓòÉΓòÉ 3.7.2. Threads and Load Occurrence Breakpoints ΓòÉΓòÉΓòÉ
If you set a load occurrence breakpoint for a compile unit that has not been
loaded, you may find that, in a multithreaded program, the compile unit never
triggers the breakpoint, even though it must have been loaded by a call to a
function within it. The usual cause of a load occurrence breakpoint not
triggering is that you associated the breakpoint with a particular thread.
To avoid this problem, choose 'every' to have the load occurrence breakpoint
trigger regardless of which thread first calls a function within it. The
debugger tells you which thread triggered the load.
C++ only: For all breakpoint types, you can specify a breakpoint at the same
location but with different conditions for different threads. For example, you
can set a breakpoint that is triggered in thread 1 when the variable a has the
value 3, and a breakpoint at the same location triggered in thread 2 when the
variable a has the value 4. Conditions on thread-specific breakpoints can be
useful for determining whether you have thread data integrity problems.
Related Information
Reference
Debugging Threads
ΓòÉΓòÉΓòÉ 3.8. More Information on Recursion ΓòÉΓòÉΓòÉ
Recursion does not have to involve a function calling itself directly; for
example: func1 calls func2 calls func3 calls func1. After the call to func3,
each time you step into one of these functions, the entry for that call shows a
recursion count one higher than the previous entry for that call.
You can use the recursion value to detect unintentionally recursive calls.
The debugger can keep track of all calls, whether they are done using a
function or pointer to function, or, for C++, a virtual function.
ΓòÉΓòÉΓòÉ 3.9. Valid Entries for Registers ΓòÉΓòÉΓòÉ
If the value you enter consists entirely of valid hexadecimal characters, it is
treated as a hexadecimal value unless it is also the name of a variable that is
currently in scope. For example, suppose you have a variable feedbeef, and you
enter 'feedbeef' as a register value. If the variablefeedbeef can be
represented as a hex value, that hex value is used. Otherwise, the debugger
uses the hex value 'feedbeef'. To force the debugger to use a hex value rather
than the contents of a variable, precede the hex value with '0x' (for example,
'0xfeedbeef'). In COBOL, you can also use 'X'feedbeef''.
For C++, you can also enter an expression. Numbers used in the expression are
treated as decimal unless explicitly preceded with '0x'. Only decimal and
hexadecimal constants can be entered.
Related Information
Reference
Expressions Supported
ΓòÉΓòÉΓòÉ 3.10. Registers Monitor Split Bars ΓòÉΓòÉΓòÉ
You can change the amount of space given to each group of registers in the
Registers monitor, as follows:
1. Place the pointer on the split bar (a division between two panes of the
window). The pointer's shape changes to an icon with two arrows.
2. Click and hold mouse button 1.
3. Drag the mouse up or down (for register groups displayed in rows) or left
or right (for register groups displayed in columns) until you reach the
desired size for the pane.
4. Release the mouse button.
To save the position of the split bars, select Options->Display style and
click on the Save Split Bar Positions check box.
ΓòÉΓòÉΓòÉ 3.11. Call Statement Example for COBOL ΓòÉΓòÉΓòÉ
Given the following::
.
.
.
PROGRAM-ID. MAINPRG.
.
.
.
CALL 'PROG1'.
.
.
.
If you step into PROG1 and display the Call Stack window, the call statement
shown for MAINPRG is the line number where PROG1 was called. The entry with the
highest entry number in the Call Stack window has no Call Statement value
because it has not itself called any routine.
ΓòÉΓòÉΓòÉ 3.12. Call Statement Example for C++ ΓòÉΓòÉΓòÉ
Given the following source code:
void func1() {/* ... */}
void main() {
func1();
}
If you step into func1 and display the Call Stack window, the call statement
shown for main is the line number where func1 was called from. The function
with the highest entry number in the Call Stack window has no Call Statement
entry because it has not itself called any function.
ΓòÉΓòÉΓòÉ 3.13. Jump to Location -- COBOL Example ΓòÉΓòÉΓòÉ
In the example below, assume that line 61 is the current line and that you
selected line 62. If you issue a Jump to Location command and then a Step Into
command, line 65 will become the current line. However, if you issue a Run to
Location command instead of the Jump to Location command, line 63 will become
the current line.
59 MOVE 13 TO VAR2.
60 MOVE 12 TO VAR1.
61 MOVE 12 TO VAR2.
62 IF VAR1 = VAR2 THEN
63 CALL 'PROG1'
64 ELSE
65 CALL 'PROG2'
66 END-IF.
ΓòÉΓòÉΓòÉ 3.14. Jump to Location -- C++ Example ΓòÉΓòÉΓòÉ
In the example below, if you have stepped over the assignment to var2, and you
select the if line and issue a Jump to Location command followed by two Step
Into commands, execution stops at the first line of func2 instead of func1:
//...
var1=11;
var2=12; // just stepped over this statement
var1=12;
if (var1==var2) func1();
else func2();
ΓòÉΓòÉΓòÉ 4. User Interface Help for Debugger ΓòÉΓòÉΓòÉ
The Debugger Online Help is divided into four types of information:
Procedures - how to perform a specific task or set of tasks
Reference - technical information you may need to understand how to
perform a task
User Interface - context-sensitive help pages displayed when you press F1
from within the debugger
Concepts - overview information you may need to understand basic
principles of debugging or components of the debugger interface
The main topics for User Interface help are listed below:
Source window
Call Stack monitor
Registers monitor
Storage monitor
Breakpoint List window
Session Control window
Popup Monitor
Private Monitor
Program Monitor
Popup Menu for Private and Program Monitors
Local Variables Monitor
Dialogs
Toolbar Buttons, Shortcut Keys, and Common Menu Items
ΓòÉΓòÉΓòÉ 4.1. Source Window ΓòÉΓòÉΓòÉ
The Source window displays the source code for the program you are debugging.
You can perform most debugger actions from the Source window. For more details
see:
Introduction to the Source window
How to use the Source window
Menus, buttons, shortcut keys
ΓòÉΓòÉΓòÉ 4.1.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Source window provides the following menu bar menus, popup menus, toolbar
buttons, and shortcut keys:
Menu bar menus:
- File
- View
- Breakpoints
- Monitors
- Run
- Options
- Windows
- Help
Prefix area popup menu and code area popup menu
Toolbar buttons:
Shortcut keys:
- [Ctrl+B->Session Control]
- [Ctrl+E->Registers]
- [Ctrl+G->Storage]
- [Ctrl+K->Call Stack]
- [Ctrl+R->Run]
- [Ctrl+V-> Local variables]
- [Ctrl+X-> Breakpoint list]
ΓòÉΓòÉΓòÉ 4.1.1.1. File Menu ΓòÉΓòÉΓòÉ
Use the File menu of the Source window to open a new source file, find a
function or the current execution point, or exit the debugger. The File menu
contains the following choices:
Open New Source
Find Function
Where is Execution Point -- [Ctrl+P]
Close Debugger -- [F3]
ΓòÉΓòÉΓòÉ 4.1.1.2. View Menu ΓòÉΓòÉΓòÉ
Use the View menu of the Source window to locate a text string, scroll through
the view, or view a different source file. The View menu contains the
following choices:
Find -- [Ctrl+F]
Find Next -- [Ctrl+N]
Scroll to Line Number
Select Include (not available for COBOL)
Change Text File
ΓòÉΓòÉΓòÉ 4.1.1.2.1. Find ΓòÉΓòÉΓòÉ
Select View->Find or press Ctrl+F to locate a string of text in the Source
Window. Enter the string in the Find dialog. The debugger searches forward from
the current highlighted word or line to the end of the file, then wraps to the
beginning and searches up to the highlighted word or line. If the string is
found, it is highlighted. Otherwise the message Text not found is displayed.
If you want to search for only exact case matches to the search string, click
on the Case sensitive check box.
Once you have entered a string in the Find dialog, you can repeat the find
operation by selecting View->Find Next or by pressing Ctrl+N.
ΓòÉΓòÉΓòÉ 4.1.1.2.2. Find Next ΓòÉΓòÉΓòÉ
Select View->Find Next or press Ctrl+N to find the next string that matches the
search string you specified using View->Find or Ctrl+F.
If you have not yet specified a string to search for, this choice is not
available.
ΓòÉΓòÉΓòÉ 4.1.1.2.3. Scroll to Line Number ΓòÉΓòÉΓòÉ
Select View->Scroll to Line Number to move to another line in the source file.
This action only affects what you see; it does not change what line will be
executed next.
A dialog opens where you enter a line number to scroll to. You can then either
click on OK to scroll to that line, or you can select Breakpoint if you want to
set a breakpoint at the line number.
Once you have scrolled to a line number, you can select Run to locationor Jump
to location to runor jump to that line.
You can also open the Scroll to Line Number dialog by typing a line number
directly from within the Source window. The dialog opens and the number you
typed is placed in the line number entry field.
ΓòÉΓòÉΓòÉ 4.1.1.2.4. Select Include ΓòÉΓòÉΓòÉ
Select View->Select Include to display a list of the source files included in
your program. You can select a file from this list to view. You can also access
these files from the notebook tabs in the Source window (unless you have
disabled the Source as Notebook check box in the Source window options).
ΓòÉΓòÉΓòÉ 4.1.1.2.5. Change Text File ΓòÉΓòÉΓòÉ
Select View->Change text file to view a different source file. Sometimes the
debugger locates the wrong source file for your program. Change Text File lets
you specify the correct data set and member names for the source file.
In the dialog that appears, enter the data set name and member (if the data set
is a PDS) that contains the source file you want.
Note: Change Text File does not open a new Source window or change the
executable being debugged. If you enter the wrong data set name, you may still
be able to set breakpoints, issue step commands, and see the debugger moving
the current line. However, the debugger's behavior is related to the current
object file, not to the current source file, and so this behavior may seem out
of sync with the source file. If you want to debug a different object file
within the same program, do not use this menu item; select File->Open New
Source instead.
ΓòÉΓòÉΓòÉ 4.1.1.3. Breakpoints Menu ΓòÉΓòÉΓòÉ
Use the Breakpoints menu of the Source window to set and delete breakpoints. It
contains the following choices:
Set line
Set entry
Set storage change
Set load occurrence
List -- [Ctrl+X]
Toggle at current line -- space bar
Delete All - delete all breakpoints
You can also set, delete, enable, and disable breakpoints in the prefix area
of the source view.
Related Information
Procedures
Delete All Breakpoints
ΓòÉΓòÉΓòÉ 4.1.1.3.1. List ΓòÉΓòÉΓòÉ
Select Breakpoints->List, or press Ctrl+X from a Source window or the Session
Control window, to open the Breakpoints List window. This window lists
information on all breakpoints, and lets you enable, disable, set, and delete
breakpoints.
ΓòÉΓòÉΓòÉ 4.1.1.3.2. Toggle at Current Line ΓòÉΓòÉΓòÉ
Select Breakpoints->Toggle at current line to set a breakpoint at the current
line. If there is already a breakpoint at the current line, this action clears
it.
Other ways to toggle a breakpoint are to double-click on the line number or to
select the line number and press the space bar.
ΓòÉΓòÉΓòÉ 4.1.1.4. Monitors Menu ΓòÉΓòÉΓòÉ
Use the Monitors menu to display one of the debugger monitors. Monitors keep
track of the contents of the call stack, registers, storage, and variables, and
are updated after each step command or encountered breakpoint.
In the Source window, the Monitors menu also includes the Monitor Expression
choice, which lets you enter a variable or expression to monitor.
You can access the following windows from the Monitors menu:
Call stack
Registers
Storage
Local Variables
ΓòÉΓòÉΓòÉ 4.1.1.5. Run Menu ΓòÉΓòÉΓòÉ
A subset of the following menu choices appears on the Run menu of the Source
and Session Control windows:
Step over -- [O]
Step into -- [I]
Step return -- [T]
Run -- [R] or [Ctrl+R]
Run to Location -- [L]
Jump to Location -- [N]
Hide Debugger on Run
Thread Enabled
The help for each debugger window contains appropriate links to the menu
choices it supports.
ΓòÉΓòÉΓòÉ 4.1.1.6. Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
When you click mouse button 2 [note] in the prefix area of an executable line
in a Source window, a popup menu appears with some or all of the following
choices:
Run to location -- run to this line
Jump to location -- jump to this line
Set line breakpoint -- set a breakpoint at this line
Clear breakpoint -- clear the breakpoint at the current line
Set breakpoint -- set a breakpoint at the current line
Disable breakpoint -- disable the breakpoint at the current line
Enable breakpoint -- enable the disabled breakpoint at the current line
Executable lines are shown in blue in the prefix area, while non-executable
lines (such as comment lines) are shown in black.
ΓòÉΓòÉΓòÉ 4.1.1.7. Code Area Popup Menu ΓòÉΓòÉΓòÉ
When you click mouse button 2 [note] while your pointer is over text in the
source code area of a Source window, a popup menu appears with the choices
shown below. The first four choices are used to add the highlighted item to the
indicated type of monitor:
Popup expression
Add to private monitor
Add to program monitor
Add to storage monitor
Copy -- copy the highlighted item into the system clipboard
Find -- find the next occurrence of the highlighted item
Find entry -- find an entry point that matches the highlighted item
(entries in different compile units may not be found)
Set entry breakpoint -- set a breakpoint at the entry that matches the
highlighted item (entry must be in the same compile unit)
For the last two choices, if the selected text corresponds to an overloaded
C++ function (one that is implemented with two or more distinct signatures),
an Overloaded dialog opens so that you can select which function signature
corresponds to the function you selected.
ΓòÉΓòÉΓòÉ 4.1.1.8. Toolbar Buttons and Shortcut Keys ΓòÉΓòÉΓòÉ
The Source window provides the following toolbar buttons and shortcut keys:
[O] -- Step over
[I] -- Step into
[T] -- Step return
[R] -- Run
-- Monitor expression
-- Call stack monitor
-- Registers monitor
-- Storage monitor
[Ctrl+X] -- Breakpoints list
[Ctrl+B] -- Session Control window
ΓòÉΓòÉΓòÉ 4.1.2. Prefix Area ΓòÉΓòÉΓòÉ
The prefix area of the Source window is the leftmost column in the main area of
the window. The values in the prefix area correspond to the line numbers in the
current source file
You can use the prefix area in the following ways:
To get a bearing on where you are in your file, by using line numbers as
references.
To set and clear breakpoints. Double-click mouse button 1 on a value in
the prefix area, or press the space bar while the cursor is in the prefix
area. This toggles between setting and removing a breakpoint.
To run or jump to a line. Click mouse button 2 [note] over the line's
prefix area, and select either Run to location or Jump to location from
the popup menu.
Breakpoints are indicated in the prefix area by reverse red highlighting.
ΓòÉΓòÉΓòÉ 4.2. Call Stack Window ΓòÉΓòÉΓòÉ
You can use the Call Stack window to view a list of active functions for a
thread, and to raise a Source window to view the code for any of these
functions. To display the window, select Monitors->Call stack or click on the
pushbutton in the Source window or the Session Control window.
Call Stack window Menus, buttons, and shortcut keys
Related Information
Procedures
Use the Call Stack Window
Concepts
Introduction to the Call Stack Window
ΓòÉΓòÉΓòÉ 4.2.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Call Stack window provides the following menus, buttons, and shortcut keys:
A popup menu with one item, View
File Options Windows Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
ΓòÉΓòÉΓòÉ 4.2.1.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Call Stack window contains only one choice, Close
Debugger.
ΓòÉΓòÉΓòÉ 4.2.1.2. Options Menu ΓòÉΓòÉΓòÉ
The Options menu of the Call Stack window contains the following choices:
Fonts
Display style
Restore defaults
Tool buttons
Hover help
Infoarea
ΓòÉΓòÉΓòÉ 4.2.1.2.1. Display Style ΓòÉΓòÉΓòÉ
Select Options->Display style to specify what information you want displayed in
the Call Stack window, and to specify the growth direction for the window.
In the dialog that appears, you can select from the following items (not
necessarily in the order shown here):
Entry No Function
Prog. Unit Name
Call Statement
Recursion
Stack frame
Stack Size
Compile Date/Time
Function address
Click on an entry from the list above for help about it.
To select an item in the dialog, position the pointer over it and click mouse
button 1, or press the space bar. (Clicking or pressing again deselects a
selected item.) Selected items appear white on a gray background. To cancel
changes you have made to the window without closing the window, click on
Reset. To restore the debugger defaults, click on Defaults. You can move
through the list by using either the mouse and slide bar or the cursor keys.
ΓòÉΓòÉΓòÉ 4.2.1.3. View ΓòÉΓòÉΓòÉ
Position the pointer over a function in the Call Stack window, click mouse
button 2, and select View from the popup menu. A Source window that contains
the source code for the function is opened or raised.
ΓòÉΓòÉΓòÉ 4.2.1.4. Growth Direction ΓòÉΓòÉΓòÉ
You can change the order in which functions on the call stack are displayed in
the Call Stack window -- with the most recent entry at the top, or at the
bottom. You can have the window display the most recently called routine at the
top, and the outermost calling routine (usually the main program) at the
bottom. If you click on the button, the order is reversed.
To change the default growth direction, select Options->Display style and
choose the appropriate growth direction from the dialog.
ΓòÉΓòÉΓòÉ 4.2.1.5. Growth Direction Push button ΓòÉΓòÉΓòÉ
Button: Menu: Options->Display style (from Call Stack window)
The Growth direction command changes the order in which functions on the call
stack are displayed (whether the most recently called function appears at the
top or bottom). See Growth Direction for more information.
ΓòÉΓòÉΓòÉ 4.2.2. Source ΓòÉΓòÉΓòÉ
The Source item in the Call Stack window lists the name of the source file (or
object file) for each active function in the current thread.
Select Source from the Options->Display style dialog for the Call Stack window
if you want a column showing source file names to be displayed. Source file
names are displayed by default.
ΓòÉΓòÉΓòÉ 4.2.3. View Popup Choice ΓòÉΓòÉΓòÉ
Use the View choice on the Breakpoints List window's popup menu to raise the
focus of the Source window containing a line or function breakpoint:
1. Select the breakpoint in the Breakpoints List window
2. Click mouse button 2
3. Select View from the breakpoint popup menu
You can also raise the focus of the Source window by double-clicking on the
breakpoint with mouse button 1.
The line containing the breakpoint is displayed in a Source window, with its
prefix area selected. If you want to alter the breakpoint, position the
pointer on that line, click mouse button 2 [note], and select an item from the
popup menu.
ΓòÉΓòÉΓòÉ 4.2.4. Compile Date/Time ΓòÉΓòÉΓòÉ
The Compile Date/Time item in the Call Stack window shows the date and time the
function was compiled.
Select Compile Date/Time from the Options->Display style dialog for the Call
Stack window if you want a column showing compilation time stamps to be
displayed.
ΓòÉΓòÉΓòÉ 4.2.5. Entry No ΓòÉΓòÉΓòÉ
The Entry No (entry number) item in the Call Stack window is a column of
numbers that indicate the order of functions. The function with the highest
number is the currently executing function; the one with the next highest
number is its caller. Depending on the growth direction of the Call Stack
window, entry numbers appear in descending or ascending order. The smallest
entry number is always 1.
Select Entry No from the Options->Display style dialog for the Call Stack
window if you want a column showing entry numbers to be displayed.
ΓòÉΓòÉΓòÉ 4.2.6. Function ΓòÉΓòÉΓòÉ
The Function item in the Call Stack window lists the name of each active
function in the current thread, or, where the name is not available, the
function's address. To view the source for that function, you can:
Double-click on its name
Select its line and press Enter
Position the pointer over it, click on mouse button 2, and select View
from the popup menu
Select Function from the Options->Display style dialog for the Call Stack
window if you want a column showing function names to be displayed. This
column is displayed by default.
ΓòÉΓòÉΓòÉ 4.2.7. Recursion ΓòÉΓòÉΓòÉ
The Recursion item in the Call Stack window shows the number of times a
function has been called and has not yet returned. For example, when a function
recursefunc calls itself and you step into recursefunc, the debugger adds a new
recursefunc entry to the Call Stack window. The recursion count for the new
entry is one greater than for the previous recursefunc entry.
Select Recursion from the Options->Display style dialog for the Call Stack
window if you want a column showing recursion values to be displayed.
Related Information
Reference
More Information on Recursion
ΓòÉΓòÉΓòÉ 4.2.8. Call Statement ΓòÉΓòÉΓòÉ
The Call Statement item in the Call Stack window shows the statement that
transferred control out of the function. You can view a C++ or COBOL example
of the use of this item.
Select Call statement from the Options->Display style dialog for the Call Stack
window if you want a column showing the statement number to be displayed.
ΓòÉΓòÉΓòÉ 4.2.9. Stack Frame Pointers ΓòÉΓòÉΓòÉ
These entries in the Call Stack window are the stack frame addresses for each
active function on the call stack.
ΓòÉΓòÉΓòÉ 4.2.10. Stack Size ΓòÉΓòÉΓòÉ
The Stack Size item in the Call Stack window is the size, in bytes, of the
stack frame for the called function. A function's stack frame includes the
address to return to when the function completes, a pointer to the previous
function's stack frame, and any local variables or arrays declared in the
calling function. Given that the return address and previous function pointer
are fixed-size components of a stack frame, the stack frame size provides an
indication of how much local data is declared by the function.
In C++, because the heap, not the stack frame, contains the storage for
dynamically allocated local variables, only the pointers to such variables take
up stack frame space.
Select Size from the Options->Display style dialog for the Call Stack window if
you want a column showing the size of the stack frame.
ΓòÉΓòÉΓòÉ 4.3. Registers Monitor ΓòÉΓòÉΓòÉ
Use the Registers monitor to view or modify the contents of the registers
monitored for your program. The debugger displays a separate Registers monitor
for each thread. See the following topics for more information:
How to use the Registers monitor
Menus, buttons, and shortcut keys
ΓòÉΓòÉΓòÉ 4.3.1. Menus, Buttons, Shortcut Keys ΓòÉΓòÉΓòÉ
The Registers monitor provides the following menus, buttons, and shortcut keys:
File Options Windows Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
ΓòÉΓòÉΓòÉ 4.3.1.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Registers monitor contains only one choice, Close
Debugger.
ΓòÉΓòÉΓòÉ 4.3.1.2. Options Menu ΓòÉΓòÉΓòÉ
The Options menu of the Registers monitor contains the following choices:
Fonts
Display style
Restore defaults
Tool buttons
Hover help
Infoarea
ΓòÉΓòÉΓòÉ 4.3.1.2.1. Display Style ΓòÉΓòÉΓòÉ
Use the Display Style dialog to customize how the information in your Registers
monitor is displayed. You can choose what groups of registers are displayed in
the window, whether groups are laid out in columns (vertical orientation) or
rows (horizontal orientation), whether or not the name of each group appears
above its column or row, and whether the positions of split bars between rows
or columns are saved.
This dialog has the following group boxes and check boxes:
Groups Use this selection list to choose the groups of registers you want
to display. (Available groups are dependent on the processor on
which the application being debugged is running.) To select an item,
position the pointer over it and click mouse button 1 or press the
space bar. Repeating this action deselects the item. Selected items
appear white on a gray background.
You can move through the list by using the mouse and slide bar, or
by using the cursor up and down keys.
Orientation Select Vertical if you want each group of registers to display in
its own column, or select Horizontal if you want it to display in
its own row. (A row can have multiple lines.)
Column titles Select this check box if you want the title of each group of
registers to appear above its group.
Save split bars Select this check box if you want to save the positions of
split bars between rows or columns of registers, from one debugging
session of your program to the next.
To cancel changes you have made without closing the dialog, click on Reset. To
restore the debugger defaults, click on Defaults.
ΓòÉΓòÉΓòÉ 4.4. Storage Monitor ΓòÉΓòÉΓòÉ
Use the Storage monitor to view and update the contents of storage areas used
by your program.
See the following topics for more information:
Introduction to the Storage monitor
Menus, buttons, and shortcut keys
ΓòÉΓòÉΓòÉ 4.4.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Storage monitor provides the following menus, buttons, and shortcut keys:
File Options Windows Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
ΓòÉΓòÉΓòÉ 4.4.1.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Storage monitor contains only one choice, Close Debugger.
ΓòÉΓòÉΓòÉ 4.4.1.2. Options Menu ΓòÉΓòÉΓòÉ
The Options menu of the Storage monitor contains the following choices:
Fonts
Display style
Monitor expression
Restore defaults
Tool buttons
Hover help
Infoarea
ΓòÉΓòÉΓòÉ 4.4.1.2.1. Display Style ΓòÉΓòÉΓòÉ
Use the Display style dialog to specify what information is shown in the
Storage monitor, what addressing scheme is used, how many columns of bytes are
displayed on each line, and whether column titles are shown.
To choose the desired style from the Content Style list, scroll through the
list using the cursor keys, or position the pointer over the item you want;
then click mouse button 1. To cancel changes you have made without closing the
dialog, click on Reset. To restore the debugger defaults, click on Defaults.
For information on the other items in the Display style dialog, click on the
links below:
Address style
Columns per line
Column titles
ΓòÉΓòÉΓòÉ 4.4.1.2.1.1. Address Style ΓòÉΓòÉΓòÉ
Only the flat address style is available.
ΓòÉΓòÉΓòÉ 4.4.1.2.1.2. Columns per Line ΓòÉΓòÉΓòÉ
Enter a number, or use the arrows beside this field, to specify the number of
Columns per line of storage you want displayed. The size of a single column is
based on the content style you select. For example, if you select Hex and
character, a column is a single byte; if you select 16-bit integer, a column is
two bytes.
ΓòÉΓòÉΓòÉ 4.4.1.2.1.3. Column Titles ΓòÉΓòÉΓòÉ
Select this check box if you want a title line to appear above the storage area
of the Storage monitor. When you choose Column Titles, the Storage monitor
displays the address style above the column showing addresses, and displays the
offset of the displayed range above the column showing storage contents.
ΓòÉΓòÉΓòÉ 4.4.1.2.1.4. Display String Literals in ASCII or EBCDIC ΓòÉΓòÉΓòÉ
You can view string literals in the Storage monitor in either ASCII or EBCDIC.
The default is EBCDIC for OS/390 applications, ASCII for workstation
applications. To change the default representation, select Options->Display
style and choose the appropriate representation:
HEX and EBCDIC
HEX and ASCII
ΓòÉΓòÉΓòÉ 4.4.1.2.2. Monitor Expression in Storage ΓòÉΓòÉΓòÉ
Select Options->Monitor Expression from the Storage monitor to enter the
variable or expression you want to monitor.
The storage monitor is updated to show the requested storage address and
contents. This saves you from having to scroll up and down through the
monitor's storage pane if you know what storage you want to look at.
For COBOL, if a variable is added to the storage monitor, the storage monitor
opens at the address of that variable. If the variable is of type POINTER, it
opens at the address specified by the contents of that variable.
For C++, given the code:
int x=12;
int *y=&x;
to view the storage for x, you can enter either &x or y.
Note: For C++, if you enter the name of a variable that is not a pointer, or an
expression that is not related to pointers, the debugger shows storage
beginning at the address corresponding to the value of the variable or
expression. This storage may not have any connection to the variable itself or
to the program you are debugging. Normally you would only use variables or
expressions that evaluate to an address (for example, pointers, array names, or
expressions containing pointers).
Select the Enabled monitor check box if the expression you are entering
evaluates to a dynamically changing address and you want the Storage monitor to
show the storage for that changing address. For instance, if you enter a
pointer as part of the expression, and the address contained in that pointer
changes dynamically, the Storage monitor will display a different location in
storage each time the pointer changes.
Related Information
Concepts
Expressions
ΓòÉΓòÉΓòÉ 4.4.1.3. Single-Precision Floating-Point Pushbutton ΓòÉΓòÉΓòÉ
Button: Menu: Select Options->Display style from the Storage monitor, then
select Single-precision floating-point float from the Content style list.
This causes storage in the Storage monitor to be displayed as a series of
single-precision floating-point numbers. Each number begins on a four-byte
boundary.
ΓòÉΓòÉΓòÉ 4.4.1.4. Double-Precision Floating-Point Pushbutton ΓòÉΓòÉΓòÉ
Button: Menu: Select Options->Display style from the Storage monitor, then
select Double-precision floating-point float from the Content style list.
This causes storage in the Storage monitor to be displayed as a series of
double-precision floating-point numbers. Each number begins on an eight-byte
boundary.
ΓòÉΓòÉΓòÉ 4.4.1.5. 32-Bit Unsigned Pushbutton ΓòÉΓòÉΓòÉ
Button: Menu: Select Options->Display style (from the Storage monitor), then
select 32-bit unsigned integer from the Content style list.
This causes storage in the Storage monitor to be displayed as a series of
32-bit unsigned integers. Each number begins on a four-byte boundary.
ΓòÉΓòÉΓòÉ 4.4.1.6. 32-bit Signed Pushbutton ΓòÉΓòÉΓòÉ
Button: Menu: Select Options->Display style (from Storage monitor) then select
32-bit signed integer from the Content style list.
This causes storage in the Storage monitor to be displayed as a series of
32-bit signed integers. Each number begins on a four-byte boundary.
ΓòÉΓòÉΓòÉ 4.4.1.7. Character Pushbutton ΓòÉΓòÉΓòÉ
Button: Menu: Select Options->Display style (from the Storage monitor) then
select Character from the Content style list.
This causes storage in the Storage monitor to be displayed as a series of
characters. Alphanumeric characters and some punctuation characters are
displayed normally; other characters are shown only as small dots. To view the
value of a nondisplayed character, change to Hex and character display style
and look for the character's hexadecimal value.
The Character display style displays storage in EBCDIC. You can display
character storage in ASCII by selecting ASCII from the Display Style dialog
instead of Character.
ΓòÉΓòÉΓòÉ 4.4.1.8. Hex and Character Push button ΓòÉΓòÉΓòÉ
Button: Menu: Select Options->Display style from the Storage monitor, then
select Hex and character from the Content style list.
This causes storage in the Storage monitor to be displayed in columns of
hexadecimal data, followed by a single column of characters. In the character
section, alphanumeric characters and punctuation characters are displayed
normally; other characters are shown only as small dots.
When storage is displayed in hex and character data, the characters can be in
either ASCII or EBCDIC format depending on the platform the debugger is running
on. See Display String Literals in ASCII or EBCDIC for information on how to
change the default character set.
ΓòÉΓòÉΓòÉ 4.5. Breakpoints List Window ΓòÉΓòÉΓòÉ
Use the Breakpoints List window to set, delete, enable, or disable breakpoints.
See the following topics for more information:
Introduction to the Breakpoints List window
Menus, buttons, and shortcut keys
ΓòÉΓòÉΓòÉ 4.5.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Breakpoint List window provides the following menus, buttons, and shortcut
keys:
File Edit Set Options Windows Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
It also provides a popup menu.
ΓòÉΓòÉΓòÉ 4.5.1.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Breakpoints List window contains only one choice, Close
Debugger.
ΓòÉΓòÉΓòÉ 4.5.1.2. Edit Menu ΓòÉΓòÉΓòÉ
Use the Edit menu of the Breakpoint List window to delete, change, disable, or
enable breakpoints that have already been set. This menu contains the following
choices:
Delete
Disable (shown only when the highlighted breakpoint is enabled)
Enable (shown only when the highlighted breakpoint is disabled)
Modify (not supported for OS/390)
Delete all
Disable all
Enable all
ΓòÉΓòÉΓòÉ 4.5.1.2.1. Disable ΓòÉΓòÉΓòÉ
To disable the currently selected breakpoint, choose Edit->Disable from the
Breakpoints List window, or place the pointer over the breakpoint you want to
disable. Then click on mouse button 2, and select Disable. (The breakpoint must
be enabled for this menu choice to be shown.)
When you disable a breakpoint, it does not stop execution when the program is
run. You can later enable it by selecting Edit->Enable from the Breakpoints
List window, or by clicking mouse button 2 on it and selecting Enable from the
popup menu. You can also enable all disabled breakpoints by selecting
Edit->Enable all.
Related Information
Procedures
Enable and Disable Breakpoints
ΓòÉΓòÉΓòÉ 4.5.1.2.2. Enable ΓòÉΓòÉΓòÉ
To enable the currently selected breakpoint, choose Edit->Enable from the
Breakpoints List window, or place the pointer over the breakpoint, click mouse
button 2, and select Enable. (The breakpoint must be disabled for this menu
choice to be shown.)
Disabled breakpoints are remembered by the debugger but do not cause execution
to stop when the program runs. When you enable a disabled breakpoint, the
debugger stops program execution whenever the breakpoint is encountered.
Related Information
Procedures
Enable and Disable Breakpoints
ΓòÉΓòÉΓòÉ 4.5.1.2.3. Modify ΓòÉΓòÉΓòÉ
Note: Modifying breakpoints is not supported for OS/390 debugging. You can
still enter values in the dialog, however when you click on OK or Set, a popup
error message displays. To modify breakpoint characteristics for OS/390
debugging, delete the breakpoint in question and add it again with the desired
characteristics.
Select Edit->Modify from the Breakpoints List window to modify settings for the
selected breakpoint (for example, the frequency with which it causes execution
to stop, or what threads it applies to). After you have made the desired
changes, click on OK.
If you click on Set instead, the changes are applied and the dialog stays open.
Subsequent changes you make within the dialog are applied to the same
breakpoint.
Related Information
Procedures
Modify Breakpoint Characteristics
ΓòÉΓòÉΓòÉ 4.5.1.2.4. Delete all ΓòÉΓòÉΓòÉ
Choose Edit->Delete all from the Breakpoints List menu bar to delete all
breakpoints in the monitor.
Note: If you want to temporarily disable all breakpoints and then later
re-enable them, use Edit->Disable all instead.
ΓòÉΓòÉΓòÉ 4.5.1.2.5. Disable All ΓòÉΓòÉΓòÉ
Choose Edit->Disable all from the Breakpoints List window to disable all
breakpoints. When you disable breakpoints, the debugger remembers where they
are set, but does not use them to stop execution when the program is run. You
can later enable them all by selecting Edit->Enable all. You can enable
individual breakpoints by clicking with mouse button 2 on each breakpoint you
want to enable, and selecting Enable from the popup menu.
ΓòÉΓòÉΓòÉ 4.5.1.2.6. Enable All ΓòÉΓòÉΓòÉ
Choose Edit->Enable all from the Breakpoints List window to enable all
breakpoints that have been disabled.
ΓòÉΓòÉΓòÉ 4.5.1.3. Set Menu ΓòÉΓòÉΓòÉ
Use the Set menu of the Breakpoint List window to set various kinds of
breakpoints through a dialog. This menu contains the following choices:
Set line
Set entry
Set storage change
Set load occurrence
ΓòÉΓòÉΓòÉ 4.5.1.3.1. Set Line ΓòÉΓòÉΓòÉ
Select Set->Set Line, or select Line breakpoint from the prefix area popup
menu, to set a line breakpoint at a particular line number. In the dialog that
appears, you can specify what executable and source file you want to set the
breakpoint in. If the source code consists of several files (that is, if one or
more files include other files) you can select which source file the breakpoint
should be set in from the Include File pulldown list.
Type a line number in the Line entry field. The breakpoint is set on that line
number.
More information is available on the following entry field items:
Thread
Defer breakpoint
Frequency
ΓòÉΓòÉΓòÉ 4.5.1.3.2. Set Function ΓòÉΓòÉΓòÉ
Select Set->Set Function to set a breakpoint at the start of a function. Select
Set->Set Entry to set a breakpoint at an entry point. In the dialog that
appears, type the name of the function in the Function entry field, or select
the List button and click on the function you want. You can also specify what
executable and source file you want to set the breakpoint in. If the source
code consists of several files (that is, if one or more files include other
files) select which source file to set the breakpoint in from the Include File
pulldown list.
More information is available on the following entry field items:
Thread
Frequency
If the function you specified is an overloaded C++ function (your program
contains two or more functions with the same name but different signatures),
an Overloaded dialog appears, displaying a list of the overloads of the
function. Choose the desired one from the list.
ΓòÉΓòÉΓòÉ 4.5.1.3.3. Set Storage Change ΓòÉΓòÉΓòÉ
Use the Set storage change choice to cause execution to stop whenever storage
at a specific address is written to. Execution stops even if the value written
to storage is the value that was already present at that address.
Caution: If you set a storage change breakpoint for an address that is on the
call stack, be sure to remove the breakpoint before leaving the routine
associated with it. Otherwise, when you return from the routine, the routine's
stack frame will be removed from the stack, but the breakpoint will still be
active. Any other routine that gets loaded on the stack will then contain the
breakpoint.
In the Address or Expression entry field, you can type the address or a
variable name or expression that evaluates to a valid address.
C++: You can also enter the address of a variable, by preceding the variable
name with an ampersand (for example, &myVariable).
COBOL: For POINTER variables, the contents of the variable are used as the
address. For all other variables, the address of the variable is used.
Note: If you type FEEDBEEF in the Address or expression entry field, and there
is a variable named FEEDBEEF, the debugger will interpret the entry as the
variable FEEDBEEF, not the hex value FEEDBEEF.
More information is available on the following fields:
Bytes to monitor
Thread
Frequency
Related Information
Reference
Expressions Supported
Valid Addresses and Expressions
ΓòÉΓòÉΓòÉ 4.5.1.3.3.1. Bytes to Monitor ΓòÉΓòÉΓòÉ
Select a value from Bytes to Monitor on the Storage Change Breakpoint dialog to
tell the debugger the number of bytes you want it to monitor.
You can monitor 1 to 128 bytes.
ΓòÉΓòÉΓòÉ 4.5.1.3.3.2. Set Load Occurrence ΓòÉΓòÉΓòÉ
Select Set Load Occurrence to set a breakpoint that will stop execution when
the DLL you specify has been loaded. In the Load Occurrence Breakpoint dialog,
type the name of the DLL or program in the DLL File Name entry field. For
example, if the DLL or program is in the partitioned data set A.B.LOAD(HELLO),
you would enter only the member name, HELLO. Execution stops when the DLL or
program is loaded.
For information on other fields in this dialog, see the following:
Thread
Frequency (From/To/Every)
ΓòÉΓòÉΓòÉ 4.5.1.4. Options Menu ΓòÉΓòÉΓòÉ
The Options menu of the Breakpoints List window contains the following choices:
Fonts
Display style
Sort
Restore defaults
Tool buttons
Hover help
Infoarea
ΓòÉΓòÉΓòÉ 4.5.1.4.1. Display Style ΓòÉΓòÉΓòÉ
You can change the way items in the Breakpoint List window are displayed by
selecting Options->Display style, then selecting those items you want from the
Select Items list in the Display Style dialog.
The Select Items list in the Display Style dialog contains the following items:
Type The type of breakpoint, for example, Line or Address
Executable The name of the executable file the breakpoint applies to
Source The name of the compilation unit the breakpoint applies to
File The source file
Function The function containing the breakpoint
Line The line containing the breakpoint
Address The address of the breakpoint
State Whether the breakpoint is enabled or disabled
Status Whether the breakpoint is active or deferred (a deferred breakpoint
is a breakpoint set in a compile unit that has not yet been loaded)
Thread What threads the breakpoint applies to
Expression An optional expression that must evaluate to true for the
breakpoint to cause execution to stop.
From The first encounter of the breakpoint that causes execution to stop.
For example, if this value is set to 5, each run command could, if
no other breakpoints are encountered and the program does not
terminate, pass over the breakpoint four times before stopping the
fifth time.
To The last encounter of the breakpoint that causes execution to stop.
Every The frequency at which encounters of the breakpoint cause execution
to stop. For example, if Every is set to 2, the breakpoint causes
execution to stop every other time the breakpoint is encountered.
If you select the Reset pushbutton any changes you have made in the Display
Style dialog are discarded, and the dialog is refreshed to show the display
style in effect when you opened the dialog. If you select Default the default
items are displayed in the Breakpoint List window.
ΓòÉΓòÉΓòÉ 4.5.1.4.2. Sort ΓòÉΓòÉΓòÉ
You can change the order of items in the Breakpoint List window by selecting
Options->Sort, then selecting the item you want the debugger to sort on from
the Select Item list in the Sort dialog. By default, breakpoints are sorted by
line number.
ΓòÉΓòÉΓòÉ 4.5.1.5. Defer Breakpoint ΓòÉΓòÉΓòÉ
Select the Defer breakpoint check box from within the Line Breakpoint dialog if
you want to set a line breakpoint in a compile unit that is not currently
loaded.
When a compile unit in which you have set a deferred breakpoint is loaded, the
breakpoint state changes from deferred to active. When the compile unit is
freed, the breakpoint state changes back to deferred.
If you enter an incorrect source, file, or line number, the debugger will be
unable to activate the breakpoint when the compile unit is loaded, and the
breakpoint will remain in the deferred state.
Note: You cannot set a deferred breakpoint in a preloaded compile unit, but you
can set one in a program that has some preloaded compile units and some
dynamically loaded ones.
Related Information
Procedures
Set a Deferred Breakpoint
ΓòÉΓòÉΓòÉ 4.5.2. Thread ΓòÉΓòÉΓòÉ
The Thread pulldown list in a Set breakpoint or Modify breakpoint dialog lets
you choose what threads to activate the breakpoint in. To select a thread ID
from the list, select the List button, then highlight the thread where you want
to set the breakpoint.
ΓòÉΓòÉΓòÉ 4.5.3. Defer Breakpoint ΓòÉΓòÉΓòÉ
Select the Defer breakpoint check box if you want to set a function breakpoint
in a DLL or subprogram that is not currently loaded.
If you set a deferred function breakpoint on a C++ function, and that function
is overloaded, the debugger sets the breakpoint in all of the overloaded
functions when the DLL or subprogram is loaded.
When a DLL or subprogram in which you have set a deferred breakpoint is loaded,
the breakpoint state changes from deferred to active. When the DLL or
subprogram is freed, the breakpoint state changes back to deferred.
If you enter an incorrect source, file, or function, the debugger will be
unable to activate the breakpoint when the DLL or subprogram is loaded, and the
breakpoint will remain in the deferred state.
Note: You cannot set a deferred breakpoint in a preloaded DLL or subprogram,
but you can set one in a program that has some preloaded DLL or subprograms and
some dynamically loaded ones.
ΓòÉΓòÉΓòÉ 4.5.4. Frequency ΓòÉΓòÉΓòÉ
Use the Frequency fields to tell the debugger when to stop on a breakpoint and
when to skip it. The debugger keeps track of how many times each breakpoint is
encountered. The fields in this section tell the debugger on which encounter of
a breakpoint the debugger should first stop, how often it should stop, and on
which encounter the debugger should no longer stop.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéEntry field ΓöéPurpose Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéFrom ΓöéEnter the first breakpoint encounter Γöé
Γöé Γöéyou want the debugger to stop on. ForΓöé
Γöé Γöéexample, if you want the debugger to Γöé
Γöé Γöéskip over the breakpoint the first Γöé
Γöé Γöéfive times it is encountered, enter Γöé
Γöé Γöé'6'. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéTo ΓöéEnter the last breakpoint encounter Γöé
Γöé Γöéyou want the debugger to stop on. ForΓöé
Γöé Γöéexample, if you want it to start Γöé
Γöé Γöéignoring the breakpoint after the Γöé
Γöé Γöé20th encounter, enter '20'. To have Γöé
Γöé Γöéit always stop on the breakpoint, Γöé
Γöé Γöéenter 'Infinity'. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEvery ΓöéEnter the frequency with which you Γöé
Γöé Γöéwant the debugger to stop on this Γöé
Γöé Γöébreakpoint. For example, if you want Γöé
Γöé Γöéit to stop on only one out of every Γöé
Γöé Γöéfour it encounters, enter '4'. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 4.5.5. Expression ΓòÉΓòÉΓòÉ
Note: The Expression entry field in breakpoint dialogs is not available for
COBOL programs running on OS/390.
If you are setting a line breakpoint or function breakpoint in a C++ program,
or a line or address breakpoint in a COBOL or PL/I program, you can type an
expression into the Expression entry field in a Set breakpoint or Modify
breakpoint dialog. The execution of the program stops at the breakpoint only if
the condition specified in this field tests true.
For example, if you are debugging a C++ program you could type the following:
(i==1) || (j==k) && (k!=5)
For a COBOL program, you could type the following:
myvar = 'abc'
Note: Variables in a conditional expression that is associated with a function
breakpoint are limited to any static or global variables known to the called
function when the function is called. The expression cannot contain local or
automatic variables.
Related Information
Reference
Expressions Supported
ΓòÉΓòÉΓòÉ 4.5.6. Breakpoints List Popup Menu ΓòÉΓòÉΓòÉ
In the Breakpoints List window, if your pointer is on a line containing
breakpoint information and you click on mouse button 2, a popup menu appears
with the following choices that affect breakpoints:
View
Delete - deletes the selected breakpoint
Enable (if breakpoint is currently disabled)
Disable (if breakpoint is currently enabled)
Modify (not supported on OS/390) - opens a dialog that lets you change
the breakpoint
Delete all - deletes all the breakpoints
Related Information
Procedures
Delete Breakpoints
Modify Breakpoint Characteristics
Delete All Breakpoints
ΓòÉΓòÉΓòÉ 4.6. Session Control Window ΓòÉΓòÉΓòÉ
The Session Control window is open throughout the debugging session. It shows
the current status of the debugger, and gives you a number of ways to access
other windows or perform common functions. See the following topics for more
information:
Introduction to the Session Control window
Menus, buttons, and shortcut keys
ΓòÉΓòÉΓòÉ 4.6.1. Using the Components Pane ΓòÉΓòÉΓòÉ
You can expand any item in the Components pane that has a '+' beside it. The
following list shows what items you can expand, and what items appear when you
do:
Item with + Expands to
*(corresponds to the load module) A list of compile units. A compile unit does
not appear in the list until it has been called.
Compile unit The names of nested programs
Source file (C++ only): File-scope functions and class member functions
defined within each source file. C++ class member functions are not
shown.
To shift the focus within the Session Control window between the Threads and
Components panes, use the pointer or the cursor left and right keys. To move
between items in the list, use the mouse or the cursor up and down keys. To
expand or collapse items in the list, use the + and - keys.
To open or raise the focus of the Source window for , double-click on the
item, or highlight it and press Enter.
To access the popup menu for a function, select that function and click on
mouse button 2 . This menu lets you set a breakpoint on the function or view
its source code.
ΓòÉΓòÉΓòÉ 4.6.2. Using the Threads Pane ΓòÉΓòÉΓòÉ
When you expand a thread in the Threads pane, the thread's priority is visible.
To move between items in the list, use the mouse or the cursor up and down
keys. To expand or collapse items in the list, use the + and - keys.
To open or raise the focus of the Source window for a thread, press the Enter
key while the thread is highlighted, or double-click on it.
To access a popup menu for a highlighted thread, click mouse button 2. This
menu lets you disable or enable the thread, access monitors specific to it, or
jump to the execution point in the Source window for the thread.
To enable a disabled thread or disable an enabled one, select the thread, then
choose Run->Thread enabled. This toggles the current enablement for that
thread. If the thread is enabled, a checkmark appears beside Thread enabled.
Note: In the Source window, the current execution line is reverse-highlighted
in black. When a thread becomes disabled, the current execution line for that
thread's Source Window changes to gray.
For guidance on designing and debugging multithreaded programs, see Debugging
Threads.
ΓòÉΓòÉΓòÉ 4.6.3. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Session Control window provides the following menus, buttons, and shortcut
keys:
File Breakpoints Monitors Run Options Windows Help
[Ctrl+E->Registers] [Ctrl+G->Storage] [Ctrl+K->Call Stack]
[Ctrl+P->Source] [Ctrl+R->Run] [Ctrl+V->Local variables] [Ctrl+X->
Breakpoint list]
The Session Control window also has a popup menu.
ΓòÉΓòÉΓòÉ 4.6.3.1. Shortcut Keys ΓòÉΓòÉΓòÉ
The Session Control window provides the following shortcut keys:
[Ctrl+E->Registers]
[Ctrl+G->Storage]
[Ctrl+K->Call Stack]
[Ctrl+P->Source]
[Ctrl+R->Run]
[Ctrl+V->Local variables]
[Ctrl+X-> Breakpoint list]
ΓòÉΓòÉΓòÉ 4.6.3.2. Breakpoints Menu ΓòÉΓòÉΓòÉ
Use the Breakpoints menu to set and delete breakpoints. It contains the
following choices:
Set line
Set function
Set storage change
Set load occurrence
List -- [Ctrl+X]
Delete All - Deletes all breakpoints
Related Information
Procedures
Delete All Breakpoints
ΓòÉΓòÉΓòÉ 4.6.3.3. Options Menu ΓòÉΓòÉΓòÉ
The Options menu in the Session Control window lets you change settings for the
window and for the debugger itself. It contains the following choices:
Window settings
Debugger settings
ΓòÉΓòÉΓòÉ 4.6.3.3.1. Display Style ΓòÉΓòÉΓòÉ
Select Options->Window settings->Display style to specify what you want
displayed in the Session Control window. The dialog contains the following
check boxes:
Check box Effect when checked
Show all components All components are displayed (when this choice is not
checked, only components with debug information are displayed)
Show module path The path name is displayed
Sort components Components are sorted in alphabetical order
Sort threads Threads are sorted in numerical order
Show status line A status line is displayed, showing the current state of the
debugger (for example, Executing)
ΓòÉΓòÉΓòÉ 4.6.3.3.2. Window Settings ΓòÉΓòÉΓòÉ
Select the Window settings cascading choices from the Session Control window
Options menu to modify these settings:
Fonts Lets you change the font for the Session Control window.
Display style Opens a Display Style dialog where you can specify how
information in the Session Control window should appear.
Restore defaults Resets all settings for the Session Control window to their
original values.
Tool buttons Displays or hides the toolbar buttons for the window.
Hover help Enables or disables hover help, which provides brief descriptions
of menu choices and toolbar buttons when your pointing device passes
over them.
Infoarea Enables or disables the window's information area, which provides
longer textual descriptions of menu choices and toolbar buttons when
your pointing device passes over them.
ΓòÉΓòÉΓòÉ 4.6.3.3.3. Set Breakpoints at Entry Points ΓòÉΓòÉΓòÉ
Select the Set breakpoints at entry points check box in the Debugger
Properties dialog of the Session Control window to automatically set a
breakpoint at each function.
ΓòÉΓòÉΓòÉ 4.6.3.4. Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
Popup menus are available for both the Threads pane and the Components pane of
the Session Control window.
In the Threads pane, when you highlight the main entry for a thread and click
mouse button 2, the popup menu displays a subset of the following choices:
Execution point -- opens or raises a Source window showing the next line
to be executed in the thread
Enable -- changes a disabled thread's state to enabled, so that it can
run (shown only for disabled threads)
Disable -- changes an enabled thread's state to disabled, to prevent it
from running (shown only for enabled threads)
Registers -- opens or raises a Registers monitor for that thread
Call Stack -- opens or raises a Call Stack window for that thread
Local variables -- opens or raises a Local Variables window for that
thread
In the Components pane, if you click mouse button 2 over a function, the popup
menu contains the following choices:
View -- open or raise a Source window for the file or function
Set function breakpoint -- set a breakpoint at the start of this
function, for the current thread only
Set breakpoint every -- set a breakpoint at the start of the function,
for all threads
If you click mouse button 2 over an object file, the popup menu contains only
the View choice.
ΓòÉΓòÉΓòÉ 4.6.3.5. Source ΓòÉΓòÉΓòÉ
Menu: Windows->Source from the Session Control window Keystroke: Ctrl+P
Opens or raises a Source window. When you use Ctrl+P to access a source window,
the source window raised or opened contains the contents of the active thread
and function. When you use the Windows menu and more than one Source window is
currently open, a Source choice is available for each open Source window.
ΓòÉΓòÉΓòÉ 4.7. Monitor Expression Dialog ΓòÉΓòÉΓòÉ
Use the Monitor Expression dialog to add a variable or expression to one of the
following monitors, which are listed in the dialog within a radio button group
box:
Popup
Private
Program
Storage
The current context is shown in an information group box. This is the context
(file, line number, etc.) that the debugger uses in evaluating the expression
you enter.
Type in an expression, and either click on OK or Monitor. OK closes the
dialog, while Monitor leaves the dialog open so that you can add more
expressions.
If the expression you want to add is already in your source code, you can
place that expression in the Expression entry field in the Monitor Expression
dialog as follows: highlight it with the mouse, then select Monitor->Monitor
expression or click on the toolbar button.
See Expressions Supported for more information on what types of expressions
the debugger supports.
Related Information
Concepts
Expressions
ΓòÉΓòÉΓòÉ 4.7.1. Current Context ΓòÉΓòÉΓòÉ
The context group box on the right side of the Monitor Expression dialog shows
the current execution point in your program: the file name, line number, type
of view, and thread number.
If you have tried to add an expression to a monitor and the debugger issues the
error message 'Expression validation failed', you may have included
out-of-scope variables or constants in your expression. If you are familiar
with the structure of your program, the Context group box may help you
determine if scoping problems are the cause of the error.
See Expressions Supported for information on what types of expressions the
debugger supports.
ΓòÉΓòÉΓòÉ 4.8. Popup Monitor ΓòÉΓòÉΓòÉ
A Popup monitor displays a variable or expression you select for monitoring.
This monitor is associated with a specific Source window and closes when the
associated window closes. Each time you add a variable or expression to a Popup
monitor, a new Popup monitor opens. The contents of each Popup monitor are
updated after each Step or Run command (except for disabled variables or
expressions within such windows).
You can do the following from a Popup monitor:
Access a popup menu using mouse button 2
Change the contents of a variable
The Popup monitor has the following menu items on its titlebar menu:
File
Options
Help
Related Information
Procedures
Add Expressions and Variables to a Monitor
ΓòÉΓòÉΓòÉ 4.8.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Popup monitor contains only one choice, Close Debugger.
ΓòÉΓòÉΓòÉ 4.8.2. Popup Menu for the Popup Monitor ΓòÉΓòÉΓòÉ
To access a popup menu from within a Popup window, place the pointer over a
monitored variable or expression, and click mouse button 2. Depending on the
variable or expression you selected, the popup menu provides a subset of the
following choices:
Edit
Next representation
Change font
Dereference (not available for COBOL)
Delete
Enable
Disable
ΓòÉΓòÉΓòÉ 4.8.2.1. Change Font ΓòÉΓòÉΓòÉ
Choose Change font from the popup menu in a Popup monitor to change the font
used within that particular monitor. Choose the desired font from the Font
Selection dialog that appears.
ΓòÉΓòÉΓòÉ 4.9. Private Monitor ΓòÉΓòÉΓòÉ
Use a Private monitor to monitor variables or expressions from a given Source
window. Each Source window can have its own Private monitor. This monitor is
similar to the Program monitor.
See the following for more information:
Introduction to the Private Monitor
Monitor popup menu
Menus, buttons, and shortcut keys
Related Information
Concepts
Differences between Program and Private Monitors
ΓòÉΓòÉΓòÉ 4.9.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Private monitor provides the following menus, buttons, and shortcut keys:
Edit Options Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
The Private monitor also has a popup menu. To access it, place the pointer
within the content area of the window and click mouse button 2.
ΓòÉΓòÉΓòÉ 4.9.1.1. Edit Menu ΓòÉΓòÉΓòÉ
The Edit menu of both the Program monitor and Private monitor contains the
following choices:
Delete
Delete all
Select all
Deselect all
Enable
Disable
Other elements
Representation
ΓòÉΓòÉΓòÉ 4.9.1.1.1. Delete ΓòÉΓòÉΓòÉ
Select Edit->Delete from the monitor menu bar, or Delete from a monitor popup
menu, to delete the selected variables or expressions from the monitor.
To delete all expressions, select Edit->Delete all.
ΓòÉΓòÉΓòÉ 4.9.1.1.2. Delete All ΓòÉΓòÉΓòÉ
Choose Edit->Delete all from the monitor menu bar to delete all expressions and
variables in the monitor.
Note: If you delete an expression or variable and then later decide that you
want to monitor it, you must add it again from the Source window.
ΓòÉΓòÉΓòÉ 4.9.1.1.3. Disable ΓòÉΓòÉΓòÉ
Select Edit->Disable from the monitor menu bar, or Disable from the monitor
popup menu, to prevent the displayed contents of the selected variables or
expressions from being updated when they change.
ΓòÉΓòÉΓòÉ 4.9.1.1.4. Enable ΓòÉΓòÉΓòÉ
Select Edit->Enable from the monitor menu bar to have the debugger refresh the
displayed contents of the selected variables or expressions whenever they
change. Variables and expressions are enabled by default, so this choice is
only available if a variable or expression has been disabled.
ΓòÉΓòÉΓòÉ 4.9.1.1.5. Other Elements ΓòÉΓòÉΓòÉ
If an array, structure, or C++ class object in a monitor contains more than 50
elements, only 50 elements are displayed at a time. By default, the first 50
elements are displayed. To display a different range of elements, select
Edit->Other elements (or select Other elements from the monitor popup menu),
and enter the number of the first element to display.
You can change the default maximum of 50 elements to a different maximum by
setting the DEBUG_NUMBEROFELEMENTS environment variable on the local
workstation before starting the debugger.
In a C++ class object, elements are listed in declaration order, regardless of
their access specifier (private, protected or public).
The 50-element limit applies to each level within an array or a C++ class
object. For example, if a C++ class contains 100 member variables and the first
variable is a 60-element array, the debugger displays the name of the array
only (with a '+' to its left so that you can expand it) and the next 49
elements of the C++ class object. When you expand the array, the debugger
displays the first 50 elements of the array, and the next 49 elements of the
C++ class object. To view more elements of the array, position the pointer on
the array name and select Other elements. To view more elements of the C++
class object, position the pointer on the object name and select Other
elements.
ΓòÉΓòÉΓòÉ 4.9.1.1.6. Representation, Next Representation ΓòÉΓòÉΓòÉ
Select Edit->Representation, or Next representation from the monitor popup
menu, to change the representation of monitor contents.
Edit->Representation:
The available representations for the selected variable or element are shown in
a cascading menu. For example, for a 32-bit signed integer, the available
representations are decimal and hexadecimal.
Next representation (from the monitor popup menu, or from the toolbar button):
The next representation of the selected variable or element is shown. The
debugger cycles through available representations in the same order as would be
shown in the Edit->Representation cascading menu list for the selected item.
ΓòÉΓòÉΓòÉ 4.9.2. Options Menu ΓòÉΓòÉΓòÉ
The Options menu of the Private and Program monitors contains the following
choices:
Fonts
Restore defaults
Show enablement
Show context
Tool buttons
Hover help
Infoarea
ΓòÉΓòÉΓòÉ 4.9.2.1. Show Enablement ΓòÉΓòÉΓòÉ
You can disable a variable or expression within a monitor so that its displayed
contents are not updated when the variable or expression changes. Later you can
enable the variable or expression so that its contents are updated. Select
Options->Show enablement if you want the current enablement of each variable or
expression to be shown. A column appears that shows either 'Enabled' or
'Disabled' for each entry in the monitor.
ΓòÉΓòÉΓòÉ 4.9.2.2. Show Context ΓòÉΓòÉΓòÉ
Select Options->Show context from a monitor window to display the following
information in separate columns for each object or array:
The name of the data set (PDS and member, if applicable) that contains
the source where the object or array is declared
The line number
The thread number
The variable or expression name
This information is only shown once for each object or array.
ΓòÉΓòÉΓòÉ 4.10. Program Monitor ΓòÉΓòÉΓòÉ
Use the Program monitor to collect variables or expressions that you want to
monitor. This monitor is not associated with any specific Source window, and is
always displayed unless you specifically close it. It is similar to the Private
monitor.
See the following for more information:
Introduction to the Program monitor
Monitor popup menu
Menus, buttons, and shortcut keys
Related Information
Concepts
Differences between Program and Private Monitors
ΓòÉΓòÉΓòÉ 4.10.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Program monitor provides the following menus, buttons, and shortcut keys:
File Edit Options Windows Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
The Program monitor also has a popup menu. To access it, position the pointer
in the content area of the window and click mouse button 2.
ΓòÉΓòÉΓòÉ 4.10.1.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Program monitor contains only one choice, Close Debugger.
ΓòÉΓòÉΓòÉ 4.11. Popup Menu for Private and Program Monitors ΓòÉΓòÉΓòÉ
When you select a variable or element in the Program monitor or a Private
monitor, and click mouse button 2, a popup menu appears with a subset of the
following choices:
Edit
Delete
Disable
Dereference (not available for COBOL)
Next representation
Other elements
ΓòÉΓòÉΓòÉ 4.11.1. Edit Contents ΓòÉΓòÉΓòÉ
To edit the contents of a variable in a monitor, do one of the following:
Select the line containing the variable, click mouse button 2, and select
Edit from the popup menu
Double-click on the content of the variable
Use the cursor keys or the mouse to highlight the line containing the
variable, and press Enter.
Then enter a new value and press Enter. This value must be valid for the type
of variable.
Related Information
Procedures
Change the Contents of Storage, Variables, and Registers
ΓòÉΓòÉΓòÉ 4.11.2. Dereference ΓòÉΓòÉΓòÉ
Note: The Dereference choice is not available for COBOL programs running on
OS/390.
Choose Dereference from the popup menu in a Program, Private, or Local
Variables monitor to show the storage contents of the selected pointer
variable.
This choice is available only when the variable you have selected is a pointer,
or is an array or object name displayed in pointer representation (with a '>'
to its left). To change an array or object to pointer representation, choose
Edit->Representation from the menu bar, or Next representation from the popup
menu.
ΓòÉΓòÉΓòÉ 4.12. Local Variables Monitor ΓòÉΓòÉΓòÉ
Use the Local Variables monitor to view all local variables that are currently
in scope. The Source window for each thread of your program has its own Local
Variables monitor.
See the following for more information:
Introduction to the Local Variables monitor
Local Variables popup menu
Menus, buttons, and shortcut keys
ΓòÉΓòÉΓòÉ 4.12.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
The Local Variables monitor provides the following menus, buttons, and shortcut
keys:
File Edit Options Windows Help
[Ctrl+B->Session Control] [Ctrl+R->Run]
The Local Variables monitor also has a popup menu. To access it, position the
pointer in the content area of the monitor and click mouse button 2.
ΓòÉΓòÉΓòÉ 4.12.1.1. File Menu ΓòÉΓòÉΓòÉ
The File menu of the Local Variables monitor contains only one choice, Close
Debugger.
ΓòÉΓòÉΓòÉ 4.12.1.2. Edit Menu ΓòÉΓòÉΓòÉ
The Edit menu of the Local Variables monitor contains the following choices:
Delete
Select all
Deselect all
Other elements
Representation
ΓòÉΓòÉΓòÉ 4.12.1.3. Options Menu ΓòÉΓòÉΓòÉ
The Options menu of the Local Variables monitor contains the following choices:
Fonts
Restore defaults
Show context
Tool buttons
Hover help
Infoarea
ΓòÉΓòÉΓòÉ 4.12.2. Popup Menu for the Local Variables Monitor ΓòÉΓòÉΓòÉ
When you select a variable or element in a Local Variables monitor and click
mouse button 2, a popup menu appears with a subset of the following choices:
Edit
Dereference (not available for COBOL)
Delete
Next representation
Other elements
ΓòÉΓòÉΓòÉ 4.13. Debugger Dialogs ΓòÉΓòÉΓòÉ
You can get to help on the following debugger dialogs from here:
Source List Dialog
Exception Dialog
Overloaded Dialog
Source Filename Dialog
Monitor Expression Dialog
Exception Filtering Dialog
See also the following main help pages:
Main Debugger Windows
Monitor Windows
Other Help Topics
Debugger Help Home Page
ΓòÉΓòÉΓòÉ 4.13.1. Debugger Properties Dialog ΓòÉΓòÉΓòÉ
Use the Debugger Properties dialog to define:
Whether to keep displaying, minimize, or discard a Source window from
which control has just passed
Whether multiple views can be displayed.
Whether to automatically set a breakpoint at every entry point.
Whether clicking on mouse button 2 will perform a step command or bring
up a popup menu.
This dialog contains the following group boxes:
Display at stop
Old source disposition
Settings
Mouse button 2 behavior
ΓòÉΓòÉΓòÉ 4.13.1.1. Display at stop Group Box ΓòÉΓòÉΓòÉ
The Display at stop group box lets you control how many Source windows are
displayed at once, and how many Source windows the Old source disposition
setting applies to. The choices are:
Only stopping thread Keeps, minimizes, or discards all views that are not the
stopping thread.
All threads Keeps, minimizes, or discards the views for old components within
each thread.
For example, if you select Only stopping thread, the Old source disposition
applies to all the Source windows except the current view of the stopping
thread. If you select All threads, the Old source disposition applies only to
the Source windows for the components from which execution has just left
within a thread.
ΓòÉΓòÉΓòÉ 4.13.1.2. Old source disposition Group Box ΓòÉΓòÉΓòÉ
The Old source disposition group box lets you control the behavior of Source
windows from which control has just passed. The choices are:
Keep Leaves old Source windows open
Minimize Changes old Source windows into icons
Discard Closes old Source windows
Note: The setting of the Display at Stop group box affects what Source windows
the Old source disposition choices apply to.
ΓòÉΓòÉΓòÉ 4.13.1.3. Settings Group Box ΓòÉΓòÉΓòÉ
The Settings group box contains the following:
The Multiple views check box, which you can select to display more than
one Source window for a particular object. If the check box is enabled,
when you open a new window for an object, the first window stays open and
is overlaid by the second one. If the check box is disabled, the first
window is closed when a second window is opened. The default is not to
display multiple Source windows.
The Set breakpoints at entry points check box. If this check box is
enabled, the debugger will set breakpoints at all functions for programs
that were compiled and linked with debug information.
ΓòÉΓòÉΓòÉ 4.13.1.4. Mouse button 2 behavior Group Box ΓòÉΓòÉΓòÉ
The behavior of mouse button 2 within the Source window depends on the Mouse
button 2 behavior group box in the Debugger properties dialog (accessed from
the Source or Session Control windows through Options->Debugger
settings->Debugger properties).
Select one of the following check boxes to determine how mouse button 2 will
behave in the Source window.
Popup menus Displays a popup menu, where one is available; otherwise does
nothing.
Step always Performs a step command.
Popup menus and step in white space Displays a popup menu, when the pointer is
over certain text (for example, a variable or a line number in the
prefix area), and performs a step command when the pointer is over
white space or over text for which no popup menu is available.
C++ example:.If Popup menus and step in white space is checked, and you click
mouse button 2 on the C++ source line int myVar=18;, a popup menu appears if
the pointer is over int, myVar, or 18, and a step command is performed if the
pointer is on white space or the = or ; symbols.
COBOL example: If Popup menus and step in white space is checked, and you
click mouse button 2 on the COBOL line MOVE 18 TO MYVAR., a popup menu appears
if the pointer is over MOVE, 18, TO, or MYVAR, and a step command is performed
if the pointer is on white space or the period.
ΓòÉΓòÉΓòÉ 4.13.2. Exception Dialog ΓòÉΓòÉΓòÉ
The Exception dialog is displayed whenever an exception is raised that matches
the exception category you specified in the Exception Filtering dialog. The
line where the exception occurred is highlighted in a Source window.
This dialog gives you three choices:
Examine/Retry The debugger behaves as if the exception did not occur,
continues execution at the instruction right after the one that
raised the exception, and stops execution at the next source
statement for which debug information is available. Depending on how
critical the original exception was, a new exception may be raised
before the debugger reaches the next source statement.
Step exception The debugger steps into the first registered exception handler
(tracked by the operating system). Execution stops at the first
executable line of code in that exception.
Run exception The debugger runs the exception handler that is registered to
handle the type of exception that was encountered.
ΓòÉΓòÉΓòÉ 4.13.3. Exception Filtering Dialog ΓòÉΓòÉΓòÉ
In the Exception Filtering dialog, select the types of exceptions you want the
debugger to recognize.
If an exception is encountered during execution, and that exception is in an
exception category you selected, the Exception dialog opens. Otherwise the
exception is ignored.
You can choose one of the following exception categories:
Test(NONE) The debugger does not recognize any exceptions
Test(ERROR) The debugger stops at all severity 2 or higher exceptions
Test(ALL) The debugger stops at all Language Environment (LE) exceptions
ΓòÉΓòÉΓòÉ 4.13.4. Find Function Dialog ΓòÉΓòÉΓòÉ
To use the Find Function dialog:
1. In the Function entry field, type the name of the function you want to
locate. An error message appears if a matching function was not found.
2. If you want to search only files that contain debugging information,
enable the Debugging information only check box.
3. If you want to search for the string exactly as typed, select the Case
sensitive check box. Do not select it if you want to search for both
uppercase and lowercase matches to the string.
4. Select OK.
If you specified a C++ function and the debugger finds more than one overload
of the function you specified, an Overloaded dialog opens, listing the
overloads of that function. Select the desired overload from that list.
ΓòÉΓòÉΓòÉ 4.13.5. Monitor Properties Dialog ΓòÉΓòÉΓòÉ
Use the Monitor Properties dialog to select the settings for monitoring
variables or expressions. You can set one check box in each of the following
group boxes (click on the Group box name for more information):
Group box Purpose
Monitor Location The window into which the variable or expression being
monitored is placed.
Popup Duration For a popup expression window, determines how long the monitors
are displayed.
ΓòÉΓòÉΓòÉ 4.13.5.1. Monitor Location ΓòÉΓòÉΓòÉ
Choose one of the following radio buttons to determine which monitor will open
when you select a variable or expression to monitor.
Popup monitor
Private monitor
Program monitor
Storage monitor
ΓòÉΓòÉΓòÉ 4.13.5.2. Popup Duration ΓòÉΓòÉΓòÉ
If you selected Popup in the Monitor Location group box, select one of the
following radio buttons to specify at what point the popup expression window is
closed.
Step/run The monitor closes when the next step or run command is executed.
New source The monitor closes when execution stops in a new source.
Permanent The monitor is associated with a specific Source window, and is
closed when that Source window is closed.
ΓòÉΓòÉΓòÉ 4.13.6. Open New Source Dialog ΓòÉΓòÉΓòÉ
Use the Open New Source dialog to open another Source window containing a new
executable or DLL for the program you are already debugging.
You may find it easier to open a new Source window by expanding components in
the Components pane of the Session Control window until you find the
compilation unit you want. The Open New Source dialog is useful for opening a
source view for a compile unit when you are unsure of the file name of the
executable that was created from that compile unit.
If you know the name of the compile unit, turn on the All executables check box
and type in the compile unit name, then select OK.
If you do not know the name of the compile unit, leave the Source field blank,
and turn off the All executables check box. You can then select an executable
from the Executable pulldown list. If you want to view only those executables
compiled and linked with debug information, turn on the Debugging information
only check box.
Once you have chosen an executable, click on OK (or press Enter) and a Source
List dialog displays with a list of the compilation units for that executable.
From this Source List dialog, select the compilation unit you want to open a
Source window for.
You can use Open new source to specify a partitioned data set member or a
sequential file. If the debugger cannot find a sequential file on the host, it
uses the file name to search on the workstation. If it cannot find a
partitioned data set member on the host, it extrapolates a workstation file
name from the member name and the end of the data set name, and searches for
that file on the workstation.
Related Information
Reference
Environment Variables
ΓòÉΓòÉΓòÉ 4.13.7. Overloaded Dialog ΓòÉΓòÉΓòÉ
When you specify a C++ function in a debugger entry field (for example, when
you are setting a function breakpoint), and the debugger finds more than one
overload of that function, an Overloaded dialog appears, containing a list of
all functions with the name you specified. Choose the function from the
displayed list that matches the function you wanted.
A signature is the combination of return type and argument types that
distinguish a C++ function from other functions of the same name.
ΓòÉΓòÉΓòÉ 4.13.8. Source List Dialog ΓòÉΓòÉΓòÉ
The Source List dialog opens if you select an executable in the Open New Source
dialog but do not specify a new source file to open.
The lefthand pane contains the names of executable files, and the righthand
pane shows corresponding compile units. Select a compile unit from the list,
and either click on OK or press Enter.
You can resize the panes by dragging the split bar between them to the left or
right.
ΓòÉΓòÉΓòÉ 4.13.9. Source Filename Dialog ΓòÉΓòÉΓòÉ
The Source Filename dialog is displayed when you try to debug a component that
contains debugging data for which the source code cannot be located. To respond
to this dialog, do one of the following:
If the source file is located in another partitioned data set or
sequential data set, type in the partitioned data set and member name or
the sequential data set name, and select OK.
If you do not have the source file for this component, select Cancel. No
Source window will be displayed.
ΓòÉΓòÉΓòÉ 4.14. Toolbar Buttons, Shortcut Keys, and Common Menu Items ΓòÉΓòÉΓòÉ
Each window of the debugger provides a subset of the following toolbar buttons,
shortcut keys, and menu choices:
Toolbar buttons:
Shortcut keys: [Ctrl+B] -->Raise Session Control window [Ctrl+R] -->Run
(The Source window and Session Control window have their own specialized
sets of shortcut keys.)
Menu choices:
File Edit Monitors Run Options Windows Help
ΓòÉΓòÉΓòÉ 4.14.1. Toolbar Buttons ΓòÉΓòÉΓòÉ
Toolbar buttons let you quickly access a wide range of commands and windows
from the Source and Session Control windows, and a lesser range from other
windows. These buttons are displayed when the Tool buttons item is set from a
window's Options menu (or from a menu beneath Options). The following toolbar
buttons are available:
ΓòÉΓòÉΓòÉ 4.14.1.1. Call Stack Button ΓòÉΓòÉΓòÉ
Click on the button to open or raise a Call Stack window containing the
contents of the call stack for the current thread. This is the same as
selecting Monitors->Call Stack or typing Ctrl+K.
ΓòÉΓòÉΓòÉ 4.14.1.2. Delete All Button ΓòÉΓòÉΓòÉ
Click on the button to delete all breakpoints in a breakpoint list, or to
delete all variables and expressions in a monitor.
ΓòÉΓòÉΓòÉ 4.14.1.3. Delete Button ΓòÉΓòÉΓòÉ
Click on the button to delete the selected breakpoint in a breakpoint list, or
to delete the selected variable or expression in a monitor.
ΓòÉΓòÉΓòÉ 4.14.1.4. Session Control Button ΓòÉΓòÉΓòÉ
Click on the button to bring the Session Control window into focus.
ΓòÉΓòÉΓòÉ 4.14.1.5. Monitor Expression Button ΓòÉΓòÉΓòÉ
Click on the button from the Source window to add a variable or expression to
one of the debugger monitors. In the Monitor expression dialog that opens,
enter a variable or expression to monitor.
If you highlight a variable or expression before you press the Monitor
expression button, that variable or expression is automatically placed in the
Monitor expression dialog.
See Expressions Supported for information on what types of expressions the
debugger supports.
ΓòÉΓòÉΓòÉ 4.14.1.6. Project Button ΓòÉΓòÉΓòÉ
Note: This button is only supported for versions of the debugger installed with
an IBM VisualAge product, and is only shown if the debugger was invoked from a
WorkFrame project.
Click on the Project button to open or raise the WorkFrame.
ΓòÉΓòÉΓòÉ 4.14.1.7. Registers Button ΓòÉΓòÉΓòÉ
Click on the button to open or raise a Registers monitor containing the
contents of processor registers for the current thread. This is the same as
selecting Monitors->Registers or typing Ctrl+E.
ΓòÉΓòÉΓòÉ 4.14.1.8. Storage Button ΓòÉΓòÉΓòÉ
Click on the button to open or raise a Storage monitor, which you can use to
display storage used by your program. This is the same as selecting
Monitors->Storage or typing Ctrl+G.
ΓòÉΓòÉΓòÉ 4.14.1.9. Breakpoints Button ΓòÉΓòÉΓòÉ
Click on the button to open or raise the Breakpoints list window, which you
can use to view, set, clear, disable, or enable breakpoints. This is the same
as selecting Breakpoints->List or typing Ctrl+X.
ΓòÉΓòÉΓòÉ 4.14.2. Common Menu Choices ΓòÉΓòÉΓòÉ
A subset of the following menus appears on many debugger windows:
File
Edit
Options -- you can view help for a short list of common options, or a
complete list of all available options
Monitors
Run
Windows
Help
The help for each debugger window contains appropriate links to the menus it
supports.
ΓòÉΓòÉΓòÉ 4.14.2.1. File Menu ΓòÉΓòÉΓòÉ
A subset of the following menu choices appears on the File menu of many
debugger windows:
Open new source
Locate function
Where is execution point -- [Ctrl+P]
Close debugger -- [F3]
The help for each debugger window contains appropriate links to the File menu
choices it supports.
ΓòÉΓòÉΓòÉ 4.14.2.1.1. Open New Source ΓòÉΓòÉΓòÉ
Note: The Open new module choice on the File menu is available only on the
Source and Session Control windows.
Select this choice when you want to view a source file that is associated with
your application, but is not currently shown in a Source window. The Open New
Source dialog displays.
Note: Open new source does not change the program being debugged. The source
file you select must be one that is used by the program you are currently
debugging.
ΓòÉΓòÉΓòÉ 4.14.2.1.2. Where is Execution Point ΓòÉΓòÉΓòÉ
Select Where is execution point from the File menu to view the next line to be
executed. If the file containing that line is already in a Source window, that
Source window has its focus raised; otherwise, a new Source window opens. The
next line to be executed is highlighted and has the cursor on it.
ΓòÉΓòÉΓòÉ 4.14.2.1.3. Close Debugger ΓòÉΓòÉΓòÉ
Select Close debugger from the File menu to end the program you are debugging
and exit the debugger.
When you close the debugger, the window positions, sizes, and other settings
are saved in a program profile. This profile is used the next time you debug
that program, to establish startup settings for the new debug session.
ΓòÉΓòÉΓòÉ 4.14.2.2. Edit Menu ΓòÉΓòÉΓòÉ
A subset of the following menu choices appears on the Edit menu of many
debugger windows:
Delete
Select all
Deselect all
The help for each debugger window contains appropriate links to the menu
choices it supports.
ΓòÉΓòÉΓòÉ 4.14.2.2.1. Delete ΓòÉΓòÉΓòÉ
Button: Shortcut key: [Delete] Menu: Edit->Delete (from Breakpoints List
window, and Program, Private, and Local Variables monitors)
Delete deletes the highlighted item or items in the current window. In a
Monitor window, the selected expressions or variables are deleted. In a
Breakpoint List window, the selected breakpoint is deleted (you can only select
one breakpoint at a time).
Note: When you delete a breakpoint, all information on it is lost. If you need
to temporarily prevent a breakpoint from stopping execution but you want to be
able to easily activate it later, you should disable it instead, by selecting
Edit->Disable.
Related Information
Procedures
Enable and Disable Breakpoints
ΓòÉΓòÉΓòÉ 4.14.2.2.2. Select All ΓòÉΓòÉΓòÉ
Select Edit->Select all from a Program or Private monitor to select all the
variables and expressions shown in the monitor. You can then individually
deselect certain variables, and use one of the available Edit menu choices to
delete, enable, or disable the remaining selected variables.
ΓòÉΓòÉΓòÉ 4.14.2.2.3. Deselect All ΓòÉΓòÉΓòÉ
Select Edit->Deselect all from a monitor to deselect all selected variables and
expressions shown in the monitor.
ΓòÉΓòÉΓòÉ 4.14.2.3. Options Menu ΓòÉΓòÉΓòÉ
The following Options menu choices are shared by several debugger windows:
Fonts Lets you change the font for the current window.
Restore defaults Resets all settings for this window to the debugger defaults
for the window.
Tool buttons Determines whether the toolbar buttons are displayed in the
window.
Hover help Enables or disables hover help, which provides brief descriptions
of menu choices and toolbar buttons when the pointer is placed over
them.
Infoarea Enables or disables the window's information area, which provides
longer textual descriptions of menu choices and toolbar buttons when
the pointer is placed over them.
ΓòÉΓòÉΓòÉ 4.14.2.4. Monitors Menu ΓòÉΓòÉΓòÉ
A subset of the following menu choices appears on the Monitors menu of the
Source and Session Control windows:
Monitor expression
Call Stack
Registers
Storage
Local variables
The help for each debugger window contains appropriate links to the menu
choices it supports.
ΓòÉΓòÉΓòÉ 4.14.2.4.1. Monitor Expression ΓòÉΓòÉΓòÉ
Select Monitors->Monitor expression to open a Monitor expression dialog. Here,
you can enter a variable or expression to monitor, and select what monitor to
display it in.
ΓòÉΓòÉΓòÉ 4.14.2.4.2. Call Stack ΓòÉΓòÉΓòÉ
Select Monitors->Call Stack to open a Call Stack window for the current thread.
Here, you can view the contents of the call stack to determine what calls are
currently in progress.
ΓòÉΓòÉΓòÉ 4.14.2.4.3. Registers ΓòÉΓòÉΓòÉ
Select Monitors->Registers to open a Registers monitor. Here, you can view or
alter the contents of registers for the processor of the machine that the
program being debugged is running on.
ΓòÉΓòÉΓòÉ 4.14.2.4.4. Storage ΓòÉΓòÉΓòÉ
Select Monitors->Storage to open a Storage monitor. Here, you can view or alter
the contents of storage used by your program.
ΓòÉΓòÉΓòÉ 4.14.2.4.5. Local Variables ΓòÉΓòÉΓòÉ
Select Monitors->Local variables to open a Local Variables monitor. Here, you
can view or alter the contents of variables that are currently in scope for a
given thread. When you select this choice from a Source window, the Local
Variables monitor uses the thread for that Source window. When you select it
from the Session Control window, the Local Variables monitor uses the currently
highlighted thread in the Threads pane.
ΓòÉΓòÉΓòÉ 4.14.2.5. Run Menu ΓòÉΓòÉΓòÉ
Use the Run menu to perform step commands, run your program, hide debugger
windows, and enable or disable threads. It contains the following choices:
Step over -- [O]
Step into -- [I]
Step return -- [T]
Run -- [R]
Run to location -- [L]
Jump to location -- [N]
Hide debugger on Run
Thread enabled
Shortcut keys (shown above in brackets) and toolbar buttons are available for
many of the Run menu choices. See the help panels for these choices for more
information.
ΓòÉΓòÉΓòÉ 4.14.2.5.1. Hide Debugger on Run ΓòÉΓòÉΓòÉ
Select Run->Hide debugger on Run to hide the debugger windows when your program
is running. This option does not affect the windows when you are stepping
through your program.
ΓòÉΓòÉΓòÉ 4.14.2.5.2. Thread Enabled ΓòÉΓòÉΓòÉ
Select Run->Thread enabled to allow the thread that is highlighted in the
Threads box of the Session Control window to execute when the program runs.
When threads are enabled, a check mark is displayed beside the Thread enabled
choice. This is the default setting.
When threads are not enabled, no check mark is displayed and the highlighted
thread is not executed when the program is run.
ΓòÉΓòÉΓòÉ 4.14.2.6. Project ΓòÉΓòÉΓòÉ
The Project menu is available when you have loaded the debugger from a
Workframe project. Use it to perform project-related tasks. The list of choices
depends upon the type of project, the platform, and the language. See the
WorkFrame online help for further information on the choices.
ΓòÉΓòÉΓòÉ 4.14.2.7. Options Menu ΓòÉΓòÉΓòÉ
Use the Options menu to change the appearance and behavior of the debugger. You
can change settings for the particular window from which you access the menu,
and settings for the debugger itself. This menu contains the following choices:
Window settings
Debugger settings
ΓòÉΓòÉΓòÉ 4.14.2.7.1. Window Settings ΓòÉΓòÉΓòÉ
Select the Window settings cascading choices to modify these settings for the
window from which you access the Options menu:
Colors (Source window only) Lets you change the colors used in the Source
window.
Fonts (Source window only) Lets you change the font for the Source window.
Only fixed-pitch fonts are available.
Display style Opens a dialog where you can specify how information in this
window should appear. Additional help is available for the Session
Control window.
Monitor expression (Storage monitor only) Opens a Monitor Expression in
Storage dialog, where you can enter an expression for monitoring in
storage.
Restore defaults Resets all settings for this window to their original values.
Notebook (Source window only) Displays source files within the Source window
in a notebook format.
Tool buttons Displays or hides the toolbar buttons for the window.
Hover help Enables or disables hover help, which provides brief descriptions
of menu choices and toolbar buttons when your pointing device passes
over them.
Infoarea Enables or disables the window's information area, which provides
longer textual descriptions of menu choices and toolbar buttons when
your pointing device passes over them.
ΓòÉΓòÉΓòÉ 4.14.2.7.2. Debugger Settings ΓòÉΓòÉΓòÉ
Select the Debugger settings cascading choices to modify debugger settings:
Debugger properties
Monitor properties
Default data representation
Program profiles
Exception filtering
Save debugger window positions
Global font change
Enable window cascading
Display tool buttons -- shows the toolbar buttons at the top of each
window
Display hover help -- displays a help bubble, when one is available, near
the pointer when you move the pointer over a tool button
Display infoarea -- displays a line of help, when one is available, at
the bottom of the window when you move the pointer to a new area of the
window.
ΓòÉΓòÉΓòÉ 4.14.2.7.2.1. Default Data Representation ΓòÉΓòÉΓòÉ
Note: You cannot change the default data representation when debugging COBOL
programs on OS/390. The Character data representation is the default.
Select Options->Debugger settings->Default data representation to specify how
you want your data represented in the monitors. A cascading menu appears with
choices for the languages supported by the debugger.
ΓòÉΓòÉΓòÉ 4.14.2.7.2.2. Program Profiles ΓòÉΓòÉΓòÉ
Select Options->Debugger settings->Program profiles to specify where you want
the debugger program profiles stored, what profile information to save, or what
profiles to delete. This menu has three choices:
Select information Select the types of information to save in the program
profile. If Save profile information is checked, your changes to
this list will be saved for future debugging sessions. If it is not
checked, your changes will only affect profiles saved until you exit
this session of the debugger.
Delete program profiles A dialog opens with a list of program profiles. Select
those profiles you want to delete, and click on OK. Profile
filenames are similar to their associated program filenames,but have
an extension that contains the character '@'.
Change location Change the location of the files that hold the debugger
settings. Enter the new path for program profiles in the Change
location dialog.
ΓòÉΓòÉΓòÉ 4.14.2.7.2.3. Exception Filtering ΓòÉΓòÉΓòÉ
Select Options->Debugger settings->Exception filtering to open the Exception
Filtering dialog. Select the types of exceptions that you want the debugger to
recognize.
ΓòÉΓòÉΓòÉ 4.14.2.7.2.4. Save Debugger Window Positions ΓòÉΓòÉΓòÉ
Select Options->Debugger Settings->Save debugger window positions to save the
position and size of each debugger window that is currently open, so that these
settings are used the next time you start the debugger.
ΓòÉΓòÉΓòÉ 4.14.2.7.2.5. Global Font Change ΓòÉΓòÉΓòÉ
Select Debugger Settings->Global font change to change the font in all debugger
windows. (The font you choose affects all debugger windows except Source
windows.)
ΓòÉΓòÉΓòÉ 4.14.2.7.2.6. Enable Window Cascading ΓòÉΓòÉΓòÉ
Select Debugger Settings->Enable window cascading to display newly opened
debugger windows offset to the right of and below previous windows, so that you
can see the titles of previous windows.
If this choice is disabled, successive windows will overlay earlier ones.
ΓòÉΓòÉΓòÉ 4.14.2.7.3. Windows Menu ΓòÉΓòÉΓòÉ
The Windows menu lists the currently open debugger windows, including Source
windows, monitors, the Breakpoints List window, and the Session Control window.
To switch to a different window, select this menu from any window where the
option is available, and click on the window you want to go to.
When you minimize the debugger, some of its windows may not be on the list of
windows displayed by the operating system. To access a minimized window not on
the window list, select the Session Control window, then use the Windows menu
to access the window you want.
ΓòÉΓòÉΓòÉ 4.14.2.7.4. Help ΓòÉΓòÉΓòÉ
The Help menu provides help for the current window and for other help on the
debugger. The following choices are available:
Help index -- displays a list of index entries within the help file.
General help -- displays high-level help for the current window.
Using help -- displays help on how to access and use help features of the
debugger.
How do I -- displays task-oriented help for common debugger tasks.
Product information -- displays the logo screen for the debugger.
If you want to search for a string within a help file, click on Search from
the help window, enter the search string in the entry field, select All
sections, and click on Search.
ΓòÉΓòÉΓòÉ 4.14.3. Step Into ΓòÉΓòÉΓòÉ
Button: Shortcut key: [I] Menu: Run->Step into (from Source window)
The Step Into command executes the current line in the program. If the current
line is a call, and debug information is available for any function called
before the return to the current function, execution halts at the first
statement for which debug information is available. If no debug information is
available, execution halts after the call.
For example, if A calls B and A is compiled without debug information, while B
is compiled with debug information, after a Step Into command from a call to A,
execution will stop at the first executable statement of B.
C++ only: If the current line contains a complex call (for example
p->memberFunc1()->memberFunc2().memberFunc3(func1(), func2())), the debugger
examines each call (and any calls beneath it) for functions containing debug
information, and steps into the first such function. The order in which it
examines the calls is based on the order of the calls in the assembly code,
which is not necessarily the order in which the calls appear in the source
code.
ΓòÉΓòÉΓòÉ 4.14.4. Step Over ΓòÉΓòÉΓòÉ
Button: Shortcut key: [O] Menu: Run->Step over (from Source window)
The Step Over command executes the current line in the program. If the current
line is a call, execution stops at the line following the call.
If you step over a function that contains a breakpoint, execution stops at the
breakpoint.
ΓòÉΓòÉΓòÉ 4.14.5. Step Return ΓòÉΓòÉΓòÉ
Button: Shortcut key: [T] Menu: Run->Step return (from Source window)
The Step Return command executes the code up to and including the return
statement of the current function. Execution halts at the line following the
call to the current function.
ΓòÉΓòÉΓòÉ 4.14.6. Run ΓòÉΓòÉΓòÉ
Button: Shortcut key: [R] from Source/Session Control windows, [Ctrl+R] from
other windows Menu: Run->Run (from Source/Session Control windows)
Run executes the program. The debugger starts executing where it last stopped
(for example, at a breakpoint) or, if you have not yet run the program in this
session, at the beginning of the program. When you select Run, execution
continues until one of the following occurs:
The debugger encounters a breakpoint
An exception is encountered that is not handled
The program terminates
You close the debugger
Related Information
Procedures
Run a Program
ΓòÉΓòÉΓòÉ 4.14.7. Halt ΓòÉΓòÉΓòÉ
Button: Shortcut key: [SysRq] Menu: Run->Halt (from Source/Session Control
windows)
Halt, which is available only while the program is running, stops execution
immediately. The Source window is updated with the current line set to the next
line to be executed.
ΓòÉΓòÉΓòÉ 4.14.8. Jump to Location ΓòÉΓòÉΓòÉ
Shortcut key: [N] Menu: Run->Jump to location (from Source/Session Control
windows)
Jump to location makes the currently highlighted line in the Source window the
current line, without executing any code. You can view an example in C++ or
COBOL to see how Jump to location works.
Caution: When you jump to a location, you may alter the flow of your program in
ways that make it difficult to continue debugging later in the same session:
The stack can become corrupted if you jump to a location outside the
current function.
Some compilers optimize register usage in ways that can corrupt variables
or program flow when you use Jump to Location. For example, if the
compiler keeps track of register contents and can determine that a
register contains the value 1 at the start of a statement that
initializes an integer variable to 1, it may simply copy that register's
contents to the variable. If you step over the statement that involved
setting the register to 1, the variable may not contain the expected
contents.
ΓòÉΓòÉΓòÉ 4.14.9. Run to Location ΓòÉΓòÉΓòÉ
Shortcut key: [L] Menu: Run->Run to location (from Source/Session Control
windows)
Run to location executes the program up to the currently highlighted line in
the Source window. The debugger starts executing where it last stopped (for
example, after a breakpoint) or, if you have not yet run the program in this
session, at the beginning of the program. When you select Run to location,
execution continues until one of the following occurs:
Execution reaches the location (the line) you selected in the Source
window
The debugger encounters a breakpoint
An exception is encountered that is not handled
The program terminates
You close the debugger
ΓòÉΓòÉΓòÉ 4.14.10. Session Control ΓòÉΓòÉΓòÉ
Button: Menu: Windows->Session Control Keystroke: Control-B
Use this button, menu selection, or shortcut key to raise the Session Control
window.
ΓòÉΓòÉΓòÉ 4.14.11. Local Variables ΓòÉΓòÉΓòÉ
Menu: Monitors->Local variables Keystroke: Ctrl+V
Opens or raises a Local Variables window, which displays the names and contents
of variables that are in scope within the current thread or function.
ΓòÉΓòÉΓòÉ 4.14.12. Delete ΓòÉΓòÉΓòÉ
Select Edit->Delete from a Local Variables monitor, or Delete from a monitor
popup menu, to delete the selected expressions from the monitor.
To delete all expressions, select Edit->Select all, then Edit->Delete.
ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Session Control Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete All Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Session Control Window ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Open New Source ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Where is Execution Point ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Find Function Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitors Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Call Stack Window ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Registers Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Storage Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Local Variables Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Run Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Halt ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Hide Debugger on Run ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Thread Enabled ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Debugger Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Debugger Properties Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Properties Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Exception Filtering ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Save Debugger Window Positions ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Global Font Change ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Enable Window Cascading ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Source Window ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Open New Source ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Where is Execution Point ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Find Function Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> View Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Find ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Find Next ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Scroll to Line Number ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Select Include ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Change Text File ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Toggle at Current Line ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitors Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Expression Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Call Stack Window ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Registers Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Storage Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Local Variables Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Run Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Step Over ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Step Into ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Step Return ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Halt ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Run to Location ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Jump to Location ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Hide Debugger on Run ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Thread Enabled ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Debugger Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Debugger Properties Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Properties Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Exception Filtering ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Save Debugger Window Positions ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Global Font Change ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Enable Window Cascading ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints List Window ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Modify ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Disable All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Enable All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Sort ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> View ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Modify ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Call Stack Window ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> View Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Private Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Select All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Deselect All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Enable ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Show Context ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Show Enablement ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Select All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Deselect All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Enable ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Show Context ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Show Enablement ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Local Variables Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Select All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Deselect All ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Show Context ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Show Enablement ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Popup Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Edit Contents ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Dereference ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Registers Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Storage Monitor ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Expression in Storage ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Shortcut Keys ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Exception Filtering Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Exception Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Find Function Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Expression Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Properties Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Open New Source Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Overloaded Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Overloaded Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Change Text File ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Source Filename Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Debugger Properties Dialog ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Scroll to Line Number ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Find ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Select Include ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Expression in Storage ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Step Into ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Step Over ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Step Return ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Call Stack Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Registers Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Storage Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Session Control Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Monitor Expression Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Breakpoints Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Growth Direction Push button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete Button ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ