home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vacbdbg.zip / betadbg.zip / help / derdhx1.hlp (.txt) < prev    next >
OS/2 Help File  |  1998-02-13  |  280KB  |  9,507 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Procedure Help for Debugger ΓòÉΓòÉΓòÉ
  3.  
  4. The Debugger Online Help is divided into four types of information: 
  5.  
  6.      Procedures - how to perform a specific task or set of tasks 
  7.  
  8.      Reference - technical information you may need to understand how to 
  9.       perform a task 
  10.  
  11.      User Interface - context-sensitive help pages displayed when you press F1 
  12.       from within the debugger 
  13.  
  14.      Concepts - overview information you may need to understand basic 
  15.       principles of debugging or components of the debugger interface 
  16.  
  17.  Procedure help is organized hierarchically, so that you start from a 
  18.  high-level task and follow it down to the specific task you want to perform. 
  19.  Help is available for the following high-level tasks: 
  20.  
  21.      Prepare a program for debugging 
  22.  
  23.      Start or stop debugging a program 
  24.  
  25.      Set breakpoints in your program 
  26.  
  27.      Step through, run, or halt your program 
  28.  
  29.      Debug variable contents and memory 
  30.  
  31.      Debug logic and program flow 
  32.  
  33.  
  34. ΓòÉΓòÉΓòÉ 1.1. Prepare a Program for Debugging ΓòÉΓòÉΓòÉ
  35.  
  36. To prepare a program for debugging, you may need to perform some or all of the 
  37. following tasks: 
  38.  
  39.      Establish a debug environment 
  40.  
  41.      Write programs for debugging 
  42.  
  43.      Compile a program for debugging 
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 1.1.1. Establish a Debug Environment ΓòÉΓòÉΓòÉ
  47.  
  48. To establish a debug environment, you need to perform some or all of the 
  49. following tasks: 
  50.  
  51.      Set environment variables for the debugger 
  52.  
  53.      Specify command-line options for your program 
  54.  
  55.      Start the debug session 
  56.  
  57.  
  58. ΓòÉΓòÉΓòÉ 1.1.1.1. Set Environment Variables for the Debugger ΓòÉΓòÉΓòÉ
  59.  
  60. The debugger user interface running on the workstation uses certain environment 
  61. variables to determine where it looks for source files, executables, online 
  62. help, and so on. See the Related Topics below for help on the environment 
  63. variables themselves. 
  64.  
  65. To set an environment variable for a given session of the debugger, do the 
  66. following on your OS/2 or Windows workstation: 
  67.  
  68.    1. Open a command shell window. 
  69.  
  70.    2. Use the SET command to set each environment variable to the required 
  71.       value: 
  72.  
  73.             SET VARNAME=VAL1;VAL2;VAL3
  74.  
  75.       where VARNAME is the name of the environment variable, and VAL1, VAL2, 
  76.       and VAL3 are values assigned to it (normally multiple values for a 
  77.       variable are separated by semicolons). 
  78.  
  79.       If you want to add more values to an existing variable, use the following 
  80.       syntax: 
  81.  
  82.             SET VARNAME=%VARNAME%;VAL4;VAL5
  83.  
  84.       This adds both the existing contents of VARNAME and the new values to the 
  85.       variable. 
  86.  
  87.    3. Invoke the debugger user interfacefrom that command shell. 
  88.  
  89.  If you want to set these environment variables permanently, do the following, 
  90.  depending on the operating system you are using: 
  91.  
  92.  From Control Panel select System, then within the System notebook choose the 
  93.  Environment tab. Select the variable you want to change from the list, or 
  94.  enter a new variable name in the Variable entry field, and enter its values in 
  95.  the Value entry field. Click on OK or Apply to save the changed or new 
  96.  variable. 
  97.  
  98.  Add the SET... commands to your CONFIG.SYS file. A reboot is required for 
  99.  these changes to take effect. 
  100.  
  101.  Related Information 
  102.  
  103.  Reference 
  104.  Environment Variables 
  105.  
  106.  
  107. ΓòÉΓòÉΓòÉ 1.1.1.2. Start the Debugger ΓòÉΓòÉΓòÉ
  108.  
  109. You can start a local debug session on OS/2, Windows 95, or Windows NT from the 
  110. command shell using the following syntax: 
  111.  
  112. idbug [ debugger-options] [program-name [program-parameters]] 
  113.  
  114. where: 
  115.  
  116.  debugger-options includes zero or more valid options supported by the 
  117.            debugger. 
  118.  
  119.  program-name is one of: 
  120.  
  121.                The name of an executable file, with a valid path (or no path, 
  122.                 if the executable is locatable through the PATH environment 
  123.                 variable), and the extension .EXE (optional) 
  124.  
  125.                The name of a post mortem dump file (OS/2 only) 
  126.  
  127.  program-parameters includes zero or more parameters your program expects; for 
  128.            C++ programs, these parameters are usually accessed by your program 
  129.            through the argc and argv arguments to the main function. 
  130.  
  131.  If you do not specify a program name, the debugger opens a Startup dialog in 
  132.  which you can choose what you want to debug. 
  133.  
  134.  Related Information 
  135.  
  136.  Reference 
  137.  Debugger Options 
  138.  Postmortem Debugging 
  139.  
  140.  Procedures 
  141.  Attach to a Process 
  142.  Debug a DLL 
  143.  
  144.  
  145. ΓòÉΓòÉΓòÉ 1.1.1.3. Invoke the Debugger ΓòÉΓòÉΓòÉ
  146.  
  147. You can invoke the debugger remotely (where the program being debugged, and the 
  148. debugger user interface, are on different machines or operating systems), or 
  149. locally. 
  150.  
  151. Related Information 
  152.  
  153. Concepts 
  154. Remote Debugging 
  155.  
  156. Procedures 
  157. Start the Debugger 
  158.  
  159.  
  160. ΓòÉΓòÉΓòÉ 1.1.1.3.1. Specify Command-Line Parameters for Your Program ΓòÉΓòÉΓòÉ
  161.  
  162. You can specify command-line parameters for your program either from the 
  163. command shell where you invoke the debugger, or in the Startup dialog of the 
  164. debugger. 
  165.  
  166. Specify Parameters from a Command Shell 
  167.  
  168. To pass arguments to your program from a command shell, make sure that they 
  169. appear after the name of the program on the command line: 
  170.  
  171. idbug /debugger-options program-name program-parameters
  172.  
  173. where debugger-options are any options supplied to the debugger itself, 
  174. program-name is the name of the executable you want to debug, and 
  175. program-parameters are the arguments or parameters you want to pass to your 
  176. program. 
  177.  
  178. Specify Parameters from the Startup Dialog 
  179.  
  180. To pass arguments to your program from a startup dialog, do the following: 
  181.  
  182.    1. Open the startup dialog, either by invoking the debugger without a 
  183.       program name, or by choosing File->Startup from the Session Control 
  184.       window or a Source window. 
  185.  
  186.    2. Enter the name of the program you want to debug in the Program entry 
  187.       field, or select a file from the pulldown list. 
  188.  
  189.    3. Enter the program parameters in the Parameters field. 
  190.  
  191.    4. Click on OK to start debugging the program with the supplied command-line 
  192.       parameters. 
  193.  
  194.  Related Information 
  195.  
  196.  Procedures 
  197.  Invoke the Debugger 
  198.  Start or Stop Debugging a Program 
  199.  
  200.  Reference 
  201.  Debugger Options 
  202.  
  203.  
  204. ΓòÉΓòÉΓòÉ 1.1.1.4. Use the Source Window ΓòÉΓòÉΓòÉ
  205.  
  206. Use the Source window to view the progress of your program as you debug it. The 
  207. Source window displays your program's source code, disassembled code, or both, 
  208. and updates the display after each step or run command. You can set or clear 
  209. breakpoints, add variables or expressions to a monitor, and more. See the 
  210. following tasks related to using the Source window: 
  211.  
  212.      Change views in a Source window 
  213.  
  214.      View different source files 
  215.  
  216.      Set and clear breakpoints 
  217.  
  218.      Add expressions and variables to a monitor 
  219.  
  220.      Run, step through, start and stop your program 
  221.  
  222.      Open other windows and monitors 
  223.  
  224.  Related Information 
  225.  
  226.  Concepts 
  227.  How Step Commands Work in Different Views 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 1.1.1.4.1. View Different Source Files ΓòÉΓòÉΓòÉ
  231.  
  232. When you start the debugger, a single Source window appears. 
  233.  
  234. If your executable file was linked from several object files, you can open a 
  235. Source window for each object, and view several source files at once: 
  236.  
  237.    1. Raise the Session Control window by selecting it from the Windows menu of 
  238.       any main debugger window 
  239.  
  240.    2. Click on the + icon beside the name of the executable, to open a list of 
  241.       object files 
  242.  
  243.    3. Double-click on the object file you want to view. If that object file is 
  244.       not already in a Source window, a new Source window opens containing the 
  245.       source file for that object file. 
  246.  
  247.  You can also open new Source windows from the File menu of the Session Control 
  248.  window or of an existing Source window: 
  249.  
  250.    1. Select File->Open new source 
  251.  
  252.    2. Enter the name of the source file. This source file must be a part of the 
  253.       application you are currently debugging. 
  254.  
  255.    3. Click on OK. A Source window for the new source file opens, if the 
  256.       debugger is able to locate the file. 
  257.  
  258.  Related Information 
  259.  
  260.  Procedures 
  261.  Change Views in a Source Window 
  262.  Open Other Debugger Windows 
  263.  Use the Source Window 
  264.  
  265.  Reference 
  266.  Problems Getting a Source or Mixed View 
  267.  
  268.  
  269. ΓòÉΓòÉΓòÉ 1.1.1.4.2. Change Views in a Source Window ΓòÉΓòÉΓòÉ
  270.  
  271. The Source window supports three views for programs compiled with debug 
  272. information: 
  273.  
  274.      Source -- you see your program's source code 
  275.  
  276.      Disassembly -- you see the assembly code that the debugger disassembles 
  277.       from the executable or DLL 
  278.  
  279.      Mixed -- a combination of source code and disassembly code 
  280.  
  281.  You can use the  toolbar button to toggle through available views, or you can 
  282.  go directly to a particular view by selecting that view from the View menu. 
  283.  For example, to switch to a disassembly view, select View->Disassembly. 
  284.  
  285.  Related Information 
  286.  
  287.  Concepts 
  288.  Source View 
  289.  Disassembly View 
  290.  Mixed View 
  291.  
  292.  Procedures 
  293.  View Different Source Files 
  294.  
  295.  Reference 
  296.  Problems Getting a Source or Mixed View 
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ 1.1.1.5. Open Other Debugger Windows ΓòÉΓòÉΓòÉ
  300.  
  301. You can open other Source windows from a Source window or from the Session 
  302. Control window. 
  303.  
  304. To open a monitor window from a Source window, click on a monitor toolbar 
  305. button or select the desired monitor from the Monitors menu. You can also open 
  306. a monitor window by adding a variable to that monitor, in one of the following 
  307. ways: 
  308.  
  309.      Click the right mouse button on the variable in the Source window, then 
  310.       select the appropriate monitor from the popup menu. 
  311.  
  312.      Double-click the left mouse button on the variable, to add the variable 
  313.       to the Program monitor. 
  314.  
  315.      Click the right mouse button on the variable, press Ctrl+M, and select 
  316.       the desired monitor from the Monitor Expression dialog. 
  317.  
  318.  To open the Breakpoints list window, select Breakpoints->List from the menu 
  319.  bar, or press Ctrl+X. 
  320.  
  321.  To change the focus from a Source window to another window that is already 
  322.  opened (or minimized), select that window from the Windows menu. 
  323.  
  324.  Related Information 
  325.  
  326.  Procedures 
  327.  View Different Source Files 
  328.  Add Expressions and Variables to a Monitor 
  329.  
  330.  
  331. ΓòÉΓòÉΓòÉ 1.1.2. Debug Optimized Code ΓòÉΓòÉΓòÉ
  332.  
  333. Problems that only surface during optimization are often an indication of logic 
  334. errors that are exposed by optimization, for example using a variable that has 
  335. not been initialized. If you encounter an error in your program that only 
  336. occurs in the optimized version, you can usually find the cause of the error 
  337. using a binary search technique to find the failing module: 
  338.  
  339.    1. Begin by optimizing half the modules and see if the error persists. 
  340.  
  341.    2. After each change in the number of optimized modules, if the error 
  342.       persists, optimize fewer modules; if the error goes away, optimize more 
  343.       modules. Eventually you will have narrowed the error down to a single 
  344.       module or a small number of modules. 
  345.  
  346.    3. Debug the failing module. If possible, turn off the instruction 
  347.       scheduling optimizations for that module. Look for problems such as 
  348.       reading from a variable before it has been written to, and pointers or 
  349.       array indices exceeding the bounds of storage allocated for the pointer 
  350.       or array. 
  351.  
  352.  See the Reference information below for tips on uncovering problems with 
  353.  optimized code you are debugging. 
  354.  
  355.  Related Information 
  356.  
  357.  Reference 
  358.  Notes on Debugging Optimized Code 
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 1.1.3. Write Programs for Debugging ΓòÉΓòÉΓòÉ
  362.  
  363. You can make your programs easier to debug by following these simple 
  364. guidelines: 
  365.  
  366.      Do not hand-tune your source code for performance until you have fully 
  367.       debugged and tested the untuned version. Hand tuning may introduce new 
  368.       bugs or make the logic of your code harder to understand. 
  369.  
  370.      Where possible, do not put multiple statements on a single line, because 
  371.       some debugger features operate on a line basis. For example, you cannot 
  372.       step over or set line breakpoints on more than one statement on the same 
  373.       line. 
  374.  
  375.      Assign intermediate expression values to temporary variables to make it 
  376.       easier to verify intermediate results. 
  377.  
  378.  To be able to debug your programs at the level of source code statements, you 
  379.  must specify C++ or COBOL or PL/I compiler options that generate debug 
  380.  information, and in some cases you must specify options that enable the 
  381.  debugger to work properly with your code. 
  382.  
  383.  Related Information 
  384.  
  385.  Reference 
  386.  
  387.  C++ Compiler Opetions 
  388.  COBOL Compiler Options on Intel Platforms 
  389.  Intel Options for PL/I Programs 
  390.  
  391.  
  392. ΓòÉΓòÉΓòÉ 1.1.4. Compile a Program for Debugging ΓòÉΓòÉΓòÉ
  393.  
  394. In order to be able to debug your program at the source code level, you need to 
  395. compile your program with certain compiler options that instruct the compiler 
  396. to generate symbolic information in the object file. The Related Topics section 
  397. below points to information on how to compile your program for a specific 
  398. environment. 
  399.  
  400. Related Information 
  401.  
  402. Reference 
  403. C++ Compiler Options on Intel Platforms 
  404. COBOL Compiler Options on Intel Platforms 
  405. PL/I Compiler Options on Intel Platforms 
  406.  
  407. Procedures 
  408. Debug Optimized Code 
  409. Write Programs for Debugging 
  410.  
  411.  
  412. ΓòÉΓòÉΓòÉ 1.2. Start or Stop Debugging a Program ΓòÉΓòÉΓòÉ
  413.  
  414. To start or stop debugging a program, you will need to know how to perform some 
  415. of the following subtasks: 
  416.  
  417.      Invoke the debugger 
  418.  
  419.      Start debugging an already running process (not available from OS/2) 
  420.  
  421.      Start debugging a DLL 
  422.  
  423.      Set breakpoints in your program 
  424.  
  425.      Step through, run, or halt a program 
  426.  
  427.  
  428. ΓòÉΓòÉΓòÉ 1.2.1. Attach to a Process ΓòÉΓòÉΓòÉ
  429.  
  430. You can attach to an already running process (on Windows 95 and Windows NT ) 
  431. from the Startup dialog, or from the Process list item on the File menu of the 
  432. Source or Session Control windows. 
  433.  
  434. The Startup dialog appears when you start the debugger and do not specify a 
  435. program to debug. You can also get to this dialog by choosing File->Startup 
  436. from the Source or Session Control windows. Choose Process list from the 
  437. Startup dialog, and select a process to debug. 
  438.  
  439. Select a process from the process list. See under 'Related Topics' for guidance 
  440. on when to attach to a process, and for more details on using the Process List 
  441. dialog. 
  442.  
  443. When you attach to a process, the Run->Restart menu item is disabled. 
  444.  
  445. Related Information 
  446.  
  447. Procedures 
  448. Invoke the Debugger 
  449.  
  450. Reference 
  451. When to Use the Process List Dialog 
  452.  
  453.  
  454. ΓòÉΓòÉΓòÉ 1.2.2. Debug a DLL ΓòÉΓòÉΓòÉ
  455.  
  456. To debug functions within a DLL, you first need to do the following: 
  457.  
  458.    1. Compile the DLL source files with symbolic information, if you have 
  459.       access to them and you want to be able to debug DLL functions at the 
  460.       source code level. 
  461.  
  462.    2. If you do not already have an executable program that calls the DLL 
  463.       functions you want to debug, write such a program and link it to the DLL. 
  464.       See your compiler documentation for information on how to do this. For 
  465.       VisualAge for C++ for Windows and VisualAge for C++ for OS/2, see the 
  466.       corresponding Programming Guide. 
  467.  
  468.  Related Information 
  469.  
  470.  Procedures 
  471.  Set a Deferred Breakpoint 
  472.  Start Debugging a DLL from a Load Occurrence Breakpoint Dialog 
  473.  Start Debugging a DLL from a Source Window 
  474.  Start Debugging a DLL from the Breakpoints List Window 
  475.  Start Debugging a DLL from the Session Control Window 
  476.  
  477.  
  478. ΓòÉΓòÉΓòÉ 1.2.2.1. Set a Deferred Breakpoint ΓòÉΓòÉΓòÉ
  479.  
  480. A deferred breakpoint is a breakpoint set in a DLL that is not currently 
  481. loaded. 
  482.  
  483. To set a deferred line breakpoint, do the following: 
  484.  
  485.    1. Open a Line breakpoint dialog in one of the following ways: 
  486.  
  487.           From a Source window or the Session Control window, select 
  488.            Breakpoints->Set line 
  489.  
  490.           From a Breakpoint List window, select Set->Set line. 
  491.  
  492.    2. Choose the DLL from the Executable pull-down field. 
  493.  
  494.    3. Choose the source file from the Include File pull-down field. 
  495.  
  496.    4. Enter the line number where you want the breakpoint set 
  497.  
  498.    5. Specify any additional information you wish in the Optional Parameters 
  499.       group box. 
  500.  
  501.    6. Check the Defer breakpoint check box. 
  502.  
  503.    7. Click on OK or press Enter. 
  504.  
  505.  Related Information 
  506.  
  507.  Procedures 
  508.  Debug a DLL 
  509.  Start Debugging a DLL from a Load Occurrence Breakpoint Dialog 
  510.  Start Debugging a DLL from a Source Window 
  511.  Start Debugging a DLL from the Session Control Window 
  512.  
  513.  
  514. ΓòÉΓòÉΓòÉ 1.2.2.2. Start Debugging a DLL from a Load Occurrence Breakpoint Dialog ΓòÉΓòÉΓòÉ
  515.  
  516. You can set a breakpoint in a DLL that causes execution to stop when the DLL is 
  517. first loaded by your application. The DLL is generally loaded by your 
  518. application the first time a function contained within the DLL is called by 
  519. another function within your application.This type of breakpoint is called a 
  520. load occurrence breakpoint. 
  521.  
  522. To set a load occurrence breakpoint, do the following: 
  523.  
  524.    1. From the Breakpoints menu of the Session Control or Source windows, or 
  525.       from the Set menu of the Breakpoints List window, choose Set load 
  526.       occurrence breakpoint. 
  527.  
  528.    2. In the Load Occurrence Breakpoint dialog, enter the name of the DLL you 
  529.       want to set the breakpoint in. 
  530.  
  531.    3. Click on OK to set the breakpoint and close the Load Occurrence 
  532.       Breakpoint dialog, or click on Set if you want to set more load 
  533.       occurrence breakpoints. 
  534.  
  535.  When you run your application, execution will stop when the DLL is first 
  536.  loaded. 
  537.  
  538.  Related Information 
  539.  
  540.  Procedures 
  541.  Debug a DLL 
  542.  
  543.  
  544. ΓòÉΓòÉΓòÉ 1.2.2.3. Start Debugging a DLL from the Breakpoints List Window ΓòÉΓòÉΓòÉ
  545.  
  546. You can start debugging a DLL from the Breakpoints List window by setting a 
  547. line breakpoint in that DLL, then issuing the Run command. You can only do this 
  548. if the compile unit you want to place the breakpoint in was compiled with debug 
  549. information. To set a line breakpoint in a DLL and then start debugging the 
  550. DLL, do the following: 
  551.  
  552.    1. Open a Breakpoints List window 
  553.  
  554.    2. From the Set menu choose Set line 
  555.  
  556.    3. In the Line Breakpoint dialog, from the Executable pulldown list choose 
  557.       the DLL you want to debug. 
  558.  
  559.    4. From the Source pulldown list choose the source file containing the code 
  560.       you want to debug. 
  561.  
  562.    5. In the Line entry field, enter the line number within the source file you 
  563.       want to place a breakpoint in. 
  564.  
  565.    6. Click on the Defer breakpoint check box. 
  566.  
  567.    7. Issue the Run command by pressing Ctrl+R. 
  568.  
  569.  Related Information 
  570.  
  571.  Procedures 
  572.  Debug a DLL 
  573.  Set a Deferred Breakpoint 
  574.  Set a Line Breakpoint 
  575.  
  576.  
  577. ΓòÉΓòÉΓòÉ 1.2.2.4. Start Debugging a DLL from the Session Control Window ΓòÉΓòÉΓòÉ
  578.  
  579. You can use the Session Control window to access a Source window containing the 
  580. source for a DLL you want to debug. 
  581.  
  582.    1. In the Session Control window, expand the Components Pane entry for the 
  583.       DLL you want to debug. 
  584.  
  585.    2. Continue expanding appropriate items in the list until you find the 
  586.       source file or function you want to debug. If the source file or function 
  587.       is not listed, you may not have compiled the function with debug 
  588.       information. 
  589.  
  590.    3. Double-click on the source file or function to raise a Source window for 
  591.       it. 
  592.  
  593.    4. Set a line, function, or other breakpoint at an appropriate point in that 
  594.       source window. 
  595.  
  596.    5. Run your program. 
  597.  
  598.  Related Information 
  599.  
  600.  Procedures 
  601.  Debug a DLL 
  602.  Run a Program 
  603.  Set Breakpoints 
  604.  
  605.  
  606. ΓòÉΓòÉΓòÉ 1.2.2.5. Start Debugging a DLL from a Source Window ΓòÉΓòÉΓòÉ
  607.  
  608. You can start debugging a DLL used by your application from the Source window 
  609. containing the current execution point, provided you can use step commands to 
  610. reach a statement that calls a function within your DLL. 
  611.  
  612.    1. In the Source window, use a combination of breakpoints and Run, Step 
  613.       Debug, and Jump to Location commands to execute or skip over portions of 
  614.       your code, up to the call to the DLL function you want to debug. 
  615.  
  616.    2. Issue a Step Into or Step Debug command to enter the DLL function. 
  617.  
  618.  A Source window showing the DLL function is raised, and the current line is 
  619.  the first line within the function. 
  620.  
  621.  Related Information 
  622.  
  623.  Procedures 
  624.  Debug a DLL 
  625.  Set Breakpoints 
  626.  Run, Step Through, or Stop a Program 
  627.  
  628.  
  629. ΓòÉΓòÉΓòÉ 1.2.2.6. Debug OS/2 REXX and WorkPlace Shell DLLs ΓòÉΓòÉΓòÉ
  630.  
  631. Note: This section applies only to programs running on OS/2. 
  632.  
  633. You can use the debugger to debug OS/2 REXX DLLs and WorkPlace shell DLLs. 
  634.  
  635. To debug a REXX DLL, type the following from an OS/2 command shell: 
  636.  
  637. idbug cmd.exe /K myrexx.cmd 
  638.  
  639. where myrexx.cmd is the name of your REXX command file. When the debugger stops 
  640. at the beginning of CMD.EXE, do the following: 
  641.  
  642.    1. From the Breakpoints menu, set a Load occurrence breakpoint to stop when 
  643.       your DLL is loaded. 
  644.  
  645.    2. Run the program. When the load occurrence breakpoint is encountered, a 
  646.       Source window for your DLL displays. 
  647.  
  648.    3. Set breakpoints, run, step, and use other debugger features to debug your 
  649.       DLL. 
  650.  
  651.  To debug a WorkPlace Shell DLL, replace the RUNWORKPLACE line in your 
  652.  config.sys with the following line: 
  653.  
  654.  SET RUNWORKPLACE=X:/OS2/CMD.EXE 
  655.  
  656.  where X:/OS2/CMD.EXE is the drive letter and path name for the OS/2 CMD.EXE 
  657.  command interpreter. This prevents the Presentation Manager shell from loading 
  658.  automatically on system restart. After rebooting, type the following from an 
  659.  OS/2 command shell: 
  660.  
  661.  idbug x:/os2/cmd.exe 
  662.  
  663.  When the debugger stops at the beginning of PMSHELL.EXE, follow the same steps 
  664.  as for debugging an OS/2 REXX DLL. 
  665.  
  666.  Related Information 
  667.  
  668.  Procedures 
  669.  Debug a DLL 
  670.  
  671.  
  672. ΓòÉΓòÉΓòÉ 1.2.3. Debug Dump Files ΓòÉΓòÉΓòÉ
  673.  
  674. Note: post-mortem debugging and the ITRAPPER program are only available on 
  675. OS/2. 
  676.  
  677. You can debug dump files created by the ITRAPPER utility in much the same way 
  678. as you debug live executables. However, because a dump file is not executable, 
  679. any debugger commands to do with running, stepping, or setting breakpoints will 
  680. not work when you are debugging a dump file. 
  681.  
  682. To start debugging a dump file, from the command shell type: 
  683.  
  684. idbug [path]dumpfilename 
  685.  
  686. where dumpfilename is the name of the dump file you want to debug. You can also 
  687. enter the dump file name from the Startup dialog, by starting the debugger 
  688. without parameters, or by choosing File->Startup from the Source or Session 
  689. Control windows. 
  690.  
  691. Once you have started debugging a dump file, you can use a subset of debugger 
  692. features to examine registers, storage, and code for the executable that caused 
  693. the trap. You can access all the debugger monitors (registers, call stack, 
  694. storage, local variables, program, private and popup), but you cannot change 
  695. the contents of items in these monitors (for example, registers in the 
  696. registers monitor). 
  697.  
  698. The following debugger commands are disabled, and icons for them are hidden or 
  699. greyed out, when you are debugging a dump file: 
  700.  
  701.      Halt command 
  702.  
  703.      Step commands 
  704.  
  705.      Commands to set, clear, disable, enable, or delete breakpoints. 
  706.  
  707.  The Run command is available, but its only effect is to cause a redisplay of 
  708.  the exception that caused the trap. 
  709.  
  710.  Related Information 
  711.  
  712.  Procedures 
  713.  Obtain a Dump File 
  714.  
  715.  
  716. ΓòÉΓòÉΓòÉ 1.2.3.1. Obtain a Dump File ΓòÉΓòÉΓòÉ
  717.  
  718. Note: This section applies only to OS/2. 
  719.  
  720. The end user who is experiencing the unanticipated exception or trap must load 
  721. the application under the dump collector utility, ITRAPPER. When the program 
  722. fails, ITRAPPER creates a dump file. If the failure is recoverable (for 
  723. example, some OS/2 exceptions), ITRAPPER lets the program continue running, and 
  724. subsequent failures result in new dump files being created. For unrecoverable 
  725. exceptions and for traps, ITRAPPER terminates the application after creating 
  726. the dump file. 
  727.  
  728. You need to ship the ITRAPPER utility with your program. This utility is part 
  729. of the OS/2 version of the product. If you want to change ITRAPPER's default 
  730. parameters, you also need to provide a parameter file. 
  731.  
  732. Related Information 
  733.  
  734. Procedures 
  735. Debug Dump Files 
  736. Start ITRAPPER 
  737.  
  738. Reference 
  739. Postmortem Debugging Overview 
  740.  
  741.  
  742. ΓòÉΓòÉΓòÉ 1.2.4. Debug PM Applications ΓòÉΓòÉΓòÉ
  743.  
  744. The PM system is message-based. As program events are encountered by PM 
  745. programs, the programs communicate with each other by passing messages and by 
  746. receiving user input through input messages. When a PM program encounters an 
  747. enabled breakpoint, the input queue can become blocked and dependent program 
  748. events, or processes, can also become blocked as a result. For example, the 
  749. input queue can become blocked when your program stops at a breakpoint that has 
  750. been triggered by an input event. 
  751.  
  752. The debugger provides two modes of operation by which PM messages can be 
  753. processed while the debugger has control.Asynchronous mode prevents the input 
  754. queue and dependent events or processes from being blocked, but can cause 
  755. problems for your application in some situations. Synchronous mode avoids these 
  756. problems, but does not prevent blockages. You can select one of these modes 
  757. from the Debugging mode group box. 
  758.  
  759.  
  760. ΓòÉΓòÉΓòÉ 1.2.5. Debug a Microsoft Visual C++ Program ΓòÉΓòÉΓòÉ
  761.  
  762. Note: This section applies only to programs being debugged on Windows 95 or 
  763. Windows NT. 
  764.  
  765. You can use the debugger to debug programs compiled by the Microsoft Visual C++ 
  766. Compiler Version 5.0, provided the debug information is imbedded in the 
  767. executable. Both C and C++ programs are supported. To debug such a program 
  768. follow these steps: 
  769.  
  770.    1. Use the Visual C++ compiler to compile the program with the /Z7 option, 
  771.       to produce Microsoft C 7.0 debug information. 
  772.  
  773.    2. Link the .obj files with the /DEBUG and /PDB:NONE linker options to 
  774.       generate the necessary debug information and imbed it in the executable. 
  775.  
  776.    3. Start debugging the program. 
  777.  
  778.  For example, to compile, link, and debug the program hello.c, use the 
  779.  following commands: 
  780.  
  781.   cl /Z7 /c hello.c
  782.   link /DEBUG /PDB:NONE hello.obj /OUT:hello.exe
  783.   idbug hello.exe
  784.  
  785.  If you do not compile and link with these options, debug information, if 
  786.  generated, is stored in a separate .PDB file which the debugger cannot read. 
  787.  In this case the debugger treats the executable as if it had no debug 
  788.  information, and only disassembly views of the code are available. 
  789.  
  790.  Related Information 
  791.  
  792.  Procedures 
  793.  Start the Debugger 
  794.  
  795.  Reference 
  796.  Limitations when Debugging Visual C++ Programs 
  797.  
  798.  
  799. ΓòÉΓòÉΓòÉ 1.2.6. Halt Execution of a Debuggee Program ΓòÉΓòÉΓòÉ
  800.  
  801. To halt execution of a debuggee program that is currently running, do one of 
  802. the following: 
  803.  
  804.      From a Source window or the Session Control window, select Run->Halt 
  805.  
  806.      From any window that has toolbar buttons displayed, click on the  button 
  807.  
  808.  You may find that execution halts in a function other than the one you are 
  809.  debugging (for example, a system library function). To run to the end of that 
  810.  function and stop in your own code, do one of the following: 
  811.  
  812.      Issue the Step return command from the Source window execution stopped in 
  813.  
  814.      If the previous technique results in the debugger displaying the message 
  815.       'Cannot determine return address', issue the Step debug command until 
  816.       execution returns to your code 
  817.  
  818.      If you know what line in your program will be the next to execute after 
  819.       the current function returns, go to the source window containing that 
  820.       line, set a breakpoint on it, and issue the Run command. 
  821.  
  822.  Related Information 
  823.  
  824.  Procedures 
  825.  Set a Line Breakpoint 
  826.  Terminate a Debug Session 
  827.  
  828.  
  829. ΓòÉΓòÉΓòÉ 1.2.7. Restart Your Program ΓòÉΓòÉΓòÉ
  830.  
  831. Note: You cannot restart a program that you attached to with the debugger. 
  832.  
  833. You can start debugging your program again from the beginning (the start of the 
  834. main function) by doing the following: 
  835.  
  836.    1. If the program is currently executing within the debugger, issue a Halt 
  837.       command by selecting Run->Halt from a Source window or the Session 
  838.       Control window, or pressing the  button. 
  839.  
  840.    2. Set a breakpoint at the location you want to run to, if it is not the 
  841.       start of the main function and you have not already set a breakpoint 
  842.       there. 
  843.  
  844.    3. If the previous run of your program performed file output and the program 
  845.       logic will be changed by the existence of such files from a previous 
  846.       debug session, you may want to erase these files before restarting. 
  847.  
  848.    4. Select Run->Restart from a Source window or the Session Control window. 
  849.  
  850.    5. If you want to run up to a breakpoint, issue the Run command by pressing 
  851.       Ctrl+R from any window (or R from a Source window) or pressing the 
  852.       button. 
  853.  
  854.  Related Information 
  855.  
  856.  Procedures 
  857.  Halt Execution of a Debuggee Program 
  858.  Set Breakpoints 
  859.  
  860.  
  861. ΓòÉΓòÉΓòÉ 1.2.8. Start the Debugger and the Remote Program ΓòÉΓòÉΓòÉ
  862.  
  863. To remotely debug a program, follow these steps: 
  864.  
  865.    1. On the machine where the program to be debugged will run, issue the 
  866.       irmtdbg command. 
  867.  
  868.    2. On the machine where the debugger will run, issue the idbug command and 
  869.       provide the remote host name. Either specify the program you want to 
  870.       debug as the last argument of the command, or enter the program name in 
  871.       the Startup dialog that appears. 
  872.  
  873.  The irmtdbg command has the following syntax: 
  874.  
  875.  irmtdbg [-qprotocol=tcpip [-qport=port]] [-qsession=single|multi] 
  876.  
  877.  where: 
  878.  
  879.  -qprotocol=tcpip Specifies the communications protocol to use. Only the TCP/IP 
  880.            communications protocol is supported. This is the default protocol. 
  881.  
  882.  -qport=port Specifies the TCP/IP port used for the connection. If you specify 
  883.            -qprotocol=tcpip but you do not specify a port, or if you do not 
  884.            specify a protocol (so that TCP/IP becomes the default protocol), 
  885.            the default port is 8000. 
  886.  
  887.  -qsession=single|multi Specifies whether to support single session debugging 
  888.            or multiple session debugging. The default is single session. 
  889.  
  890.  The command for invoking the debugger has the following syntax when used for 
  891.  remote debugging: 
  892.  
  893.  idbug [-qprotocol=tcpip [-qport=port]] -qhost=remotehost remote-program 
  894.  [program-parameters] 
  895.  
  896.  where: 
  897.  
  898.  -qhost=remotehost Specifies the TCP/IP name or address of the host to connect 
  899.            to. This argument is required. 
  900.  
  901.  remote-program Is the name of the executable program on the remote machine 
  902.            (including an optional path) 
  903.  
  904.  program-parameters are any parameters you want to pass to the executable 
  905.            program 
  906.  
  907.  The communications options for the idbug command are the same (and have the 
  908.  same defaults) as those for the irmtdbg command. Note that you do not specify 
  909.  a host name on the irmtdbg command because the remote machine initiates the 
  910.  connection. 
  911.  
  912.  
  913. ΓòÉΓòÉΓòÉ 1.3. Set Breakpoints in Your Program ΓòÉΓòÉΓòÉ
  914.  
  915. You can set breakpoints in your program from a number of windows. See the 
  916. following subtasks: 
  917.  
  918.      Set breakpoints from the Breakpoints List window 
  919.  
  920.      Set breakpoints from a Source window 
  921.  
  922.      Set function breakpoints from the Session Control window 
  923.  
  924.  
  925. ΓòÉΓòÉΓòÉ 1.3.1. Set Breakpoints in the Breakpoints List Window ΓòÉΓòÉΓòÉ
  926.  
  927. To set breakpoints from the Breakpoints List window, open the window (if it is 
  928. not already open), using one of the following methods 
  929.  
  930.    1. Type Ctrl+X from any main debugger window or monitor 
  931.  
  932.    2. Select List from the Breakpoints menu of the Source window 
  933.  
  934.    3. Click on the  button in the Source Window 
  935.  
  936.    4. Position the cursor in the prefix area, click mouse button 2, and select 
  937.       List from the popup menu. 
  938.  
  939.  Then do the following: 
  940.  
  941.    1. From the Breakpoints List window, select the type of breakpoint you want 
  942.       to set from the Set menu. 
  943.  
  944.    2. Enter the information for the breakpoint in the dialog, and click on OK 
  945.       or press the Enter key. 
  946.  
  947.  You can set breakpoints from the Source window and the Session Control window 
  948.  as well. Unless you want to set multiple breakpoints with the same nonstandard 
  949.  optional parameters, you may find it easier to use the Source window for 
  950.  setting line breakpoints and address breakpoints, and the Session Control 
  951.  window for setting function breakpoints. Storage change breakpoints and load 
  952.  occurrence breakpoints can be set from any of the three windows. 
  953.  
  954.  Related Information 
  955.  
  956.  Procedures 
  957.  Set Multiple Breakpoints 
  958.  Set and Clear Breakpoints from a Source Window 
  959.  Set Function Breakpoints from the Session Control Window 
  960.  
  961.  Concepts 
  962.  Types of Breakpoints 
  963.  
  964.  
  965. ΓòÉΓòÉΓòÉ 1.3.2. Set and Clear Breakpoints from a Source Window ΓòÉΓòÉΓòÉ
  966.  
  967. You can set and clear breakpoints from a Source window in the following ways: 
  968.  
  969.      Toggle a breakpoint on or off for a line. There are three ways to do 
  970.       this: 
  971.  
  972.         -  Double-click on the prefix area for that line 
  973.  
  974.         -  Highlight the line using either the up and down cursor keys or the 
  975.            mouse, then press the space bar 
  976.  
  977.         -  Highlight the line, then select Breakpoints->Toggle at current line. 
  978.  
  979.      From the prefix area, or while the pointer is over a function name, click 
  980.       on mouse button 2 [note] and select a breakpoint option from the popup 
  981.       menu 
  982.  
  983.      Open a Breakpoints List window, and set or clear the breakpoint from 
  984.       there 
  985.  
  986.      Select a type of breakpoint from the Breakpoints menu, and enter the 
  987.       appropriate information. 
  988.  
  989.  Note: Clearing a breakpoint deletes it, meaning that you must recreate it if 
  990.  you want to use it again. If you plan to use a breakpoint again later, it is 
  991.  better to disable the breakpoint instead. 
  992.  
  993.  Related Information 
  994.  
  995.  Procedures 
  996.  Enable and Disable Breakpoints 
  997.  
  998.  
  999. ΓòÉΓòÉΓòÉ 1.3.3. Set Function Breakpoints from the Session Control Window ΓòÉΓòÉΓòÉ
  1000.  
  1001. You can set function breakpoints in the Session Control window by either of the 
  1002. following methods: 
  1003.  
  1004.      Go to the Breakpoints menu and choose Set function breakpoint 
  1005.  
  1006.      Select a function in the Components pane, click mouse button 2 to bring 
  1007.       up a popup menu, and choose Set function breakpoint. 
  1008.  
  1009.  Related Information 
  1010.  
  1011.  Procedures 
  1012.  Set Breakpoints 
  1013.  
  1014.  
  1015. ΓòÉΓòÉΓòÉ 1.4. Run, Step Through, or Stop a Program ΓòÉΓòÉΓòÉ
  1016.  
  1017. You can use debugger toolbar buttons, accelerator keys, and menu commands to 
  1018. accomplish the following subtasks: 
  1019.  
  1020.      Run your program 
  1021.  
  1022.      Step through your program 
  1023.  
  1024.      Halt execution of your program 
  1025.  
  1026.      Restart your program 
  1027.  
  1028.      Terminate a debug session 
  1029.  
  1030.  
  1031. ΓòÉΓòÉΓòÉ 1.4.1. Step through a Program ΓòÉΓòÉΓòÉ
  1032.  
  1033. You can use step commands to step through your program a single line  or 
  1034. disassembly instruction at a time. You can issue step commands from the Source 
  1035. window that contains the current execution point. 
  1036.  
  1037. The following types of step commands are available: 
  1038.  
  1039.      Step over - executes the current line, without stopping in any functions 
  1040.       called within the line 
  1041.  
  1042.      Step Into - executes the current line. If the current line contains a 
  1043.       call to a function, execution stops in the first source line or 
  1044.       disassembly instruction of the called function. If the called function 
  1045.       was not compiled with debug information, the function is shown in a 
  1046.       disassembly view. 
  1047.  
  1048.      Step Debug - executes the current line. Execution stops at the next line 
  1049.       encountered for which debug information is available. This could be in 
  1050.       the current function, in the called function, or in a function called 
  1051.       within the called function. 
  1052.  
  1053.      Step Return - executes from the current execution point up to the line 
  1054.       immediately following the line that called this function. If you issue a 
  1055.       Step Return command from the main function, the program runs to 
  1056.       completion. 
  1057.  
  1058.  Note that execution may stop earlier than indicated above, if the debugger 
  1059.  encounters a breakpoint or an exception. 
  1060.  
  1061.  You can use combinations of step commands to step through multiple calls on a 
  1062.  single line. 
  1063.  
  1064.  Related Information 
  1065.  
  1066.  Reference 
  1067.  Stepping and Functions 
  1068.  
  1069.  
  1070. ΓòÉΓòÉΓòÉ 1.4.2. Run a Program ΓòÉΓòÉΓòÉ
  1071.  
  1072. After you have set appropriate breakpoints in your program, you are ready to 
  1073. issue the Run command. The debugger runs the program from the current line to 
  1074. the first enabled breakpoint it encounters and a Source window displays the 
  1075. current line. You can then examine the contents of storage, variables, the call 
  1076. stack, or processor registers; step through your program; or issue the Run 
  1077. command again to run to the next enabled breakpoint. 
  1078.  
  1079. Related Information 
  1080.  
  1081. Procedures 
  1082. Set Breakpoints 
  1083. Step through a Program 
  1084. View Variables, Memory, Registers, and the Stack 
  1085.  
  1086.  
  1087. ΓòÉΓòÉΓòÉ 1.4.3. Terminate a Debug Session ΓòÉΓòÉΓòÉ
  1088.  
  1089. To terminate a debug session and exit the debugger, do one of the following: 
  1090.  
  1091.      Select File->Close debugger from any debugger window that has a File 
  1092.       menu. 
  1093.  
  1094.      Press F3 from any debugger window that is not a dialog 
  1095.  
  1096.      Switch to the Session Control window and use your windowing system's 
  1097.       technique for closing that window. For example, OS/2 and Windows 
  1098.       operating systems, double-click on the upper left corner of the window or 
  1099.       press Alt+F4. 
  1100.  
  1101.  To terminate a debug session and start another one (local debugging only) do 
  1102.  one of the following: 
  1103.  
  1104.      If you want to start the same program executing again, select 
  1105.       Run->Restart from a Source window or the Session Control window. 
  1106.  
  1107.      Run the current program to completion, if this is feasible. A message 
  1108.       window with the text 'Program has run to completion' appears. Click on 
  1109.       OK. A Startup dialog then appears. 
  1110.  
  1111.      Select File->Startup from a Source window or the Session Control window. 
  1112.  
  1113.  The debugger locks the load modules for your program from write updates by the 
  1114.  compiler until execution completes. If you want to recompile your program and 
  1115.  debug it again, you should run the program to completion, exit the debugger, 
  1116.  or switch to debugging a different program before recompiling. 
  1117.  
  1118.  Related Information 
  1119.  
  1120.  Procedures 
  1121.  Halt Execution of a Debuggee Program 
  1122.  
  1123.  
  1124. ΓòÉΓòÉΓòÉ 1.5. Debug Variable Contents and Memory ΓòÉΓòÉΓòÉ
  1125.  
  1126. Choose from among the following subtasks: 
  1127.  
  1128.      Change the contents of storage 
  1129.  
  1130.      View a location in storage 
  1131.  
  1132.      Add expressions and variables to a monitor 
  1133.  
  1134.      Open a new storage monitor 
  1135.  
  1136.      View variables, memory, registers, and the stack 
  1137.  
  1138.      Debug heap usage 
  1139.  
  1140.  
  1141. ΓòÉΓòÉΓòÉ 1.5.1. Change the Contents of Storage, Variables, and Registers ΓòÉΓòÉΓòÉ
  1142.  
  1143. To change the contents of storage in a Storage monitor, do the following: 
  1144.  
  1145.    1. Raise or open a Storage monitor (select Storage monitor from the Monitors 
  1146.       menu of the Source or Session Control windows, or press Ctrl+G, or click 
  1147.       on the  button) 
  1148.  
  1149.    2. If the address whose contents you want to change is not shown, use the 
  1150.       PageUp and PageDown keys to scroll to that address, or click on an entry 
  1151.       in the address column and enter a new address 
  1152.  
  1153.    3. Double-click on an entry in a data column in the monitor (or click on the 
  1154.       entry and press Enter) 
  1155.  
  1156.    4. Type a value that is valid for the shown representation 
  1157.  
  1158.    5. Press Enter. 
  1159.  
  1160.  To change the contents of a variable in a Local Variables, Program, Private, 
  1161.  or Popup monitor, or a register in the Registers monitor, do the following: 
  1162.  
  1163.    1. Raise or open the appropriate monitor (from the Monitors menu of a Source 
  1164.       window or the Session Control window, or using the appropriate 
  1165.       accelerator key or toolbar button) 
  1166.  
  1167.    2. Double-click on the entry field that shows the contents of the variable 
  1168.       or register you want to change 
  1169.  
  1170.    3. Type a value that is valid for the current representation of that 
  1171.       variable or register 
  1172.  
  1173.    4. Press Enter. 
  1174.  
  1175.  Related Information 
  1176.  
  1177.  Reference 
  1178.  Values that Are Valid for the Current Representation 
  1179.  
  1180.  
  1181. ΓòÉΓòÉΓòÉ 1.5.1.1. Use the Registers Monitor ΓòÉΓòÉΓòÉ
  1182.  
  1183. Here are some of the common tasks you can perform from the Registers monitor: 
  1184.  
  1185.      Change the contents of registers 
  1186.  
  1187.      Change what kinds of registers are displayed 
  1188.  
  1189.      Change the window layout between horizontal and vertical 
  1190.  
  1191.  
  1192. ΓòÉΓòÉΓòÉ 1.5.1.1.1. View the Contents of Registers ΓòÉΓòÉΓòÉ
  1193.  
  1194. If you want to open a monitor showing the contents of all or most processor 
  1195. registers, do the following: 
  1196.  
  1197.    1. Raise a Source window or the Session Control window 
  1198.  
  1199.    2. Select Monitors->Registers or click on the  pushbutton. 
  1200.  
  1201.    3. A Registers Monitor displays the contents of processor registers for the 
  1202.       current thread. 
  1203.  
  1204.  Related Information 
  1205.  
  1206.  Procedures 
  1207.  Add Expressions and Variables to a Monitor 
  1208.  Change the Contents of Registers 
  1209.  Change Which Registers Are Displayed 
  1210.  Use the Registers Monitor 
  1211.  
  1212.  Concepts 
  1213.  Introduction to the Registers Monitor 
  1214.  
  1215.  
  1216. ΓòÉΓòÉΓòÉ 1.5.1.1.2. Change Which Registers Are Displayed ΓòÉΓòÉΓòÉ
  1217.  
  1218. You can choose what groups of registers are displayed in the Registers monitor 
  1219. by selecting Options->Display style. In the dialog that appears, select what 
  1220. items you want to display. 
  1221.  
  1222. Related Information 
  1223.  
  1224. Concepts 
  1225. Introduction to the Registers Monitor 
  1226.  
  1227. Procedures 
  1228. Change the Contents of Registers 
  1229. Change the Layout of the Registers Monitor 
  1230. Display Floating-Point Register Contents 
  1231. View the Contents of Registers 
  1232.  
  1233. Reference 
  1234. Registers Monitor Split Bars 
  1235.  
  1236.  
  1237. ΓòÉΓòÉΓòÉ 1.5.1.1.2.1. Display Floating-Point Register Contents ΓòÉΓòÉΓòÉ
  1238.  
  1239. If you are debugging an Intel-based application and you step over a source line 
  1240. containing floating-point arithmetic, you may find that the values of 
  1241. floating-point registers in the Registers monitor are not displayed. Instead, 
  1242. 'Not used' appears beside each register. In fact, one or more of these 
  1243. registers is being used during execution of the source line, but once you have 
  1244. stepped over the source line, the register's contents have been written to a 
  1245. variable and the register is no longer in use. If you want to step over a 
  1246. floating-point statement and see a floating-point register's value before it is 
  1247. written to the variable, do the following: 
  1248.  
  1249.    1. Change from source view to mixed view (select View->Mixed). 
  1250.  
  1251.    2. Locate the source line containing the floating-point instructions. Look 
  1252.       for a disassembly instruction between this source line and the next that 
  1253.       contains a floating-point store instruction (for example FSTP), and place 
  1254.       a breakpoint on that line. 
  1255.  
  1256.    3. Change back to source view. 
  1257.  
  1258.    4. Now when you step over the source line containing the floating-point 
  1259.       arithmetic, you must issue two Step Over commands for the line instead of 
  1260.       one (because the first Step Over command stops at the breakpoint you set 
  1261.       in the mixed view). After the second Step Over command, you should see 
  1262.       the value of the floating point register as it was before it was stored. 
  1263.  
  1264.  Related Information 
  1265.  
  1266.  Procedures 
  1267.  Change the Contents of Registers 
  1268.  Change the Layout of the Registers Monitor 
  1269.  Change Which Registers Are Displayed 
  1270.  Use the Registers Monitor 
  1271.  
  1272.  
  1273. ΓòÉΓòÉΓòÉ 1.5.1.1.3. Change the Contents of Registers ΓòÉΓòÉΓòÉ
  1274.  
  1275. Caution: Changing the contents of registers that affect program flow (for 
  1276. example, registers used to manipulate the stack) can destabilize the program 
  1277. you are debugging and may cause it to terminate abnormally. 
  1278.  
  1279. You can change the contents of most registers in the Registers monitor as 
  1280. follows: 
  1281.  
  1282.    1. Either double-click on the current value of the register or move the 
  1283.       cursor to that register and press Enter. 
  1284.  
  1285.    2. Type in a new value, and press Enter. 
  1286.  
  1287.  If updating of the register is allowed and your entry can be evaluated to a 
  1288.  value the register supports, the register is updated. 
  1289.  
  1290.  Note: On Intel platforms, you cannot change the contents of the CS (code 
  1291.  segment) register, and you cannot enter values into floating-point registers 
  1292.  when they display 'Not used' instead of a value. 
  1293.  
  1294.   For flags, you can only enter values within the range supported by the flag, 
  1295.  or expressions that evaluate within such a range. Flags usually only have two 
  1296.  valid values: 0 and 1. 
  1297.  
  1298.  Related Information 
  1299.  
  1300.  Reference 
  1301.  Valid Entries for Registers 
  1302.  Expressions Supported 
  1303.  
  1304.  
  1305. ΓòÉΓòÉΓòÉ 1.5.1.1.4. Change the Layout of the Registers Monitor ΓòÉΓòÉΓòÉ
  1306.  
  1307. The layout of the Registers monitor can be changed in a number of ways. You 
  1308. can: 
  1309.  
  1310.      Change the amount of space given to each group of registers using the 
  1311.       Registers monitor split bars 
  1312.  
  1313.      Change the following settings from the Options->Display style menu 
  1314.       choice: 
  1315.  
  1316.         -  Which groups of registers are displayed 
  1317.  
  1318.         -  Whether register groups are displayed in columns or rows 
  1319.  
  1320.         -  Whether group titles are displayed 
  1321.  
  1322.         -  Whether split bar positions between groups are saved 
  1323.  
  1324.  Related Information 
  1325.  
  1326.  Procedures 
  1327.  Change Which Registers Are Displayed 
  1328.  
  1329.  Reference 
  1330.  Registers Monitor Split Bars 
  1331.  
  1332.  
  1333. ΓòÉΓòÉΓòÉ 1.5.2. Add Expressions and Variables to a Monitor ΓòÉΓòÉΓòÉ
  1334.  
  1335. From the Source window, you can add a variable or expression to a monitor, so 
  1336. that you can keep track of how the variable's contents or the expression's 
  1337. value changes during program execution. You can use any of the following 
  1338. methods: 
  1339.  
  1340.      Position the pointer over the variable, click mouse button 2 [note], and 
  1341.       select the monitor you want from the popup menu. 
  1342.  
  1343.      Highlight the variable or expression, then select Monitors->Monitor 
  1344.       expression. A dialog opens containing the variable or expression; select 
  1345.       a monitor from there. 
  1346.  
  1347.      Select Monitors->Monitor expression. In the dialog, enter the variable or 
  1348.       expression and choose a monitor. 
  1349.  
  1350.      Double-click on a variable to add it to the Program monitor. 
  1351.  
  1352.  Related Information 
  1353.  
  1354.  Reference 
  1355.  Expressions Supported 
  1356.  
  1357.  
  1358. ΓòÉΓòÉΓòÉ 1.5.3. Open a New Storage Monitor ΓòÉΓòÉΓòÉ
  1359.  
  1360. You can bring up a new Storage monitor in a number of ways: 
  1361.  
  1362.      Click on the  toolbar button from a Source window or the Session Control 
  1363.       window. 
  1364.  
  1365.      Select Monitors->Storage from a Source window or the Session Control 
  1366.       window. 
  1367.  
  1368.      Highlight an expression in a Source window, click mouse button 2 [note], 
  1369.       and select Add to storage monitor from the popup menu. 
  1370.  
  1371.      Select Monitors->Monitor expression from a Source window or the Session 
  1372.       Control window, enter the expression you want to monitor, and select the 
  1373.       Storage monitor radio button. 
  1374.  
  1375.  A new storage monitor opens each time you do one of the above, even if you 
  1376.  already opened another storage monitor for the same Source window, variable or 
  1377.  expression. 
  1378.  
  1379.  Related Information 
  1380.  
  1381.  Procedures 
  1382.  Open Other Debugger Windows 
  1383.  Change the Storage Monitor Address Range 
  1384.  
  1385.  
  1386. ΓòÉΓòÉΓòÉ 1.5.4. View Variables, Memory, Registers, and the Stack ΓòÉΓòÉΓòÉ
  1387.  
  1388. Follow one or more of the tasks below: 
  1389.  
  1390.      Add a variable or expression to a monitor so you can view or change its 
  1391.       contents 
  1392.  
  1393.      View variable contents 
  1394.  
  1395.      View storage contents 
  1396.  
  1397.      View the contents of registers 
  1398.  
  1399.      View the contents of the call stack 
  1400.  
  1401.  
  1402. ΓòÉΓòÉΓòÉ 1.5.4.1. View Variable Contents ΓòÉΓòÉΓòÉ
  1403.  
  1404. To view the contents of a variable you have already added to a monitor, do the 
  1405. following: 
  1406.  
  1407.    1. Raise a window that contains a Windows menu (for example, a Source window 
  1408.       or the Session Control window) 
  1409.  
  1410.    2. Select the monitor you added the variable to from that Windows menu. 
  1411.  
  1412.    3. If necessary, use the scroll bars or PageUp and PageDown keys to scroll 
  1413.       the monitor until the variable is visible. 
  1414.  
  1415.    4. If necessary, change the representation of the variable: select its 
  1416.       contents, click on mouse button 2, and select Next representation from 
  1417.       the popup menu. 
  1418.  
  1419.  To view the contents of a variable you have not yet added to a monitor, add 
  1420.  the variable to a monitor (see below). 
  1421.  
  1422.  Related Information 
  1423.  
  1424.  Procedures 
  1425.  Add Expressions and Variables to a Monitor 
  1426.  Debug Variable Contents and Memory 
  1427.  
  1428.  
  1429. ΓòÉΓòÉΓòÉ 1.5.4.2. View a Location in Storage ΓòÉΓòÉΓòÉ
  1430.  
  1431. To view a particular location in storage (for example, the storage used by a 
  1432. variable), either select Options->Monitor expression from the Storage monitor, 
  1433. or open a new Storage monitor from a Source window or the Session Control 
  1434. window, and specify an expression to monitor. See the Reference section below 
  1435. for information on what types of expressions the debugger supports. 
  1436.  
  1437. COBOL or PL/I: If a variable whose type is other than POINTER is specified, the 
  1438. Storage monitor opens at the address of that variable. For variables of type 
  1439. POINTER, the storage monitor opens at the address contained in the variable. 
  1440.  
  1441. C++: To view the storage for a class object or a variable, specify the address 
  1442. of the object or variable name by preceding the name with an ampersand (&). 
  1443.  
  1444. Related Information 
  1445.  
  1446. Reference 
  1447. Expressions Supported 
  1448.  
  1449. Procedures 
  1450. Change the Contents of Storage, Variables, and Registers 
  1451. Add Expressions and Variables to a Monitor 
  1452. Change the Representation of Storage 
  1453.  
  1454.  
  1455. ΓòÉΓòÉΓòÉ 1.5.4.2.1. Change the Storage Monitor Address Range ΓòÉΓòÉΓòÉ
  1456.  
  1457. You can change the address range you want displayed in a Storage monitor to a 
  1458. specified address. Double-click on an entry in one of the address columns (for 
  1459. example, the 'Flat' column), or move the cursor to that entry and press Enter; 
  1460. then enter a new address. You can also scroll through the range using the 
  1461. cursor keys (including Page Up and Page Down), or using the scrollbar. 
  1462.  
  1463. If the debugger cannot determine the contents of storage at a particular 
  1464. location, it displays the contents as a series of question marks (?). This can 
  1465. occur when you display storage that your program does not own or when the 
  1466. address range does not point to a valid storage area. 
  1467.  
  1468. If you want to view the storage associated with a different variable, adding 
  1469. that variable to a new Storage monitor is easier because the debugger 
  1470. determines the variable's address in storage for you. You may want to close the 
  1471. old Storage monitor first if its contents are no longer needed. 
  1472.  
  1473. Related Information 
  1474.  
  1475. Procedures 
  1476. Add Expressions and Variables to a Monitor 
  1477. Change the Contents of Storage, Variables, and Registers 
  1478. Change the Representation of Storage 
  1479. Open a New Storage Monitor 
  1480. View a Location in Storage 
  1481.  
  1482. Concepts 
  1483. Introduction to the Storage Monitor 
  1484.  
  1485.  
  1486. ΓòÉΓòÉΓòÉ 1.5.4.2.2. Change the Representation of Storage ΓòÉΓòÉΓòÉ
  1487.  
  1488. To change the representation of storage in the Storage monitor, do one of the 
  1489. following: 
  1490.  
  1491.      Select a representation from Options->Display style, OR 
  1492.  
  1493.      Click on the appropriate display style toolbar button:   . 
  1494.  
  1495.  The change in representation does not affect any other open storage monitors, 
  1496.  only the one in which you make the change. 
  1497.  
  1498.  Related Information 
  1499.  
  1500.  Procedures 
  1501.  Change the Contents of Storage, Variables, and Registers 
  1502.  Change the Storage Monitor Address Range 
  1503.  
  1504.  
  1505. ΓòÉΓòÉΓòÉ 1.5.5. Debug Heap Usage ΓòÉΓòÉΓòÉ
  1506.  
  1507. Note: You cannot debug heap usage when debugging COBOL or PL/I programs, or 
  1508. when the DEBUG_LANG environment variable is set to COBOL or PL1. 
  1509.  
  1510. If you suspect problems with heap usage in your program, you can pinpoint 
  1511. likely causes of heap errors by following these steps: 
  1512.  
  1513.    1. Compile your program with the /Tm option so that the debug versions of 
  1514.       memory management functions are used. 
  1515.  
  1516.    2. Run your program. Any errors detected by the debug memory management 
  1517.       programs are written to standard error, with the source file and line 
  1518.       number where the error was detected, and the source file and line number 
  1519.       where the heap was last known to be uncorrupted. (You can also run your 
  1520.       program within the debugger; in this case, the errors are shown in a 
  1521.       popup window instead of on standard error.) 
  1522.  
  1523.    3. To further isolate a heap corruption error, debug the program, set a 
  1524.       breakpoint at the source file and line number where the heap was last 
  1525.       known to be uncorrupted, and run the program. 
  1526.  
  1527.    4. When execution stops at the breakpoint, enable the debugger's own heap 
  1528.       checking functions by enabling Run->Check heap when stopping from a 
  1529.       Source window or the Session Control window. 
  1530.  
  1531.    5. Step through your code, or set frequent breakpoints and run it. Each time 
  1532.       the debugger stops, it causes your application to call the heap checking 
  1533.       functions. When heap corruption is detected, an error message displays in 
  1534.       a popup menu. 
  1535.  
  1536.    6. Each time you see a heap error message and are unable to pinpoint the 
  1537.       exact location of the error, note the two line numbers provided, restart 
  1538.       the program, set a breakpoint at the line where the heap was last found 
  1539.       to be uncorrupted, and use step commands or breakpoints and the Run 
  1540.       command to further narrow down the location of the error. 
  1541.  
  1542.  Related Information 
  1543.  
  1544.  Reference 
  1545.  Heap Errors 
  1546.  
  1547.  
  1548. ΓòÉΓòÉΓòÉ 1.6. Use the Call Stack Window ΓòÉΓòÉΓòÉ
  1549.  
  1550. You can display functions in the Call Stack window in two orders: the order in 
  1551. which they were called, and the order in which they will return (in other 
  1552. words, with the most recently called function on top or on the bottom). To 
  1553. change the order, click on the Growth Direction button () or select Display 
  1554. style and change the setting of the Growth direction group box. 
  1555.  
  1556. To view the code for a function, position the pointer over the line for that 
  1557. function, and do one of the following: 
  1558.  
  1559.      Select the line and press Enter 
  1560.  
  1561.      Double-click with mouse button 1 
  1562.  
  1563.      Click mouse button 2 [note] and select View from the popup menu 
  1564.  
  1565.  A Source window appears containing the source for the function. If this 
  1566.  function is the current function, the current execution point is highlighted. 
  1567.  Otherwise, the line that called the next innermost function on the call stack 
  1568.  is highlighted. 
  1569.  
  1570.  You can select what type of information is displayed in the Call Stack window 
  1571.  by changing the display style. You can choose to display the function, source 
  1572.  file, return address, and other information. 
  1573.  
  1574.  Related Information 
  1575.  
  1576.  Concepts 
  1577.  Introduction to the Call Stack Window 
  1578.  
  1579.  
  1580. ΓòÉΓòÉΓòÉ 1.6.1. View the Contents of the Call Stack ΓòÉΓòÉΓòÉ
  1581.  
  1582. You can view information for the active functions on a thread's stack. A 
  1583. function is on the stack from the time it is called until after it returns. 
  1584.  
  1585. To view stack information for functions, open or raise a Call Stack window in 
  1586. one of the following ways: 
  1587.  
  1588.      If a Call Stack monitor is already open, access it from the Windows menu 
  1589.       of any debugger window that contains this menu. 
  1590.  
  1591.      Select Monitors->Call stack from a Source or Session Control window, or 
  1592.       press the Ctrl+K accelerator key, or click on the  toolbar button. 
  1593.  
  1594.  Related Information 
  1595.  
  1596.  Procedures 
  1597.  Use the Call Stack Window 
  1598.  
  1599.  Concepts 
  1600.  Introduction to the Call Stack Window 
  1601.  
  1602.  
  1603. ΓòÉΓòÉΓòÉ 1.7. Debug Logic and Program Flow ΓòÉΓòÉΓòÉ
  1604.  
  1605. To debug logic and program flow, you may need to perform the following 
  1606. subtasks: 
  1607.  
  1608.      Set, clear, enable, and disable breakpoints 
  1609.  
  1610.      Step through, run, or halt a program 
  1611.  
  1612.      Skip over sections of code using Jump to location commands 
  1613.  
  1614.      View the contents of variables, memory, registers, and the stack. 
  1615.  
  1616.  
  1617. ΓòÉΓòÉΓòÉ 1.7.1. Set, Clear, Enable, and Disable Breakpoints ΓòÉΓòÉΓòÉ
  1618.  
  1619. See the following subtasks: 
  1620.  
  1621.      Set breakpoints 
  1622.  
  1623.      Clear breakpoints 
  1624.  
  1625.      Enable and disable breakpoints 
  1626.  
  1627.      Modify breakpoint characteristics 
  1628.  
  1629.  
  1630. ΓòÉΓòÉΓòÉ 1.7.1.1. Set Breakpoints ΓòÉΓòÉΓòÉ
  1631.  
  1632. You can set breakpoints from the following windows: 
  1633.  
  1634.      Breakpoints List window 
  1635.  
  1636.      Source window 
  1637.  
  1638.      Session Control window (function breakpoints only) 
  1639.  
  1640.  Related Information 
  1641.  
  1642.  Procedures 
  1643.  Set Multiple Breakpoints 
  1644.  
  1645.  Concepts 
  1646.  Types of Breakpoints 
  1647.  Introduction to the Breakpoints List Window 
  1648.  
  1649.  
  1650. ΓòÉΓòÉΓòÉ 1.7.1.1.1. Set a Line Breakpoint ΓòÉΓòÉΓòÉ
  1651.  
  1652. You can set a line breakpoint from a Source window or from the Breakpoints List 
  1653. window. 
  1654.  
  1655. There are three ways to set a line breakpoint from the Source window: 
  1656.  
  1657.    1. Make sure the appropriate line is visible in the window (use the scroll 
  1658.       bar or cursor keys to locate it), then double-click on the line number in 
  1659.       the prefix area of the line. 
  1660.  
  1661.    2. Type the line number in the source window. A Line number dialog opens up. 
  1662.       The line number you entered is placed in the dialog entry field. Click on 
  1663.       the the Breakpoint button. 
  1664.  
  1665.    3. Select Breakpoints->Set line from the menu bar, and fill in appropriate 
  1666.       fields in the resulting Line breakpoint dialog box as described below for 
  1667.       the Breakpoints List window. 
  1668.  
  1669.  To set a line breakpoint in a Breakpoints List window, do the following: 
  1670.  
  1671.    1. Select Set->Line from the menu bar. 
  1672.  
  1673.    2. In the resulting Line breakpoint dialog box, enter the line number and 
  1674.       source file you want to place the breakpoint in. 
  1675.  
  1676.    3. Enter other conditions for your breakpoint, such as the frequency, if you 
  1677.       like. 
  1678.  
  1679.  Related Information 
  1680.  
  1681.  Procedures 
  1682.  Set Breakpoints 
  1683.  Set Breakpoints in the Breakpoints List Window 
  1684.  Set and Clear Breakpoints from a Source Window 
  1685.  
  1686.  Concepts 
  1687.  Types of Breakpoints 
  1688.  
  1689.  
  1690. ΓòÉΓòÉΓòÉ 1.7.1.1.2. Set Multiple Breakpoints ΓòÉΓòÉΓòÉ
  1691.  
  1692. You can set several breakpoints with the same optional parameters from a Type 
  1693. Breakpoint dialog, where Type corresponds to the type of breakpoint (Line, 
  1694. Function, Address, Storage change, Load occurrence). To do this, follow these 
  1695. steps: 
  1696.  
  1697.    1. From the breakpoint dialog, enter the information for the first 
  1698.       breakpoint. Change any fields in the Optional Parameters section of the 
  1699.       window, as desired. 
  1700.  
  1701.    2. Click on Set. The settings are saved for the current breakpoint. 
  1702.  
  1703.    3. For each additional breakpoint, enter only the changed information (for 
  1704.       example, the new line number, new function name, new address), and again 
  1705.       click on Set. 
  1706.  
  1707.    4. After you have set the last breakpoint, click on Cancel to dismiss the 
  1708.       dialog. 
  1709.  
  1710.  Related Information 
  1711.  
  1712.  Procedures 
  1713.  Set Breakpoints 
  1714.  
  1715.  
  1716. ΓòÉΓòÉΓòÉ 1.7.1.2. Delete Breakpoints ΓòÉΓòÉΓòÉ
  1717.  
  1718. To delete all breakpoints at once, select Edit->Delete all from the Breakpoints 
  1719. List window. To delete individual breakpoints, position the pointer over the 
  1720. desired breakpoint, click on mouse button 2, and select Delete. 
  1721.  
  1722. When you delete a breakpoint, all information about it is lost. If you want to 
  1723. temporarily deactivate a breakpoint and activate it later, you should disable 
  1724. the breakpoint instead. 
  1725.  
  1726. Related Information 
  1727.  
  1728. Procedures 
  1729. Enable and Disable Breakpoints 
  1730.  
  1731.  
  1732. ΓòÉΓòÉΓòÉ 1.7.1.2.1. Delete All Breakpoints ΓòÉΓòÉΓòÉ
  1733.  
  1734. You can delete all breakpoints for your program from the Breakpoints List 
  1735. window in three ways: 
  1736.  
  1737.      Click on the  toolbar button 
  1738.  
  1739.      Select Delete all from the Edit menu 
  1740.  
  1741.      Position the pointer on a breakpoint in the list, click mouse button 2, 
  1742.       and select Delete all from the popup menu. 
  1743.  
  1744.  Once you have deleted all breakpoints, all information on them is lost. If you 
  1745.  want to temporarily prevent all breakpoints from stopping execution, but you 
  1746.  may need to activate them later, disable them instead, by selecting 
  1747.  Edit->Disable all. 
  1748.  
  1749.  Related Information 
  1750.  
  1751.  Procedures 
  1752.  Enable and Disable Breakpoints 
  1753.  
  1754.  
  1755. ΓòÉΓòÉΓòÉ 1.7.1.3. Enable and Disable Breakpoints ΓòÉΓòÉΓòÉ
  1756.  
  1757. You can disable a breakpoint so that it does not stop execution, and then later 
  1758. enable it again. The advantage of disabling a breakpoint instead of deleting it 
  1759. is that it is easier to enable a breakpoint than to recreate it. The debugger 
  1760. lets you: 
  1761.  
  1762.      Enable breakpoints one at a time 
  1763.  
  1764.      Disable breakpoints one at a time 
  1765.  
  1766.      Enable all breakpoints at once 
  1767.  
  1768.      Disable all breakpoints at once. 
  1769.  
  1770.  Related Information 
  1771.  
  1772.  Procedures 
  1773.  Delete Breakpoints 
  1774.  Modify Breakpoint Characteristics 
  1775.  Set Breakpoints 
  1776.  
  1777.  
  1778. ΓòÉΓòÉΓòÉ 1.7.1.4. Modify Breakpoint Characteristics ΓòÉΓòÉΓòÉ
  1779.  
  1780. You can change the following characteristics of a breakpoint: 
  1781.  
  1782.      Which threads the breakpoint applies to 
  1783.  
  1784.      How often the debugger should skip the breakpoint (the frequency) 
  1785.  
  1786.      Whether to stop on the breakpoint only when a given expression is true 
  1787.  
  1788.      Whether to defer the breakpoint (for use with DLLs) 
  1789.  
  1790.  You can also change the Required parameters fields for a breakpoint, which 
  1791.  amounts to deleting the existing breakpoint and setting a new one. 
  1792.  
  1793.  To change a breakpoint's characteristics, select the breakpoint in the 
  1794.  Breakpoints List window and choose Edit->Modify, or place your pointer over 
  1795.  the breakpoint, click mouse button 2, and select Modify. 
  1796.  
  1797.  A Type Breakpoint window opens, where Type corresponds to the type of 
  1798.  breakpoint (Line, Function, Address, Storage change, Load occurrence), with 
  1799.  the current settings for the breakpoint already placed in the window's fields. 
  1800.  For information on individual fields within each window, see that window's 
  1801.  help. 
  1802.  
  1803.  Related Information 
  1804.  
  1805.  Procedures 
  1806.  Set a Deferred Breakpoint 
  1807.  
  1808.  
  1809. ΓòÉΓòÉΓòÉ 1.7.2. Skip over Sections of Code ΓòÉΓòÉΓòÉ
  1810.  
  1811. You can change the current execution point in a debugging session to another 
  1812. location in the current Source window, so that certain lines are executed 
  1813. again, or are skipped over when they otherwise would not be. From within the 
  1814. Source window containing the current execution point, do the following: 
  1815.  
  1816.    1. Scroll to the line number you want to jump to, if it is not already 
  1817.       visible. 
  1818.  
  1819.    2. Issue the Jump to location command by doing one of the following: 
  1820.  
  1821.           Click on the prefix area for the line, click mouse button 1, and 
  1822.            select Jump to location from the popup menu 
  1823.  
  1824.           Select the line, then select Run->Jump to location from the menu bar 
  1825.  
  1826.           Select the line, then press the N key, which is the accelerator for 
  1827.            the Jump to location command. 
  1828.  
  1829.  Note that using Jump to location can cause unpredictable results if you jump 
  1830.  outside the current function, jump over code that has side-effects (for 
  1831.  example, calls to functions whose results are assigned to variables, or 
  1832.  functions that change the contents of variables passed by reference), or jump 
  1833.  into the middle of a block such as a for loop. 
  1834.  
  1835.  
  1836. ΓòÉΓòÉΓòÉ 2. Concepts Help for Debugger ΓòÉΓòÉΓòÉ
  1837.  
  1838.  The Debugger Online Help is divided into four types of information: 
  1839.  
  1840.      Procedures - how to perform a specific task or set of tasks 
  1841.  
  1842.      Reference - technical information you may need to understand how to 
  1843.       perform a task 
  1844.  
  1845.      User Interface - context-sensitive help pages displayed when you press F1 
  1846.       from within the debugger 
  1847.  
  1848.      Concepts - overview information you may need to understand basic 
  1849.       principles of debugging or components of the debugger interface 
  1850.  
  1851.  Concepts help is organized hierarchically; see the following main topics: 
  1852.  
  1853.      Main debugger windows 
  1854.  
  1855.      Monitors 
  1856.  
  1857.      Remote debugging 
  1858.  
  1859.  
  1860. ΓòÉΓòÉΓòÉ 2.1. Main Debugger Windows ΓòÉΓòÉΓòÉ
  1861.  
  1862. You can get to help on the following debugger windows from here: 
  1863.  
  1864.      Source Window 
  1865.  
  1866.      Call Stack Window 
  1867.  
  1868.      Breakpoint List Window 
  1869.  
  1870.      Session Control Window 
  1871.  
  1872.  See also the following main help pages: 
  1873.  
  1874.      Dialogs 
  1875.  
  1876.      Monitor Windows 
  1877.  
  1878.      Other Help Topics 
  1879.  
  1880.  
  1881. ΓòÉΓòÉΓòÉ 2.1.1. Introduction to the Source Window ΓòÉΓòÉΓòÉ
  1882.  
  1883. The Source window displays the source code for the program you are debugging. 
  1884. If your program was compiled with debugging information, you have three choices 
  1885. as to how to view it: by its source code, its disassembled machine code, or a 
  1886. combination of the two. 
  1887.  
  1888. You can either step through or run your program from the Source window. A step 
  1889. command lets you step through your program, usually one line at a time. Step 
  1890. commands are useful for monitoring logic flow, and for seeing how variables, 
  1891. storage, registers, or the stack are affected by each line that you step 
  1892. through. The Run command runs your program up to the next breakpoint, or until 
  1893. an exception that is not handled occurs, or until the program ends. 
  1894.  
  1895. Breakpoints are markers you place in your program to tell the debugger to stop 
  1896. whenever execution reaches that point. For example, if a particular statement 
  1897. in your program is causing problems, you could set a breakpoint on the line 
  1898. containing the statement, then run your program. Execution stops at the 
  1899. breakpoint, before the statement is executed, and you can check the contents of 
  1900. variables, registers, storage, and the stack, then either step over the 
  1901. statement to see how the problem arises, or jump over the statement to 
  1902. temporarily circumvent the problem. 
  1903.  
  1904. Related Information 
  1905.  
  1906. Procedures 
  1907. Run, Step Through, or Stop a Program 
  1908. Set and Clear Breakpoints from a Source Window 
  1909.  
  1910. Reference 
  1911. When You Start Debugging 
  1912. Problems Getting a Source or Mixed View 
  1913. Prefix Area 
  1914.  
  1915.  
  1916. ΓòÉΓòÉΓòÉ 2.1.1.1. Disassembly View ΓòÉΓòÉΓòÉ
  1917.  
  1918. In a disassembly view, the object code for an object used by your program is 
  1919. disassembled into assembly language. For objects that were compiled with debug 
  1920. information, you can switch between disassembly view and the other views 
  1921. (source and mixed). For objects that were not compiled with debug information, 
  1922. disassembly view is the only view available. 
  1923.  
  1924. Related Information 
  1925.  
  1926. Concepts 
  1927. Source View 
  1928. Mixed View 
  1929.  
  1930.  
  1931. ΓòÉΓòÉΓòÉ 2.1.1.2. Mixed View ΓòÉΓòÉΓòÉ
  1932.  
  1933. A mixed view is a combination of a source view and a disassembly view. In this 
  1934. view, the Source window displays each line of source code followed by the 
  1935. resulting assembly language instructions. If the object file was made from 
  1936. several source files, and Options->Window settings->Notebook is checked, the 
  1937. mixed view is displayed in notebook format, with a tab for each source file 
  1938. that is included in the object file. 
  1939.  
  1940. Mixed views are available only for objects that were compiled with debug 
  1941. information. 
  1942.  
  1943. Related Information 
  1944.  
  1945. Concepts 
  1946. Source View 
  1947. Disassembly View 
  1948.  
  1949.  
  1950. ΓòÉΓòÉΓòÉ 2.1.1.3. Source View ΓòÉΓòÉΓòÉ
  1951.  
  1952. In a source view, the Source window displays the source code for an object file 
  1953. within your program. If the object file was made from several source files, and 
  1954. Options->Window settings->Notebook is checked, the source view is displayed in 
  1955. notebook format, with a tab for each source file that is included in the object 
  1956. file. 
  1957.  
  1958. Source views are available only for components that were compiled with debug 
  1959. information. For any file that can be viewed with a source view, all views 
  1960. (source, disassembly, and mixed) are available. 
  1961.  
  1962. Related Information 
  1963.  
  1964. Concepts 
  1965. Disassembly View 
  1966. Mixed View 
  1967.  
  1968.  
  1969. ΓòÉΓòÉΓòÉ 2.1.1.4. How Step Commands Work in Different Views ΓòÉΓòÉΓòÉ
  1970.  
  1971. In the Source window, the current view of your program affects how step 
  1972. commands work. In a source view, they operate on the basis of lines of source 
  1973. code (typically, one step per line of source code that contains executable 
  1974. code). In a mixed view, the debugger treats source code lines as comments; in 
  1975. both Mixed and Disassembly views, step commands operate on disassembly 
  1976. instructions (typically, one step per line of disassembled code). 
  1977.  
  1978. When you step from a function displayed in source view into a call to a 
  1979. function that was compiled without debug information, the Source window for the 
  1980. called function appears in disassembly view, and therefore step commands in 
  1981. that window will operate on a disassembly-instruction basis. 
  1982.  
  1983. Related Information 
  1984.  
  1985. Reference 
  1986. Stepping and Functions 
  1987.  
  1988.  
  1989. ΓòÉΓòÉΓòÉ 2.1.2. Introduction to the Call Stack Window ΓòÉΓòÉΓòÉ
  1990.  
  1991. When one function calls another, information about the calling function is 
  1992. placed on the stack for the executing thread. The debugger examines the stack 
  1993. and the processor registers to determine all functions that have been called 
  1994. for that thread, and lists these functions in the Call Stack window. 
  1995.  
  1996. Each Call Stack window displays information for a single thread. The thread 
  1997. number is indicated in the window title. 
  1998.  
  1999. OS/2 debuggee only: The amount of free stack space remaining for the thread is 
  2000. shown near the top of the window, in bytes. 
  2001.  
  2002. Related Information 
  2003.  
  2004. Procedures 
  2005. Use the Call Stack Window 
  2006.  
  2007.  
  2008. ΓòÉΓòÉΓòÉ 2.1.3. Introduction to the Breakpoints List Window ΓòÉΓòÉΓòÉ
  2009.  
  2010. Use the Breakpoints List window to view breakpoints for your program, change 
  2011. their characteristics, delete them, or add new ones. 
  2012.  
  2013. Related Information 
  2014.  
  2015. Procedures 
  2016. Set Breakpoints 
  2017. Delete Breakpoints 
  2018. Enable and Disable Breakpoints 
  2019. Modify Breakpoint Characteristics 
  2020. View Popup Choice 
  2021.  
  2022. Reference 
  2023. Breakpoints List Popup Menu 
  2024.  
  2025.  
  2026. ΓòÉΓòÉΓòÉ 2.1.3.1. Types of Breakpoints ΓòÉΓòÉΓòÉ
  2027.  
  2028. The debugger supports the following types of breakpoints: 
  2029.  
  2030.      Line breakpoints are triggered before the code at a particular line in a 
  2031.       source file is executed. 
  2032.  
  2033.      Function breakpoints are triggered when the function they apply to is 
  2034.       reached. 
  2035.  
  2036.      Address breakpoints are triggered before the disassembly instruction at a 
  2037.       particular address is executed. 
  2038.  
  2039.      Storage change breakpoints are triggered when the storage within a 
  2040.       particular address range is written to. The range is typically a small 
  2041.       power of 2 (for example, 4 bytes). 
  2042.  
  2043.      Load occurrence breakpoints are triggered when a DLL is loaded into an 
  2044.       application. This happens the first time a reference is made to a 
  2045.       function within the DLL. 
  2046.  
  2047.  Related Information 
  2048.  
  2049.  Procedures 
  2050.  Set Breakpoints 
  2051.  
  2052.  
  2053. ΓòÉΓòÉΓòÉ 2.1.4. Introduction to the Session Control Window ΓòÉΓòÉΓòÉ
  2054.  
  2055. The Session Control window is the control window of the debugger, and is 
  2056. displayed during the entire debugging session. It contains a status line that 
  2057. indicates what the debugger is doing (for example, Ready). 
  2058.  
  2059. The window is divided into two panes. The left pane, called the Threads pane, 
  2060. shows the active threads for the program, while the right pane, called the 
  2061. Components pane, shows the list of object files. You can resize these panes 
  2062. with the mouse by dragging the split bar between them to the left or right. 
  2063.  
  2064. Use the mouse or the cursor left and right keys to shift the focus between the 
  2065. panes. 
  2066.  
  2067. You can expand the items in these panes by clicking on the '+' to their left, 
  2068. and you can collapse them by clicking on the '-'. 
  2069.  
  2070. Related Information 
  2071.  
  2072. Reference 
  2073. Using the Threads Pane 
  2074. Using the Components Pane 
  2075.  
  2076.  
  2077. ΓòÉΓòÉΓòÉ 2.2. Monitors ΓòÉΓòÉΓòÉ
  2078.  
  2079. You can view help on the following debugger monitor windows: 
  2080.  
  2081.      Registers Monitor 
  2082.  
  2083.      Storage Monitor 
  2084.  
  2085.      Monitor Expression Dialog 
  2086.  
  2087.      Popup Monitor 
  2088.  
  2089.      Private Monitor 
  2090.  
  2091.      Program Monitor 
  2092.  
  2093.      Local Variables Monitor 
  2094.  
  2095.  Help is also available on the following monitor-related topics: 
  2096.  
  2097.      Popup Menus for Private and Program Monitors 
  2098.  
  2099.      Differences Between the Program and Private Monitors 
  2100.  
  2101.  See also the following main help pages: 
  2102.  
  2103.      Main Debugger Windows 
  2104.  
  2105.      Dialogs 
  2106.  
  2107.      Other Help Topics 
  2108.  
  2109.  
  2110. ΓòÉΓòÉΓòÉ 2.2.1. Introduction to the Program Monitor ΓòÉΓòÉΓòÉ
  2111.  
  2112. You can monitor variables and expressions from Source windows in the Program 
  2113. monitor. This monitor is not associated with any particular Source window, and 
  2114. remains open until you close it directly or exit the debugger. Use it to 
  2115. monitor global variables or variables you want to see at all times during your 
  2116. debugging session. 
  2117.  
  2118. You can open the Program monitor from a Source window by adding a variable or 
  2119. expression to the program monitor. 
  2120.  
  2121. From within the Program monitor, you can select one or more expressions or 
  2122. variables, and access a popup menu to apply changes to them. For example, you 
  2123. can delete an expression from the monitor, change its representation, or edit 
  2124. its contents. 
  2125.  
  2126. Expressions and variables that have a '+' on their left can be expanded, and 
  2127. those with a '-' can be collapsed. Arrays and C++ class objects, for example, 
  2128. are displayed by default in expanded format, with entries both for the array 
  2129. and for elements within it. To collapse the list of elements, or to expand a 
  2130. collapsed list, double-click on the '+' or '-', or place the cursor on that 
  2131. line and press the Enter key. 
  2132.  
  2133. C++ only: Pointers are displayed with a '>' on their left. You can change an 
  2134. array or class object to pointer representation by dereferencing it. You can 
  2135. display the value of the pointer, or the start of the memory it points to, by 
  2136. choosing a different representation for it. 
  2137.  
  2138. Related Information 
  2139.  
  2140. Procedures 
  2141. Add Expressions and Variables to a Monitor 
  2142.  
  2143.  
  2144. ΓòÉΓòÉΓòÉ 2.2.2. Introduction to the Private Monitor ΓòÉΓòÉΓòÉ
  2145.  
  2146. You can monitor variables and expressions from a given Source window in a 
  2147. Private monitor, which is associated with only that Source window. Private 
  2148. monitors help you keep track of local variables and expressions in programs 
  2149. with multiple compilation units. They are particularly useful in cases where 
  2150. the number of variables or expressions is large, or where variables with the 
  2151. same name appear in different compilation units. 
  2152.  
  2153. You can open a Private monitor for a Source window by adding an expression or 
  2154. variable to the Private monitor from that Source window. 
  2155.  
  2156. From within a Private monitor, you can select one or more expressions or 
  2157. variables, and access a popup menu to apply changes to them. For example, you 
  2158. can delete an expression from the monitor, change its representation, or edit 
  2159. its contents. 
  2160.  
  2161. Expressions and variables that have a '+' on their left can be expanded, and 
  2162. those with a '-' can be collapsed. Arrays and C++ class objects, for example, 
  2163. are displayed by default in expanded format, with entries both for the array 
  2164. and for elements within it. To collapse the list of elements, or to expand a 
  2165. collapsed list, double-click on the '+' or '-', or place the cursor on that 
  2166. line and press the Enter key. 
  2167.  
  2168. C++ only: Pointers are displayed with a '>' on their left. You can change an 
  2169. array or class object to pointer representation by dereferencing it. You can 
  2170. display the value of the pointer, or the start of the memory it points to, by 
  2171. choosing a different representation for it. 
  2172.  
  2173. Related Information 
  2174.  
  2175. Procedures 
  2176. Add Expressions and Variables to a Monitor 
  2177.  
  2178.  
  2179. ΓòÉΓòÉΓòÉ 2.2.3. Differences between Program and Private Monitors ΓòÉΓòÉΓòÉ
  2180.  
  2181. The Program and Private monitors are very similar, but have the following 
  2182. differences: 
  2183.  
  2184.      The Program monitor can be used to monitor all variables, while a Private 
  2185.       monitor is associated with a single Source window. 
  2186.  
  2187.      The Program monitor remains open at all times unless you close it or exit 
  2188.       the debugger. A Private monitor closes whenever the Source window it is 
  2189.       associated with closes, and is hidden whenever its Source window becomes 
  2190.       inactive (for example, when a statement in that Source window returns 
  2191.       control to code in another Source window). 
  2192.  
  2193.      Because a Private monitor is associated with a specific Source window, 
  2194.       whose focus is raised whenever you select the monitor, it does not have a 
  2195.       Windows menu. 
  2196.  
  2197.  Related Information 
  2198.  
  2199.  Procedures 
  2200.  Add Expressions and Variables to a Monitor 
  2201.  Debug Variable Contents and Memory 
  2202.  View Variable Contents 
  2203.  
  2204.  
  2205. ΓòÉΓòÉΓòÉ 2.2.4. Introduction to the Local Variables Monitor ΓòÉΓòÉΓòÉ
  2206.  
  2207. Note: The Local Variables monitor is not available for debugging PL/I programs. 
  2208.  
  2209. You can monitor variables within the current scope of a Source window from the 
  2210. Local Variables monitor. This monitor is associated with a particular thread, 
  2211. and closes automatically when that thread terminates. It is updated, after each 
  2212. Step or Run command, to show what variables are currently in scope, and what 
  2213. the contents of those variables are. 
  2214.  
  2215. To open a Local Variables monitor for a given thread, highlight that thread in 
  2216. the Threads pane of the Session Control window, or raise the Source window for 
  2217. that thread; then choose Monitors->Local variables. 
  2218.  
  2219. From within a Local Variables monitor, you can select one or more variables, 
  2220. and access a popup menu to apply changes to them. For example, you can delete a 
  2221. variable from the monitor, change its representation, or edit its contents. 
  2222.  
  2223. Expressions and variables that have a '+' on their left can be expanded, and 
  2224. those with a '-' can be collapsed. Arrays and C++ class objects, for example, 
  2225. are displayed by default in expanded format, with entries both for the array 
  2226. and for elements within it. To collapse the list of elements, or to expand a 
  2227. collapsed list, double-click on the '+' or '-', or place the cursor on that 
  2228. line and press the Enter key. 
  2229.  
  2230. C++ only: Pointers are displayed with a '>' on their left. You can change an 
  2231. array or class object to pointer representation by dereferencing it. You can 
  2232. display the value of the pointer, or the start of the memory it points to, by 
  2233. choosing a different representation for it. 
  2234.  
  2235. Related Information 
  2236.  
  2237. Reference 
  2238. Private Monitor 
  2239. Program Monitor 
  2240. Popup Monitor 
  2241.  
  2242.  
  2243. ΓòÉΓòÉΓòÉ 2.2.5. Introduction to the Registers Monitor ΓòÉΓòÉΓòÉ
  2244.  
  2245. The Registers monitor shows the contents of processor registers for a 
  2246. particular thread in your program. If you are debugging multiple threads, you 
  2247. can display a separate Registers monitor for each thread. Although all threads 
  2248. share the same set of registers, the operating system saves the register 
  2249. contents of each thread as the thread is suspended, and restores that thread's 
  2250. processor contents when the thread resumes. 
  2251.  
  2252. In the Registers monitor, floating-point registers are displayed either as 
  2253. floating-point decimal numbers or as hexadecimal values. To change their 
  2254. representation, go to the Source window or the Session Control window, select 
  2255. Options->Debugger settings->Default data representation->System, and choose 
  2256. Floating point or Hexadecimal. 
  2257.  
  2258. If you are debugging an Intel-based application and you step over a source line 
  2259. containing floating-point arithmetic, you may find that the values of 
  2260. floating-point registers in the Registers monitor are not displayed. Instead, 
  2261. 'Not used' appears beside each register. See the help below for a solution. 
  2262.  
  2263. Related Information 
  2264.  
  2265. Procedures 
  2266. Display Floating-Point Register Contents 
  2267.  
  2268.  
  2269. ΓòÉΓòÉΓòÉ 2.2.6. Introduction to the Storage Monitor ΓòÉΓòÉΓòÉ
  2270.  
  2271. The Storage monitor lets you view and update the contents of storage areas used 
  2272. by your program. You can do the following: 
  2273.  
  2274.      Specify a variable, array, class object (C++ only), expression, or 
  2275.       storage address to view. Note: You cannot monitor the storage represented 
  2276.       by an expression when debugging PL/I programs. 
  2277.  
  2278.      Change the address range to view 
  2279.  
  2280.      Modify the contents of storage 
  2281.  
  2282.      Change the representation the debugger uses to display storage, for 
  2283.       example, from hexadecimal to floating-point 
  2284.  
  2285.  You can open a new Storage monitor from a Source window or from the Session 
  2286.  Control window. 
  2287.  
  2288.  The title of each Storage monitor includes the variable name or address range 
  2289.  whose contents the window displays, as well as the current representation for 
  2290.  the window. 
  2291.  
  2292.  Related Information 
  2293.  
  2294.  Procedures 
  2295.  View a Location in Storage 
  2296.  Change the Storage Monitor Address Range 
  2297.  Change the Contents of Storage, Variables, and Registers 
  2298.  Change the Representation of Storage 
  2299.  Open a New Storage Monitor 
  2300.  
  2301.  
  2302. ΓòÉΓòÉΓòÉ 2.3. Expressions ΓòÉΓòÉΓòÉ
  2303.  
  2304. For information on what expressions you can enter in the Expression entry field 
  2305. of the Monitor Expression dialog or the Monitor Expression in Storage dialog, 
  2306. see the section on supported expressions for the language you are debugging: 
  2307.  
  2308.      C++ 
  2309.  
  2310.      COBOL 
  2311.  
  2312.      PL/I 
  2313.  
  2314.  
  2315. ΓòÉΓòÉΓòÉ 2.4. Remote Debugging ΓòÉΓòÉΓòÉ
  2316.  
  2317. Remote debugging lets you debug programs that are running on one system, using 
  2318. a VisualAge debugger running on another system. 
  2319.  
  2320. Related Information 
  2321.  
  2322. Procedures 
  2323. Start the Debugger and the Remote Program 
  2324.  
  2325. Reference 
  2326. Why Use Remote Debugging 
  2327. Supported Communications Protocols and Platforms 
  2328.  
  2329.  
  2330. ΓòÉΓòÉΓòÉ 2.5. Stopping Thread ΓòÉΓòÉΓòÉ
  2331.  
  2332. A stopping thread is the thread that caused the program being debugged to stop. 
  2333.  
  2334.  
  2335. ΓòÉΓòÉΓòÉ 2.6. Other Help Topics ΓòÉΓòÉΓòÉ
  2336.  
  2337. You can get to the following debugger help topics from here: 
  2338.  
  2339.      Common Menu Choices 
  2340.  
  2341.      Toolbar Buttons 
  2342.  
  2343.      Expressions Supported 
  2344.  
  2345.      Toolbar Short Cut Menu 
  2346.  
  2347.      Postmortem Debugging 
  2348.  
  2349.      Debug on Demand 
  2350.  
  2351.      Environment Variables 
  2352.  
  2353.      Search Order 
  2354.  
  2355.      Child Process Debugging 
  2356.  
  2357.      Debugging Threads 
  2358.  
  2359.  See also the following main help pages: 
  2360.  
  2361.      Main Debugger Windows 
  2362.  
  2363.      Dialogs 
  2364.  
  2365.      Monitor Windows 
  2366.  
  2367.      Debugger Help Home Page 
  2368.  
  2369.  
  2370. ΓòÉΓòÉΓòÉ 2.6.1. Record of Directories ΓòÉΓòÉΓòÉ
  2371.  
  2372. The record of directories is a cumulative list of all directories you have 
  2373. entered in source path dialog boxes that opened when the debugger could not 
  2374. locate a source file. This list is only cumulative for the duration of the 
  2375. debugger session; when you exit the debugger, the list is not saved. 
  2376.  
  2377. The debugger assumes that any directory in the record of directories may be on 
  2378. either the debugger machine or the debuggee machine. 
  2379.  
  2380.  
  2381. ΓòÉΓòÉΓòÉ 3. Reference Help for Debugger ΓòÉΓòÉΓòÉ
  2382.  
  2383. The Debugger Online Help is divided into four types of information: 
  2384.  
  2385.      Procedures - how to perform a specific task or set of tasks 
  2386.  
  2387.      Reference - technical information you may need to understand how to 
  2388.       perform a task 
  2389.  
  2390.      User Interface - context-sensitive help pages displayed when you press F1 
  2391.       from within the debugger 
  2392.  
  2393.      Concepts - overview information you may need to understand basic 
  2394.       principles of debugging or components of the debugger interface 
  2395.  
  2396.  Reference help is organized hierarchically; see the following main topics: 
  2397.  
  2398.      When you start debugging 
  2399.  
  2400.      Child process debugging 
  2401.  
  2402.      Debugging threads 
  2403.  
  2404.      Debug on demand 
  2405.  
  2406.      Debugger options 
  2407.  
  2408.      Compiler options and optimization 
  2409.  
  2410.      Environment variables 
  2411.  
  2412.      Expressions supported 
  2413.  
  2414.      Problems Getting a Source or Mixed View 
  2415.  
  2416.      Postmortem Debugging 
  2417.  
  2418.      Supported Communications Protocols and Platforms 
  2419.  
  2420.      Why Use Remote Debugging? 
  2421.  
  2422.  
  2423. ΓòÉΓòÉΓòÉ 3.1. When You Start Debugging ΓòÉΓòÉΓòÉ
  2424.  
  2425. The first time you debug a program, the debugger raises the following windows: 
  2426.  
  2427.      A Source window. This window contains the source code (or disassembly 
  2428.       code, if the program was compiled without debug information) for the main 
  2429.       function of your program. 
  2430.  
  2431.      The Session Control window. Use this window to access other windows, to 
  2432.       control the debugging of threads and functions, and to perform various 
  2433.       debugger commands. 
  2434.  
  2435.      When the program being debugged (the 'debuggee') is running locally on 
  2436.       Windows and OS/2, the debugger also raises a Debug Application window, 
  2437.       which is a text-mode window. This window is a text mode window, and is 
  2438.       used for any console input and output your program may require. For 
  2439.       programs using a graphical user interface (such as the User Interface 
  2440.       classes of IBM OpenClass), the Debug Application window usually stays 
  2441.       blank throughout the debugging session. 
  2442.  
  2443.  The debugger behavior at startup depends upon the dominant language, as 
  2444.  specified by the DEBUG_LANG environment variable. 
  2445.  
  2446.  DEBUG_LANG=CPP The debugger runs up to the start of main. If you checked the 
  2447.            Debug program initialization check box on the Startup dialog, the 
  2448.            debugger starts at the first line of disassembly code in your 
  2449.            program. Use this check box when you want to debug initialization 
  2450.            code such as the constructors for class objects declared at global 
  2451.            scope. 
  2452.  
  2453.  DEBUG_LANG=COBOL or PL1 or PLI The debugger runs up to the first debuggable 
  2454.            statement in the application. If no part of the application was 
  2455.            compiled and linked with debug information, then the debugger does 
  2456.            not stop the application (unless the application generates an 
  2457.            exception), and a message box is displayed containing the text: 
  2458.            'Program has run to completion. Executed code was not compiled with 
  2459.            debugging information.' 
  2460.  
  2461.  As you step through or run your program, the debugger may raise additional 
  2462.  Source windows for other object files that are executed. If you exit the 
  2463.  debugger, then debug the same program later, these other windows appear on 
  2464.  reload, provided you saved program profile information. 
  2465.  
  2466.  When you start debugging a program for the first time, no breakpoints are set 
  2467.  and  no variables or expressions are being monitored. During the debug 
  2468.  session, you may set breakpoints, or add variables or expressions to a local 
  2469.  variables monitor. When you exit the debugger, breakpoints, local variables 
  2470.  and expressions are saved in the program profile, and will be activated the 
  2471.  next time you debug this program. 
  2472.  
  2473.  
  2474. ΓòÉΓòÉΓòÉ 3.1.1. Stepping and Functions ΓòÉΓòÉΓòÉ
  2475.  
  2476. In a source code line that contains multiple calls, you can choose to step over 
  2477. all the calls, or step through the calls individually. Given a complex C++ call 
  2478. such as func1( func2(), func3() );, you can do the following: 
  2479.  
  2480.      Step over the entire line with a single Step Over command. 
  2481.  
  2482.      Step through each called function with a series of  Step Into commands. 
  2483.       You can then step through the function, or, to return to the original 
  2484.       statement so that you can step into the next function, issue a Step 
  2485.       Return command. 
  2486.  
  2487.      Step into each called function for which debug information is available, 
  2488.       with a series of Step Debug commands. Each time you use Step Debug to 
  2489.       step into such a function, you can then step through the function, or 
  2490.       issue a Step Return command to return to the original statement. 
  2491.  
  2492.  You can also use a combination of step commands and function breakpoints to 
  2493.  more finely control which functions called from a given line are stepped into 
  2494.  and which are stepped over. 
  2495.  
  2496.  Related Information 
  2497.  
  2498.  Procedures 
  2499.  Set and Clear Breakpoints from a Source Window 
  2500.  
  2501.  
  2502. ΓòÉΓòÉΓòÉ 3.1.2. C++ Compiler Options ΓòÉΓòÉΓòÉ
  2503.  
  2504. Compile your C++ programs with the  /Ti+ option (to generate debugging 
  2505. information) if you want to be able to debug your program at the source code 
  2506. statement level. You should also consider using the following options: 
  2507.  
  2508.  Option    Purpose 
  2509.  
  2510.  /Tm+      Enable debug memory management support. Use this option if you want 
  2511.            to do heap debugging (using the Storage monitor and Check heap when 
  2512.            stopping). 
  2513.  
  2514.  /O-       Compiles your program with optimization off. This is the default. 
  2515.            (Some optimizations reorder the execution sequence of your program, 
  2516.            while others may eliminate expressions whose result is never used. 
  2517.            You may find it confusing to debug a program compiled with 
  2518.            optimization, because statements may execute in a nonsequential 
  2519.            fashion or not at all.) 
  2520.  
  2521.  /Oi-      Compiles your program with inlining off. This is the default. 
  2522.  
  2523.  /DEbug    Use this option with the ilink command when linking objects that 
  2524.            were compiled with debug information but are being separately 
  2525.            linked. When you specify the /Ti+ option for a source file, the 
  2526.            compiler passes the /DE linker option to the linker automatically. 
  2527.  
  2528.  Related Information 
  2529.  
  2530.  Procedures 
  2531.  Invoke the Debugger 
  2532.  Debug Heap Usage 
  2533.  
  2534.  
  2535. ΓòÉΓòÉΓòÉ 3.1.3. COBOL Compiler Options on Intel Platforms ΓòÉΓòÉΓòÉ
  2536.  
  2537. Compile your programs with the -g option (to generate debugging information) if 
  2538. you want to be able to debug your program at the source code statement level. 
  2539. Specifying the -g option with cob2 causes the program to be compiled with the 
  2540. TEST option and linked with the /DEBUG option, both of which are necessary for 
  2541. debugging. Note that the TEST and OPTIMIZE compiler options are mutually 
  2542. exclusive; if you use both, OPTIMIZE will be ignored. 
  2543.  
  2544.  
  2545. ΓòÉΓòÉΓòÉ 3.1.4. Intel Options for PL/I Programs ΓòÉΓòÉΓòÉ
  2546.  
  2547. To use the debugger to debug a PL/I program, you must compile and link your 
  2548. program with the following options: 
  2549.  
  2550.  TEST      Compiles your program to produce an object file that includes line 
  2551.            number and other information, in addition to the source code. 
  2552.  
  2553.  /DEbug    Links your program to produce an executable file that includes line 
  2554.            number information and a symbol table, in addition to the executable 
  2555.            code. 
  2556.  
  2557.  The following two compile-time options are recommended when you are using the 
  2558.  debugger to debug PL/I programs, but are not required: 
  2559.  
  2560.  NOOPTimize Debugging is easier if you compile your program with optimization 
  2561.            off. NOOPT is the default. 
  2562.  
  2563.  DEFAULT(NOINLINE) Compiles your program with inlining turned off. NOINLINE is 
  2564.            the default. 
  2565.  
  2566.  Related Information 
  2567.  
  2568.  Procedures 
  2569.  Invoke the Debugger 
  2570.  
  2571.  
  2572. ΓòÉΓòÉΓòÉ 3.2. Debugging Threads ΓòÉΓòÉΓòÉ
  2573.  
  2574.  Note: The sections on debugging threads are intended primarily for users with 
  2575. limited knowledge of developing multithreaded programs, in particular, those 
  2576. whose programming experience is mainly with single-threaded environments such 
  2577. as Windows 3.1. 
  2578.  
  2579. Multithreaded programs may behave differently in the debugger than they do when 
  2580. run normally. Because debugger features such as single-stepping and certain 
  2581. kinds of breakpoints involve processing overhead, running a multithreaded 
  2582. program within the debugger may affect the timing of thread switches. If you 
  2583. are experiencing problems, you can use the Threads pane of the Session Control 
  2584. window to enable or disable threads so that you can debug problems related to 
  2585. thread timing. 
  2586.  
  2587. The main problems you are likely to encounter in debugging multithreaded 
  2588. programs are timing and deadlock problems. You should not assume that a timing 
  2589. or deadlock problem that seems only to occur when your program is running 
  2590. within the debugger will never occur outside of the debugger. It is far more 
  2591. likely that the processing overhead of the debugger is merely increasing the 
  2592. frequency with which coding problems lead to deadlocks or thread timing errors. 
  2593.  
  2594. The following sections describe issues relating to debugging multithreaded 
  2595. programs, and contain suggestions for ensuring that your multithreaded programs 
  2596. are threadsafe both during debugging and in production use: 
  2597.  
  2598.      Deadlocks and Timing Problems 
  2599.  
  2600.      Windowing System Lockups 
  2601.  
  2602.      Critical sections 
  2603.  
  2604.      Race Conditions 
  2605.  
  2606.      Threads and Source Language Statements 
  2607.  
  2608.      Threads and C++ Class Members 
  2609.  
  2610.      Threads and Load Occurrence Breakpoints 
  2611.  
  2612.      Must Complete Sections 
  2613.  
  2614.      OS/2 Thread-Related APIs 
  2615.  
  2616.  
  2617. ΓòÉΓòÉΓòÉ 3.2.1. Deadlocks and Timing Problems ΓòÉΓòÉΓòÉ
  2618.  
  2619. Thread deadlocks can occur in a multithreaded program running inside the 
  2620. debugger, even though they never seem to occur when the program runs outside 
  2621. the debugger. Consider a program with two threads running, in which the threads 
  2622. both request two mutex semaphores but in different orders: 
  2623.  
  2624. THREAD 1                                  THREAD 2
  2625. Lots of code                              A bit of code, then request semaphore Y
  2626. Request semaphore X                       Request semaphore X
  2627. Lots of Code                              Release semaphores Y and X
  2628. Requests semaphore Y
  2629. Some code
  2630. Release sempahores X and Y
  2631.  
  2632. These two threads may deadlock. However, because the operating system may 
  2633. timeslice your program and the threads within it in an unpredictable fashion, 
  2634. such deadlocks may not become obvious until you try to debug the program. In 
  2635. the example, you may find that when run outside the debugger, Thread 2 can 
  2636. request and release both semaphores before Thread 1 has even finished its large 
  2637. initial code section; both semaphores may already be released by Thread 2 by 
  2638. the time they are requested by Thread 1. However, within the debugger, if you 
  2639. are setting breakpoints, stepping through code, or otherwise slowing down one 
  2640. thread compared to another, you may wind up finding the requests for the 
  2641. semaphores clashing and thereby blocking each other. For example, if you step 
  2642. through Thread 2, its short initial code section may take longer to execute 
  2643. than the long initial code section of Thread 1: 
  2644.  
  2645. Thread 1: Lots of code
  2646.      Thread 2: A bit of code,
  2647. ,
  2648.      .
  2649. ,
  2650.      .
  2651. Thread 1: Lots of code completes
  2652.      Thread 2: A bit of code completes
  2653. Thread 1: Request semaphore X (okay)
  2654.      Thread 2: Request semaphore Y (okay)
  2655. Thread 1: Lots of code, then request semaphore Y (waits)
  2656.      Thread 2: Request semaphore X (deadlock)
  2657.  
  2658. Because each thread is requesting a semaphore owned by the other thread, the 
  2659. two threads lock up. 
  2660.  
  2661. To avoid this kind of lockup, always request a group of semaphores in the same 
  2662. order from every thread that uses them. It is also a good idea to release them 
  2663. in the reverse order from the request order. For example: 
  2664.  
  2665. THREAD 1                 THREAD 2
  2666. Lots of code             A bit of code
  2667. Request semaphore X      Request semaphore X (waits)
  2668. Lots of code             (still waiting)
  2669. Request semaphore Y      (still waiting)
  2670. Release semaphore Y      (still waiting)
  2671. Release semaphore X      (obtains semaphore X)
  2672.                          Request semaphore Y (okay)
  2673. ...                      ...
  2674.  
  2675. Regardless of which thread completes first, there is no deadlock because 
  2676. whichever thread requests X last will be forced to wait until X is freed, and X 
  2677. will not be freed until the other thread no longer requires either semaphore. 
  2678.  
  2679. The debugger may expose semaphore-related deadlocks that do not normally occur, 
  2680. because of the following factors: 
  2681.  
  2682.      When you step through a thread or run to a breakpoint within that thread, 
  2683.       you inevitably affect the point at which thread swapping occurs 
  2684.  
  2685.      The debugger inevitably intrudes on both the operating system and the 
  2686.       debuggee application. The debugger needs to be informed of thread 
  2687.       starting and stopping, exceptions, module loads, and so on, and its mere 
  2688.       presence affects the dynamics of the operating system. 
  2689.  
  2690.  Related Information 
  2691.  
  2692.  Reference 
  2693.  Debugging Threads 
  2694.  
  2695.  
  2696. ΓòÉΓòÉΓòÉ 3.2.2. Windowing System Lockups ΓòÉΓòÉΓòÉ
  2697.  
  2698. Multithreaded programs have a greater tendency than single-thread programs to 
  2699. cause your windowing system to lock up, because of such problems as semaphore 
  2700. deadlocks and live threads waiting for results from threads that have 
  2701. inadvertently died. When the debugging of a multithreaded program hangs your 
  2702. windowing system, you have no way of continuing to debug the faulty program, 
  2703. because the debugger uses the windowing system as well. 
  2704.  
  2705. To solve such problems, you can use the debugger's remote debug feature. 
  2706. Install the debugger on both machines, start a remote debug server session on 
  2707. the machine you want to run the program on, and run the debugger from the other 
  2708. machine. If your program hangs the windowing system on its own machine (the 
  2709. remote machine), you can still step through it because the windowing system on 
  2710. your local machine is still operational. See Remote Debugging for further 
  2711. information. 
  2712.  
  2713. Related Information 
  2714.  
  2715. Concepts 
  2716. Remote Debugging 
  2717.  
  2718. Reference 
  2719. Debugging Threads 
  2720.  
  2721.  
  2722. ΓòÉΓòÉΓòÉ 3.2.3. Critical Sections ΓòÉΓòÉΓòÉ
  2723.  
  2724. The OS/2 and Windows operating systems support the use of critical sections to 
  2725. mark particular sections of code that should never be timesliced out within a 
  2726. multithreaded application. The purpose of these critical sections is to prevent 
  2727. problems such as loss of data integrity (where two threads are simultaneously 
  2728. reading and then writing to the same variable or file). You should avoid using 
  2729. critical sections except under very limited circumstances. Critical sections 
  2730. can cause deadlocks and major timing problems, because: 
  2731.  
  2732.      They block every thread within your application, other than the thread 
  2733.       containing the critical section, from doing anything. This prevents an 
  2734.       efficient distribution of system resources to all threads. 
  2735.  
  2736.      If you call a function within a critical section (explicitly through a 
  2737.       call, or implicitly by using the C++ new, delete, or user-defined 
  2738.       operators for a variable of class type, such as an IString object) the 
  2739.       called function may request a semaphore that is already locked. This 
  2740.       thread then locks, but because it is declared as a critical section, the 
  2741.       thread that owns the semaphore can never be timesliced back in to release 
  2742.       the semaphore. For example: 
  2743.  
  2744.  
  2745.             Thread 1               Thread 2
  2746.                |             +_______|
  2747.                new-+         |     start critical section
  2748.                    |         |       |
  2749.               request sem A  |     new-+
  2750.                    |         |         |
  2751.                    +_________+      request sem A
  2752.                    |                   |
  2753.               release sem A         release sem A
  2754.                    |                   |
  2755.                ____+                 +-+
  2756.                                     end critical section
  2757.  
  2758.       In this example, Thread 1 calls the new operator, which requests 
  2759.       semaphore A. The operating system timeslices it out while it owns 
  2760.       semaphore A. Thread 2 gets timesliced in, declares a critical section, 
  2761.       and calls new, which requests the same semaphore A (this semaphore is an 
  2762.       operating system semaphore used to prevent two threads from 
  2763.       simultaneously allocating storage). Because semaphore A is already owned 
  2764.       by thread 1, thread 2 waits for the semaphore indefinitely. Thread 1 can 
  2765.       never be timesliced back in to release semaphore A, because thread 2 is 
  2766.       in a critical section; and thread 2 can never exit its critical section, 
  2767.       because it is frozen waiting for semaphore A. 
  2768.  
  2769.  Semaphores and critical sections provide some of the same functionality, but 
  2770.  using only semaphores is a better programming practice and leads to more 
  2771.  threadsafe programs. Avoid the use of critical sections in your programs 
  2772.  wherever possible. 
  2773.  
  2774.  Related Information 
  2775.  
  2776.  Reference 
  2777.  Debugging Threads 
  2778.  
  2779.  
  2780. ΓòÉΓòÉΓòÉ 3.2.4. Race Conditions ΓòÉΓòÉΓòÉ
  2781.  
  2782.  Note: The examples below assume the program in question was written in C++. 
  2783.  
  2784. A race condition can occur in a multithreaded program when you do not use 
  2785. semaphores. A race condition is a situation where two threads are 'racing' 
  2786. towards use of the same variable or some other data structure. For example, 
  2787. suppose Thread 1 contains the statement i=foo(i); and Thread 2 contains the 
  2788. statement a=b=i;. If you do not use a semaphore to block one thread, 
  2789. timeslicing could, in theory, result in either of the following sequences of 
  2790. events, among others: 
  2791.  
  2792. Sequence 1:
  2793. Thread 2: Load value of i into register
  2794. Thread 1: Load value of i into register
  2795. Thread 2: Store value of i in register to b
  2796. Thread 1: Call foo(i) using value of i in register
  2797. Thread 2: Store value of i in register to a
  2798. Thread 1: Store result of foo(i) to i
  2799. Sequence 2:
  2800. Thread 1: Load value of i into register
  2801. Thread 1: Call foo(i) using value of i in register
  2802. Thread 1: Store result of foo(i) to i
  2803. Thread 2: Load value of i into register
  2804. Thread 2: Store value of i in register to b
  2805. Thread 2: Store value of i in register to a
  2806.  
  2807. If i is an integer with a value of 3 before the sequences begin, and foo(x) is 
  2808. an integer function that returns 3*x+1, the variables at the end of sequence 1 
  2809. will be: a=1, b=1, i=10; the variables at the end of sequence 2 will be: a=10, 
  2810. b=10, i=10. 
  2811.  
  2812. A race condition can occur even when you do use semaphores. In such a case, it 
  2813. may be an indication of incorrect program logic. Suppose, for example, that two 
  2814. threads both assign a value to a variable, and that a third thread reads the 
  2815. value of that variable: 
  2816.  
  2817. Thread 1:         Thread 2:         Thread 3:
  2818. i=3;              i=4;              j=i;
  2819.  
  2820. Even if you request a semaphore before each assignment to i in threads 1 and 2, 
  2821. and release the semaphore after the assignment, there is no way of predicting 
  2822. whether j will be assigned the value 3 or 4 (or even the value of i before 
  2823. Threads 1 and 2 assigned to it). In this example, the race condition is simply 
  2824. poor programming logic. 
  2825.  
  2826. You may want to use a race condition to determine which of two or more threads 
  2827. completed a given task first. For example, if the statement in Thread 3 was: 
  2828.  
  2829. if (i==3) cout << 'Thread 1 completed first' << endl;
  2830. else cout << 'Thread 2 completed first' << endl;
  2831.  
  2832. and you had protected each assignment to i with a semaphore, the statement in 
  2833. Thread 3 would be reliable. 
  2834.  
  2835. Remember to use semaphores not only on pointers to objects, but on the objects 
  2836. themselves. If two pointers point to the same object and you only use 
  2837. semaphores to lock the pointers, two different threads using different pointers 
  2838. can access the same object simultaneously. 
  2839.  
  2840. You can use a Storage change breakpoint to find race conditions such as those 
  2841. shown above. By placing a Storage change breakpoint on the address of a 
  2842. variable, you can find all statements that change the variable and make note of 
  2843. the order in which different threads change it. 
  2844.  
  2845. Race conditions are another example of a timing problem that may only occur 
  2846. when you are debugging your program, because the debugger may affect the order 
  2847. in which threads are accessing shared data. 
  2848.  
  2849. Related Information 
  2850.  
  2851. Reference 
  2852. Debugging Threads 
  2853.  
  2854.  
  2855. ΓòÉΓòÉΓòÉ 3.2.5. Threads and Source Language Statements ΓòÉΓòÉΓòÉ
  2856.  
  2857. Note: The programming statements in this section assume the program in question 
  2858. was written in C++. 
  2859.  
  2860. Do not assume that a single source-language statement cannot be interrupted in 
  2861. mid-statement by another thread. The statement: i++; might involve three 
  2862. machine language instructions: loading a variable from storage into a register 
  2863. (if it is not already in a register); incrementing the register contents; and 
  2864. storing the result back to memory. If i is a double, or a pointer to struct, 
  2865. for example, the increment itself may be broken up into several machine 
  2866. language instructions. The thread may be interrupted at any instruction's 
  2867. completion point by another thread that also uses or changes the same variable, 
  2868. if you have not used a semaphore to lock during the increment. 
  2869.  
  2870. Even if the assembly listing for a simple statement is a single instruction, 
  2871. you should avoid relying on this fact to provide data integrity. An increment 
  2872. of an integer variable requires a load, increment, and store; the load may have 
  2873. occurred on an earlier use of the variable within the same thread, and the 
  2874. store may occur some time later after another use of the variable. Thus the 
  2875. increment statement may only have a single instruction associated with it in 
  2876. the assembly listing, but another thread's modifying of that variable between 
  2877. the load and increment, or the increment and store, affects the data integrity 
  2878. of the variable. 
  2879.  
  2880. Related Information 
  2881.  
  2882. Reference 
  2883. Debugging Threads 
  2884.  
  2885.  
  2886. ΓòÉΓòÉΓòÉ 3.2.6. Threads and C++ Class Members ΓòÉΓòÉΓòÉ
  2887.  
  2888. If you use the same C++ class in two different threads, you may have thread 
  2889. problems such as the following: 
  2890.  
  2891.      If the class contains static variables, you may have re-entrancy 
  2892.       problems. 
  2893.  
  2894.      If you are using the same instance from two separate threads, the 
  2895.       instance may be accessed by both threads at once, resulting in a loss of 
  2896.       data integrity. 
  2897.  
  2898.  In both cases you need re-entrancy protection. For example, use a semaphore 
  2899.  whenever you access the static variables or the common class instance. 
  2900.  
  2901.  Related Information 
  2902.  
  2903.  Reference 
  2904.  Debugging Threads 
  2905.  
  2906.  
  2907. ΓòÉΓòÉΓòÉ 3.2.7. Threads and Load Occurrence Breakpoints ΓòÉΓòÉΓòÉ
  2908.  
  2909. If you set a load occurrence breakpoint for a DLL that has not been loaded, you 
  2910. may find that, in a multithreaded program, the DLL never triggers the 
  2911. breakpoint, even though it must have been loaded by a call to a function within 
  2912. it. The usual cause of a load occurrence breakpoint not triggering is that you 
  2913. associated the breakpoint with a particular thread. 
  2914.  
  2915. To avoid this problem, choose 'every' to have the load occurrence breakpoint 
  2916. trigger regardless of which thread first calls a function within it. The 
  2917. debugger tells you which thread triggered the load. 
  2918.  
  2919. C++ only: For all breakpoint types, you can specify a breakpoint at the same 
  2920. location but with different conditions for different threads. For example, you 
  2921. can set a breakpoint that is triggered in thread 1 when the variable a has the 
  2922. value 3, and a breakpoint at the same location triggered in thread 2 when the 
  2923. variable a has the value 4. Conditions on thread-specific breakpoints can be 
  2924. useful for determining whether you have thread data integrity problems. 
  2925.  
  2926. Related Information 
  2927.  
  2928. Reference 
  2929. Debugging Threads 
  2930.  
  2931.  
  2932. ΓòÉΓòÉΓòÉ 3.2.8. Must Complete Sections ΓòÉΓòÉΓòÉ
  2933.  
  2934. Note: This section applies only to C++ programs, it does not apply to COBOL or 
  2935. PL/I programs. 
  2936.  
  2937. In a program with static initialization and destruction, if you exit main() (or 
  2938. call exit() from any other thread) before all threads have finished running, 
  2939. those threads are killed, and static objects may not be properly released. 
  2940. After all threads are destroyed, the static objects are destroyed; if the 
  2941. destructors for these objects require a semaphore (for example, if the objects 
  2942. are constructed with new), then the destructors hang while waiting for the 
  2943. semaphore to be freed (it never is, because it has a status of 'Owner died') 
  2944. The application itself then stays up (and does nothing) indefinitely. In OS/2 
  2945. you can use DosEnterMustComplete() at the start of a thread and 
  2946. DosExitMustComplete() at the end of it to prevent DosKill from killing your 
  2947. thread before you have destructed objects. 
  2948.  
  2949. Related Information 
  2950.  
  2951. Reference 
  2952. Debugging Threads 
  2953.  
  2954.  
  2955. ΓòÉΓòÉΓòÉ 3.2.9. OS/2 Thread-Related APIs ΓòÉΓòÉΓòÉ
  2956.  
  2957. Avoid using the following OS/2 API's in multithreaded programs: 
  2958.  
  2959.      DosSuspendThread: Do not suspend a thread that owns a semaphore, or you 
  2960.       will prevent any thread needing that semaphore from continuing. 
  2961.  
  2962.      DosKillThread: Do not kill a thread that owns a semaphore, or the 
  2963.       semaphore will go into an error state 'Owner died'. 
  2964.  
  2965.  In both cases you should notify the thread you want to kill or suspend, and 
  2966.  have that thread do the killing or suspending itself after it has done any 
  2967.  necessary cleanup. 
  2968.  
  2969.  When you are using semaphores, always check the return code for 
  2970.  DosGetSemaphore to make sure the owner hasn't died, or you may lock a thread 
  2971.  waiting for a semaphore that will never be freed. 
  2972.  
  2973.  Related Information 
  2974.  
  2975.  Reference 
  2976.  Debugging Threads 
  2977.  
  2978.  
  2979. ΓòÉΓòÉΓòÉ 3.3. Child Process Debugging ΓòÉΓòÉΓòÉ
  2980.  
  2981. You can only debug child processes of a program running on OS/2. 
  2982.  
  2983. See the following subtopics: 
  2984.  
  2985.      Child Process Debugging on OS/2 
  2986.  
  2987.  
  2988. ΓòÉΓòÉΓòÉ 3.3.1. Child Process Debugging on OS/2 ΓòÉΓòÉΓòÉ
  2989.  
  2990. In OS/2 programs that create child processes, you can debug either a child 
  2991. process or the parent process, but not both. If you want to debug a child 
  2992. process, you must specify this in the Startup dialog, which is displayed when 
  2993. you invoke the debugger without parameters (simply type idbug at the command 
  2994. shell) or when you choose File->Startup from the Session Control window or a 
  2995. Source window. 
  2996.  
  2997.  
  2998. ΓòÉΓòÉΓòÉ 3.4. Debugger Options ΓòÉΓòÉΓòÉ
  2999.  
  3000. The debugger supports the following options. These options should be specified 
  3001. after the idbug command, but before the name of the program you want to debug. 
  3002. For example, to debug the program myprog.exe using the /p- option, use the 
  3003. following command line: 
  3004.  
  3005. idbug /p- myprog.exe
  3006.  
  3007.  Option    Purpose 
  3008.  
  3009.  /a process_id Attach to the already running process process_id. Note that you 
  3010.            cannot attach to an already running process on OS/2. 
  3011.  
  3012.  /c child_process_id Start debugging the specified child process of the program 
  3013.            being debugged. This option only applies to debuggee programs 
  3014.            running on OS/2, and is ignored on other platforms. 
  3015.  
  3016.  /h or /?  Display help for the idbug command. 
  3017.  
  3018.  /i        Start the debugger in the system initialization code that precedes 
  3019.            the call to the main entry point for the program. (C++ only): This 
  3020.            can be useful if you need to debug the constructors for static class 
  3021.            objects. 
  3022.  
  3023.  /p+       Use program profile information (this is the default). If the 
  3024.            debugger has saved a profile containing information on window, 
  3025.            breakpoint, and monitor settings from a previous debug session for 
  3026.            this program, the profile is used to restore those settings. 
  3027.  
  3028.  /p-       Do not use program profile information. The debugger ignores any 
  3029.            program profile information, and opens the debugger in a default 
  3030.            appearance with no breakpoints set and only the Session Control 
  3031.            window and one Source window. 
  3032.  
  3033.  Related Information 
  3034.  
  3035.  Procedures 
  3036.  Attach to a Process 
  3037.  
  3038.  
  3039. ΓòÉΓòÉΓòÉ 3.4.1. Compiler Options and Optimization ΓòÉΓòÉΓòÉ
  3040.  
  3041. See the following topics for more information: 
  3042.  
  3043.      C++ Compiler Options 
  3044.  
  3045.      COBOL Compiler Options on Intel Platforms 
  3046.  
  3047.      Debugging optimized code 
  3048.  
  3049.  
  3050. ΓòÉΓòÉΓòÉ 3.5. Environment Variables ΓòÉΓòÉΓòÉ
  3051.  
  3052. The debugger uses the following environment variables. If you want to place 
  3053. multiple entries in any of the variables that contain path names, separate the 
  3054. entries with a semicolon. 
  3055.  
  3056.      DEBUG_CASESENSITIVE 
  3057.  
  3058.      DEBUG_LANG 
  3059.  
  3060.      DEBUG_LOCAL_PATH 
  3061.  
  3062.      DEBUG_NUMBEROFELEMENTS 
  3063.  
  3064.      DEBUG_OVERRIDE 
  3065.  
  3066.      DEBUG_PATH 
  3067.  
  3068.      DEBUG_REMOTE_SEARCH_PATH 
  3069.  
  3070.      DEBUG_TAB 
  3071.  
  3072.      DEBUG_TABGRID 
  3073.  
  3074.      DPATH 
  3075.  
  3076.      INCLUDE 
  3077.  
  3078.      LIBPATH (OS/2 only) 
  3079.  
  3080.      HELP 
  3081.  
  3082.      PATH 
  3083.  
  3084.      SYSLIB 
  3085.  
  3086.     
  3087.  
  3088.  Related Information 
  3089.  
  3090.  Procedures 
  3091.  Set Environment Variables for the Debugger 
  3092.  
  3093.  
  3094. ΓòÉΓòÉΓòÉ 3.5.1. DEBUG_CASESENSITIVE Environment Variable ΓòÉΓòÉΓòÉ
  3095.  
  3096. The DEBUG_CASESENSITIVE environment variable, if set to a non-null value (for 
  3097. example, 'yes', 1, 'true', etc.) tells the debugger to compare part names and 
  3098. module names on a case sensitive basis. By default the debugger converts all 
  3099. names to uppercase for comparison purposes. Note that this does not affect 
  3100. filesystem accesses, which are case-insensitive regardless of the setting of 
  3101. DEBUG_CASESENSITIVE. 
  3102.  
  3103. Related Information 
  3104.  
  3105. Reference 
  3106. Environment Variables 
  3107.  
  3108.  
  3109. ΓòÉΓòÉΓòÉ 3.5.2. DEBUG_LANG Environment Variable ΓòÉΓòÉΓòÉ
  3110.  
  3111. The DEBUG_LANG environment variable sets the dominant language for a debugging 
  3112. session. The setting of DEBUG_LANG determines the display style for windows, 
  3113. dialogs, and menus throughout the debugging session, regardless of what the 
  3114. current language is. For example, if DEBUG_LANG=COBOL and you step into a C++ 
  3115. function, the debugger's appearance continues to reflect a dominant language of 
  3116. COBOL. If DEBUG_LANG is not set, the default language is C++. Available choices 
  3117. are: 
  3118.  
  3119.  CPP       The dominant language is C++. 
  3120.  
  3121.  COBOL     The dominant language is COBOL. The VisualAge for COBOL product sets 
  3122.            DEBUG_LANG to COBOL at installation. 
  3123.  
  3124.  PL1 or PLI The dominant language is PL/I. The VisualAge for PL/I product sets 
  3125.            DEBUG_LANG to PL1 at installation. 
  3126.  
  3127.  The following aspects of debugger behavior are affected by the setting of 
  3128.  DEBUG_LANG: 
  3129.  
  3130.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3131.   ΓöéValue of          ΓöéCPP               ΓöéPL1               ΓöéCOBOL             Γöé
  3132.   ΓöéDEBUG_LANG        Γöé                  Γöé                  Γöé                  Γöé
  3133.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3134.   Γöé'Entry' vs.       ΓöéThe term          ΓöéThe term 'entry'  ΓöéThe term 'entry'  Γöé
  3135.   Γöé'Function' used inΓöé'function' is usedΓöéis used.          Γöéis used.          Γöé
  3136.   Γöédialogs and       Γöé                  Γöé                  Γöé                  Γöé
  3137.   Γöéwindows to        Γöé                  Γöé                  Γöé                  Γöé
  3138.   Γöéindicate a C++    Γöé                  Γöé                  Γöé                  Γöé
  3139.   Γöéfunction or a     Γöé                  Γöé                  Γöé                  Γöé
  3140.   ΓöéCOBOL or PL/I     Γöé                  Γöé                  Γöé                  Γöé
  3141.   Γöéentry point       Γöé                  Γöé                  Γöé                  Γöé
  3142.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3143.   ΓöéHeap checking     ΓöéYou can perform   ΓöéHeap checking is  ΓöéHeap checking is  Γöé
  3144.   Γöé                  Γöéheap checks using Γöénot available.    Γöénot available.    Γöé
  3145.   Γöé                  ΓöéRun->Check heap   Γöé                  Γöé                  Γöé
  3146.   Γöé                  Γöéwhen stopping     Γöé                  Γöé                  Γöé
  3147.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3148.   ΓöéStartup           ΓöéStartup runs to   ΓöéStartup runs untilΓöéStartup runs untilΓöé
  3149.   Γöé                  Γöéthe first         Γöéthe first         Γöéthe first         Γöé
  3150.   Γöé                  Γöéstatement in main Γöédebuggable        Γöédebuggable        Γöé
  3151.   Γöé                  Γöéafter program     Γöéstatement in the  Γöéstatement in the  Γöé
  3152.   Γöé                  Γöéinitialization,   Γöéapplication.      Γöéapplication.      Γöé
  3153.   Γöé                  Γöéunless you chose  Γöé                  Γöé                  Γöé
  3154.   Γöé                  Γöéto debug program  Γöé                  Γöé                  Γöé
  3155.   Γöé                  Γöéinitialization.   Γöé                  Γöé                  Γöé
  3156.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3157.  
  3158.      Debugger settings, such as default fonts, changed when one dominant 
  3159.       language is in effect are not applied to the debugger when the other 
  3160.       dominant language is in effect 
  3161.  
  3162.      Step commands in a source view may behave differently in certain 
  3163.       situations. 
  3164.  
  3165.  Related Information 
  3166.  
  3167.  Reference 
  3168.  Environment Variables 
  3169.  
  3170.  
  3171. ΓòÉΓòÉΓòÉ 3.5.3. DEBUG_NUMBEROFELEMENTS Environment Variable ΓòÉΓòÉΓòÉ
  3172.  
  3173. The DEBUG_NUMBEROFELEMENTS environment variable can be set to an integer value, 
  3174. to tell the debugger the maximum number of elements to display for an array, 
  3175. structure, or object in a Program, Private, Local Variables, or Popup monitor. 
  3176.  
  3177. Related Information 
  3178.  
  3179. Reference 
  3180. Environment Variables 
  3181.  
  3182.  
  3183. ΓòÉΓòÉΓòÉ 3.5.4. DEBUG_PATH Environment Variable ΓòÉΓòÉΓòÉ
  3184.  
  3185. The DEBUG_PATH environment variable is used to locate debug source files that 
  3186. are not stored in the same path as the executable being debugged. For example, 
  3187. if your debug binary is stored in F:\BUILDS\SANDDUNE\TEST but your source code 
  3188. is stored in F:\SOURCE and F:\SOURCE\INCLUDE, you should set your DEBUG_PATH 
  3189. variable as follows: 
  3190.  
  3191. set DEBUG_PATH=F:\SOURCE;F:\SOURCE\INCLUDE
  3192.  
  3193. You can set the DEBUG_PATH environment variable on both client and server 
  3194. systems. 
  3195.  
  3196. The search order used to search for source files depends on the settings of 
  3197. other environment variables as well. 
  3198.  
  3199.  
  3200. ΓòÉΓòÉΓòÉ 3.5.5. DEBUG_LOCAL_PATH Environment Variable ΓòÉΓòÉΓòÉ
  3201.  
  3202. The DEBUG_LOCAL_PATH environment variable is used to locate executables and 
  3203. DLLs on the debuggee machine. This environment variable is supported on Windows 
  3204. 95 and Windows NT only. For OS/2, LIBPATH and PATH provide equivalent 
  3205. functionality. 
  3206.  
  3207. Related Information 
  3208.  
  3209. Reference 
  3210. Environment Variables 
  3211. Search Order 
  3212.  
  3213.  
  3214. ΓòÉΓòÉΓòÉ 3.5.6. DEBUG_OVERRIDE Environment Variable ΓòÉΓòÉΓòÉ
  3215.  
  3216. The DEBUG_OVERRIDE environment variable takes precedence over DEBUG_PATH. If 
  3217. you set your DEBUG_PATH variable in your system settings, but you want to 
  3218. temporarily add another path that takes precedence over DEBUG_PATH, set 
  3219. DEBUG_OVERRIDE. To restore DEBUG_PATH as the path used to locate executables 
  3220. and DLLs, clear DEBUG_OVERRIDE, for example by using: 
  3221.  
  3222. set DEBUG_OVERRIDE=
  3223.  
  3224. Related Information 
  3225.  
  3226. Reference 
  3227. DEBUG_PATH Environment Variable 
  3228. Search Order 
  3229. Environment Variables 
  3230.  
  3231.  
  3232. ΓòÉΓòÉΓòÉ 3.5.7. DEBUG_REMOTE_SEARCH_PATH Environment Variable ΓòÉΓòÉΓòÉ
  3233.  
  3234. The DEBUG_REMOTE_SEARCH_PATH environment variable is used to search specified 
  3235. paths on the remote host for a requested source file. 
  3236.  
  3237. Related Information 
  3238.  
  3239. Reference 
  3240. Environment Variables 
  3241. Search Order 
  3242.  
  3243.  
  3244. ΓòÉΓòÉΓòÉ 3.5.8. DEBUG_TAB Environment Variable ΓòÉΓòÉΓòÉ
  3245.  
  3246. The DEBUG_TAB environment variable affects how the debugger expands tab 
  3247. characters in a source or mixed view within a Source window, when DEBUG_TABGRID 
  3248. is set to 0 (or is not set). The value for this variable is an integer, 
  3249. indicating the number of spaces to convert a tab character into.Unlike 
  3250. DEBUG_TABGRID, DEBUG_TAB does not cause the debugger to place tabbed 
  3251. information in specific columns; it simply results in each tab in the displayed 
  3252. files being converted to the indicated number of spaces. 
  3253.  
  3254. Related Information 
  3255.  
  3256. Reference 
  3257. DEBUG_TABGRID Environment Variable 
  3258.  
  3259.  
  3260. ΓòÉΓòÉΓòÉ 3.5.9. DEBUG_TABGRID Environment Variable ΓòÉΓòÉΓòÉ
  3261.  
  3262. The DEBUG_TABGRID environment variable affects how the debugger uses tab 
  3263. characters to align tabs to columns in a source or mixed view within a Source 
  3264. window. The value of this variable is an integer indicating the starting 
  3265. position and frequency of the tab. For example, if you set DEBUG_TABGRID=6, the 
  3266. debugger sets tab stops at 6, 12, 18, 24, and so on. If DEBUG_TABGRID is set to 
  3267. a nonzero value, the setting of DEBUG_TAB has no effect. 
  3268.  
  3269. Related Information 
  3270.  
  3271. Reference 
  3272. Environment Variables 
  3273. DEBUG_TAB Environment Variable 
  3274.  
  3275.  
  3276. ΓòÉΓòÉΓòÉ 3.5.10. INCLUDE Environment Variable ΓòÉΓòÉΓòÉ
  3277.  
  3278. The INCLUDE environment variable is used by both the compiler and the debugger. 
  3279. It specifies the path the compiler and debugger use to locate C++ include files 
  3280. (files included in your source code with the #include directive.) 
  3281.  
  3282. Related Information 
  3283.  
  3284. Reference 
  3285. Environment Variables 
  3286.  
  3287.  
  3288. ΓòÉΓòÉΓòÉ 3.5.11. LIBPATH Environment Variable (OS/2 Only) ΓòÉΓòÉΓòÉ
  3289.  
  3290. The LIBPATH environment variable tells the debugger where to look for debugger 
  3291. DLLs on the workstation. The LIBPATH environment variable must be set from 
  3292. within CONFIG.SYS; you cannot set it using the SET command. 
  3293.  
  3294. Related Information 
  3295.  
  3296. Reference 
  3297. Environment Variables 
  3298.  
  3299.  
  3300. ΓòÉΓòÉΓòÉ 3.5.12. SYSLIB Environment Variable ΓòÉΓòÉΓòÉ
  3301.  
  3302. The SYSLIB environment variable is used to locate COBOL copyfiles and PL/I 
  3303. include files. It has the same effect, for COBOL or PL/I programs, as the 
  3304. INCLUDE environment variable has for C++ programs. 
  3305.  
  3306. Related Information 
  3307.  
  3308. Reference 
  3309. Environment Variables 
  3310.  
  3311.  
  3312. ΓòÉΓòÉΓòÉ 3.5.13. Other Environment Variables ΓòÉΓòÉΓòÉ
  3313.  
  3314. The debugger also uses the following standard environment variables on the 
  3315. Windows or OS/2 workstation. These variables all contain one or more directory 
  3316. names separated by semicolons: 
  3317.  
  3318. PATH 
  3319.  
  3320. The PATH environment variable is used to locate the debugger executable  and 
  3321. the executable programs to be debugged, as well as any other executables being 
  3322. run on the workstation. On Windows platforms the PATH environment variable is 
  3323. also used to locate DLLs. 
  3324.  
  3325. DPATH 
  3326.  
  3327. The DPATH environment variable is used to locate message files, which the 
  3328. debugger needs to display messages and the text of menus and dialogs. 
  3329.  
  3330. HELP 
  3331.  
  3332. The HELP environment variable is used to locate the online help files for the 
  3333. debugger. 
  3334.  
  3335. Related Information 
  3336.  
  3337. Reference 
  3338. Environment Variables 
  3339.  
  3340.  
  3341. ΓòÉΓòÉΓòÉ 3.5.14. Search Order ΓòÉΓòÉΓòÉ
  3342.  
  3343. The debugger uses a different search order for finding source files, depending 
  3344. on whether you are debugging locally or remotely. It searches through each 
  3345. location in the lists below until it finds a file that matches the requested 
  3346. name. 
  3347.  
  3348. Local debugging: The debugger searches for source files in: 
  3349.  
  3350.    1. The executable directory 
  3351.  
  3352.    2. The current directory 
  3353.  
  3354.    3. The record of directories 
  3355.  
  3356.    4. Paths in the DEBUG_PATH environment variable 
  3357.  
  3358.  Remote debugging: The debugger searches for source files in the above 
  3359.  directories on the debuggee machine, then in: 
  3360.  
  3361.    1. The current directory of the debugger machine 
  3362.  
  3363.    2. The record of directories on the debugger machine 
  3364.  
  3365.    3. Paths in the DEBUG_PATH environment variable on the debugger machine 
  3366.  
  3367.  If the source file cannot be located in any of the above directories, a dialog 
  3368.  box opens requesting the path name for the source file. The path name you 
  3369.  enter is searched for, first on the debuggee machine, then on the debugger 
  3370.  machine. This path name is also added to the record of directories to be used 
  3371.  in future searches. 
  3372.  
  3373.  Related Information 
  3374.  
  3375.  Concepts 
  3376.  Record of Directories 
  3377.  
  3378.  
  3379. ΓòÉΓòÉΓòÉ 3.6. Expressions Supported ΓòÉΓòÉΓòÉ
  3380.  
  3381. The expressions you can enter in an expression entry field (for example, in a 
  3382. Monitor Expression dialog or a Set breakpoint dialog) are different for each 
  3383. language the debugger supports. See the following for more information: 
  3384.  
  3385.      Supported C++ expressions 
  3386.  
  3387.      Supported COBOL expressions 
  3388.  
  3389.      Supported PL/I expressions 
  3390.  
  3391.  Related Information 
  3392.  
  3393.  Concepts 
  3394.  Expressions 
  3395.  
  3396.  
  3397. ΓòÉΓòÉΓòÉ 3.6.1. COBOL Expressions Supported ΓòÉΓòÉΓòÉ
  3398.  
  3399. You can enter the following types of COBOL expressions in an expression entry 
  3400. field: 
  3401.  
  3402. Variable: A variable used in your program. The following can be specified with 
  3403. COBOL variables: 
  3404.  
  3405.      Group qualification (for example, A OF B OF C) 
  3406.  
  3407.      Table subscripting (for example, A(1, 2, 3)) Note that only constants can 
  3408.       be specified for array indices (no variables or operators). 
  3409.  
  3410.      Reference modification (for example, A(1:2)) Note that reference 
  3411.       modification is not allowed for group names. Also, only constants can be 
  3412.       specified for the reference modification begin and length values (no 
  3413.       variables or operators). 
  3414.  
  3415.  Notes 
  3416.  
  3417.    1. COBOL condition names cannot be specified. 
  3418.  
  3419.    2. Operators (for example, A + B) are not allowed. 
  3420.  
  3421.    3. The value displayed for COBOL index names and data items is the actual 
  3422.       value in storage. For example, if INM is an index name for a 
  3423.       one-dimensional table whose elements are two bytes wide and INM is set to 
  3424.       reference the third element in the table, the value shown by the debugger 
  3425.       (i.e., the value in storage) would be 4. 
  3426.  
  3427.  Constant: The constant can be one of the following types: 
  3428.  
  3429.      Fixed or floating-point constant 
  3430.  
  3431.      A string constant, enclosed in double or single quotation marks (for 
  3432.       example, 'string' or 'string') 
  3433.  
  3434.      Hexadecimal constant (for example, X'0041014D'). Note that the number of 
  3435.       bytes represented by the hexadecimal constant must be equal to the number 
  3436.       of bytes of the corresponding variable in assignment or comparison. 
  3437.  
  3438.  Note: In a COBOL constant, the period is always used as the decimal point 
  3439.  (i.e., the DECIMAL-POINT IS COMMA clause is ignored by the debugger). COBOL 
  3440.  figurative constants are not supported by the debugger. 
  3441.  
  3442.  Register: Any of the processor registers that can be displayed in the 
  3443.  Registers Monitor. In the case of conflicting names, program variable names 
  3444.  take precedence over register names. 
  3445.  
  3446.  Expressions Supported in Conditional Breakpoints 
  3447.  
  3448.  Expressions supported by the expression conditions in conditional breakpoints 
  3449.  are further limited in the following ways: 
  3450.  
  3451.      Only the relation condition is supported, with the following operators: 
  3452.       >, <, =, >=, <=, NOT >, NOT <, NOT = 
  3453.  
  3454.      The left operand must be a variable and the right operand must be a 
  3455.       constant. For example, var1 > 5 is valid, while 5 < var1 and var1 > var2 
  3456.       are not. 
  3457.  
  3458.      The hexadecimal constant is allowed only with POINTER variables. 
  3459.  
  3460.      Nonnumeric and external floating point variables must be compared with a 
  3461.       nonnumeric literal. 
  3462.  
  3463.      Zoned decimal variables must be compared with a numeric constant. 
  3464.  
  3465.      Complex conditions and group comparisons are not allowed. 
  3466.  
  3467.      Comparison is locale-based, independent of any COLLSEQ compile option or 
  3468.       collating sequence specification within the program. 
  3469.  
  3470.  
  3471. ΓòÉΓòÉΓòÉ 3.6.2. C++ Expressions Supported ΓòÉΓòÉΓòÉ
  3472.  
  3473. The expression language that is supported by the debugger for C++ programs is a 
  3474. subset of the C/C++ language. You can only monitor expressions with: 
  3475.  
  3476.      A supported operand type 
  3477.  
  3478.      A supported operator 
  3479.  
  3480.      A supported typecasting operation 
  3481.  
  3482.  
  3483. ΓòÉΓòÉΓòÉ 3.6.2.1. C++ Supported Data Types ΓòÉΓòÉΓòÉ
  3484.  
  3485. You can monitor an expression that uses the following typecasting operations 
  3486. only: 
  3487.  
  3488.      8-bit signed byte 
  3489.  
  3490.      8-bit unsigned byte 
  3491.  
  3492.      16-bit signed integer 
  3493.  
  3494.      16-bit unsigned integer 
  3495.  
  3496.      32-bit signed integer 
  3497.  
  3498.      32-bit unsigned integer 
  3499.  
  3500.      Single-precision floating-point floating-point 
  3501.  
  3502.      Double-precision floating-point floating-point 
  3503.  
  3504.      Pointers 
  3505.  
  3506.      User-defined types 
  3507.  
  3508.  These data types include int, short, char and so on. 
  3509.  
  3510.  
  3511. ΓòÉΓòÉΓòÉ 3.6.2.2. C++ Supported Expression Operands ΓòÉΓòÉΓòÉ
  3512.  
  3513. You can monitor an expression that uses the following types of operands only: 
  3514.  
  3515.  Operand   Definition 
  3516.  
  3517.  Variable  A variable used in your program. 
  3518.  
  3519.  Constant  The constant can be one of the following types: 
  3520.  
  3521.                Fixed or floating-point constant within the ranges supported by 
  3522.                 the system the debuggee program is running on. 
  3523.  
  3524.                A string constant, enclosed in double quotation marks (for 
  3525.                 example, 'mystring') 
  3526.  
  3527.                A character constant, enclosed in single quote marks (for 
  3528.                 example, 'x') 
  3529.  
  3530.  Register  Any of the processor registers that can be displayed in the 
  3531.            Registers Monitor. In the case of conflicting names, program 
  3532.            variable names take precedence over register names. For conversions 
  3533.            that are done automatically when the registers display in mixed-mode 
  3534.            expressions, general-purpose registers are treated as unsigned 
  3535.            arithmetic items with a length appropriate to the register.For 
  3536.            example, on Intel platforms EAX is 32-bits, AX is 16-bits, and AL is 
  3537.            8-bits. 
  3538.  
  3539.  If you monitor an enumerated variable, a comment appears to the right of the 
  3540.  value. If the value of the variable matches one of the enumerated types, the 
  3541.  comment contains the name of the first enumerated type that matches the value 
  3542.  of the variable. If the length of the enumerated name does not fit in the 
  3543.  monitor, the contents appear as an empty entry field. 
  3544.  
  3545.  The comment (empty or not) lets you distinguish between a valid enumerated 
  3546.  value and an invalid value. An invalid value does not have a comment to its 
  3547.  right. 
  3548.  
  3549.  You cannot update an enumerated variable by entering an enumerated type. You 
  3550.  must enter a value or expression. If the value is a valid enumerated value, 
  3551.  the comment to the right of it is updated. 
  3552.  
  3553.  Bit fields are supported for C/C++ compiled code only. You can display and 
  3554.  update bit fields, but you cannot use them in expressions. You cannot look at 
  3555.  variables that have been defined using the #define preprocessor directive. 
  3556.  
  3557.  
  3558. ΓòÉΓòÉΓòÉ 3.6.2.3. C++ Supported Expression Operators ΓòÉΓòÉΓòÉ
  3559.  
  3560. You can monitor an expression that uses the following operators only: 
  3561.  
  3562.  Operator  Coded as 
  3563.  
  3564.  Global scope resolution ::a 
  3565.  
  3566.  Class or namespace scope resolution a::b 
  3567.  
  3568.  Subscripting a[b] 
  3569.  
  3570.  Member selection a.b or a->b 
  3571.  
  3572.  Size      sizeof a or sizeof (type) 
  3573.  
  3574.  Logical not !a 
  3575.  
  3576.  Ones complement ~a 
  3577.  
  3578.  Unary minus -a 
  3579.  
  3580.  Unary plus +a 
  3581.  
  3582.  Dereference *a 
  3583.  
  3584.  Type cast (type) a 
  3585.  
  3586.  Multiply  a * b 
  3587.  
  3588.  Divide    a / b 
  3589.  
  3590.  Modulo    a % b 
  3591.  
  3592.  Add       a + b 
  3593.  
  3594.  Subtract  a - b 
  3595.  
  3596.  Left shift a << b 
  3597.  
  3598.  Right shift a >> b 
  3599.  
  3600.  Less than a < b 
  3601.  
  3602.  Greater than a > b 
  3603.  
  3604.  Less than or equal to a <= b 
  3605.  
  3606.  Greater than or equal to a >= b 
  3607.  
  3608.  Equal     a == b 
  3609.  
  3610.  Not equal a != b 
  3611.  
  3612.  Bitwise AND a & b 
  3613.  
  3614.  Bitwise OR a | b 
  3615.  
  3616.  Bitwise exclusive OR a ^ b 
  3617.  
  3618.  Logical AND a && b 
  3619.  
  3620.  Logical OR a || b 
  3621.  
  3622.  
  3623. ΓòÉΓòÉΓòÉ 3.6.3. Supported PL/I Expressions ΓòÉΓòÉΓòÉ
  3624.  
  3625. The expression language that is supported by the debugger for PL/I programs is 
  3626. a subset of the PL/I language. You can monitor only expressions with: 
  3627.  
  3628.      A supported operand type 
  3629.  
  3630.      A supported operator 
  3631.  
  3632.  
  3633. ΓòÉΓòÉΓòÉ 3.6.3.1. Supported PL/I Operand Types ΓòÉΓòÉΓòÉ
  3634.  
  3635. You can monitor an expression that uses the following types of operands only: 
  3636.  
  3637.  variable  A variable used in your program 
  3638.  
  3639.  constant  The constant can be one of the following types: 
  3640.  
  3641.      Fixed or floating point constant within the ranges supported by the 
  3642.       debuggee processor 
  3643.  
  3644.      A character constant, enclosed in single or double quotation marks 
  3645.  
  3646.      A X (hex) character constant, enclosed in single or double quotation 
  3647.       marks and followed immediately by the letter X 
  3648.  
  3649.      A bit constant, enclosed in single or double quotation marks and followed 
  3650.       immediately by the letter B 
  3651.  
  3652.      A B4 (hex) bit constant, enclosed in single or double quotation marks and 
  3653.       followed immediately by B4 
  3654.  
  3655.      A graphic constant, enclosed in single or double quotation marks and 
  3656.       followed immediately by the letter G 
  3657.  
  3658.      A GX (hex) graphic constant, enclosed in single or double quotation marks 
  3659.       and followed immediately by GX 
  3660.  
  3661.  Builtin functions The debugger supports many PL/I builtin functions, as shown 
  3662.            below. Functions are listed by category. 
  3663.  
  3664.  Mathematical 
  3665.  
  3666.   Acos            Gamma
  3667.   Asin            Log
  3668.   Atan            Loggamma
  3669.   Atand           Log10
  3670.   Atanh           Log2
  3671.   Cos             Sin
  3672.   Cosd            Sind
  3673.   Cosh            Sinh
  3674.   Cotan           Sqrt
  3675.   Cotand          Tan
  3676.   Erf             Tand
  3677.   Erfc            Tanh
  3678.   Exp
  3679.  
  3680.  Integer Manipulation 
  3681.  
  3682.   Iand            Isll
  3683.   Ieor            Isrl
  3684.   Inot            Lower2
  3685.   Ior             Raise2
  3686.  
  3687.  String Handling 
  3688.  
  3689.   Index           Searchr
  3690.   Length(1)       Tally
  3691.   Maxlength(1)    Verify
  3692.   Search          Verifyr
  3693.  
  3694.  Array handling 
  3695.  
  3696.   Dimension  Lbound
  3697.   Hbound
  3698.  
  3699.  Miscellaneous 
  3700.  
  3701.   Addr            Offsetsubtract
  3702.   Binaryvalue     Offsetvalue
  3703.   Hex             Pointer
  3704.   Heximage        Pointeradd
  3705.   Null            Pointerdiff
  3706.   Offset          Pointersubtract
  3707.   Offsetadd       Pointervalue
  3708.   Offsetdiff      Sysnull
  3709.  
  3710.  Note 
  3711.  
  3712.  (1) Only for strings 
  3713.  
  3714.  Only variables with supported storage classes can be accessed by the debugger. 
  3715.  The following list indicates the storage classes that are supported: 
  3716.  
  3717.   Automatic      Defined
  3718.   Based           Static
  3719.   Controlled      Parameter
  3720.  
  3721.  If based variables are used with REFER, only the variables up to the first 
  3722.  REFER are known. 
  3723.  
  3724.  A defined variable is supported if it is a character variable with constant 
  3725.  position that is defined on a base variable w/o subscripts. 
  3726.  
  3727.  The following are not supported by the debugger: 
  3728.  
  3729.      Local variables option 
  3730.  
  3731.      Variables declared within a package, but outside any contained level-1 
  3732.       procedure 
  3733.  
  3734.      Conditional entry breakpoints 
  3735.  
  3736.      Program control data (except pointer and offset) 
  3737.  
  3738.      String repetition factors 
  3739.  
  3740.      User function references 
  3741.  
  3742.      Type functions 
  3743.  
  3744.  Related Information 
  3745.  
  3746.  Reference 
  3747.  Supported PL/I Operators 
  3748.  
  3749.  
  3750. ΓòÉΓòÉΓòÉ 3.6.3.2. Supported PL/I Operators ΓòÉΓòÉΓòÉ
  3751.  
  3752. Arithmetic Operators 
  3753.  
  3754. +  -  *  /
  3755.  
  3756. The plus sign and the minus sign can appear as prefix operators or as infix 
  3757. operators. All other arithmetic operators can appear only as infix operators. 
  3758.  
  3759. Bit Operators 
  3760.  
  3761. ╨║  &  |
  3762.  
  3763. The not/exclusive-or symbol (╨║) can be used as a prefix or infix operator. The 
  3764. and (&) symbol and the or (|) symbol can be used as infix operators only. 
  3765.  
  3766. Comparison Operators 
  3767.  
  3768. <  ╨║<  <=  =  ╨║=  ╨║>  >=  >
  3769.  
  3770. The result of a comparison operation is always a bit string of length 1. The 
  3771. value is '1'B if the relationship is true, or '0'B if the relationship is 
  3772. false. 
  3773.  
  3774. Concatenation Operators 
  3775.  
  3776. ||
  3777.  
  3778. Different types of operations can be combined within the same operational 
  3779. expression. Any combination can be used. 
  3780.  
  3781. See the PL/I Language Reference Manual for a complete description of expression 
  3782. operators. 
  3783.  
  3784. Related Information 
  3785.  
  3786. Reference 
  3787. Supported PL/I Operand Types 
  3788.  
  3789.  
  3790. ΓòÉΓòÉΓòÉ 3.6.4. Values that Are Valid for the Current Representation ΓòÉΓòÉΓòÉ
  3791.  
  3792. When you are entering a value in an entry field such as a register in the 
  3793. Registers monitor, a column of storage in the Storage monitor, or the contents 
  3794. of a variable in another monitor, the debugger checks that the value you enter 
  3795. is valid for the current representation of that column or entry field. 
  3796.  
  3797. A value is valid for the current representation if it contains only the 
  3798. characters used for that representation, and does not exceed the length of the 
  3799. variable or register involved. For example, if you want to change the contents 
  3800. of storage, and the Content style setting for a particular Storage monitor is 
  3801. 32-bit integer, the value you enter must be a valid 32-bit integer, not a 
  3802. floating-point value or other value.Or, if you want to change the contents of a 
  3803. character string and the current representation is as a text string, you must 
  3804. enter a new string in double quotes, and the length of the string must not 
  3805. exceed the declared array size. 
  3806.  
  3807. Related Information 
  3808.  
  3809. Reference 
  3810. Expressions Supported 
  3811.  
  3812. Procedures 
  3813. Change the Contents of Storage, Variables, and Registers 
  3814.  
  3815.  
  3816. ΓòÉΓòÉΓòÉ 3.6.5. Valid Addresses and Expressions ΓòÉΓòÉΓòÉ
  3817.  
  3818. Here are some examples of addresses or expressions you can enter in the Address 
  3819. or expression field of the Set Storage Change dialog: 
  3820.  
  3821.  MyVariable (C++) : The address pointed to by MyVariable, if such a variable 
  3822.            exists in your program, and if its value is a valid storage address 
  3823.            (for example, if the variable is a pointer to another variable or to 
  3824.            an offset within an array). 
  3825.  
  3826.  MyVariable (COBOL or PL/I) If MyVariable is of type POINTER, the contents of 
  3827.            the variable are used as the address; for other variables, the 
  3828.            address of the variable is used. 
  3829.  
  3830.  &MyVariable (C++) The storage of the variable MyVariable. 
  3831.  
  3832.  A1FCC     The hex address A1FCC, unless you have a variable declared as A1FCC, 
  3833.            in which case it is treated the same as MyVariable above. 
  3834.  
  3835.  0xA1FCC   The hex address A1FCC. 
  3836.  
  3837.  RegisterName The name of a processor register on the system the debuggee 
  3838.            program is running on. If the expression evaluates to a processor 
  3839.            register, that register's contents are used in place of the register 
  3840.            name. 
  3841.  
  3842.  X'000A1FCC' (COBOL) The hex address A1FCC. Note that if you use this syntax, 
  3843.            you must specify an even number of hex digits. For the above value 
  3844.            you could specify 0xA1FCC or X'0A1FCC', but not X'A1FCC'. 
  3845.  
  3846.  '000A1FCC'X (PL/I) The hex address A1FCC. Note that if you use this syntax, 
  3847.            you must specify 8 hex digits. For the above value you could specify 
  3848.            0xA1FCC or '000A1FCC'X, but not 'A1FCC'X'. 
  3849.  
  3850.  Related Information 
  3851.  
  3852.  Reference 
  3853.  Expressions Supported 
  3854.  
  3855.  
  3856. ΓòÉΓòÉΓòÉ 3.7. Problems Getting a Source or Mixed View ΓòÉΓòÉΓòÉ
  3857.  
  3858. If you are in the disassembly view of a section of code, you may find that you 
  3859. cannot obtain a source or mixed view of your code (either through the View menu 
  3860. or when you click on the Source View icon). There are several likely reasons 
  3861. for such problems. Click on links in the list below for proposed solutions: 
  3862.  
  3863.      The code you are debugging was not compiled with debug information, 
  3864.       because the debugger is finding a different version of the executable 
  3865.       than the one you compiled with debug information. 
  3866.  
  3867.      The code you are debugging was not compiled with debug information, 
  3868.       because it is not code you wrote, but code in a DLL or other object that 
  3869.       your program uses. 
  3870.  
  3871.      The code you are debugging was compiled with debug information, but the 
  3872.       debugger cannot locate the source code. If you try to switch to a source 
  3873.       or mixed view in this situation, a dialog opens so that you can enter the 
  3874.       path of the source file. If you select Cancel, the view remains a 
  3875.       disassembly view. 
  3876.  
  3877.  Related Information 
  3878.  
  3879.  Reference 
  3880.  Debugger Is Using a Different Executable Version 
  3881.  Debugger Cannot Find Source Code 
  3882.  Debugger Cannot Find Source Code 
  3883.  Environment Variables 
  3884.  Source Views for Code You Did Not Write 
  3885.  
  3886.  
  3887. ΓòÉΓòÉΓòÉ 3.7.1. Debugger Cannot Find Source Code ΓòÉΓòÉΓòÉ
  3888.  
  3889. In the Source window, you may not be able to obtain a source view of an object, 
  3890. even though the code was compiled with debug information, if the debugger 
  3891. cannot find the source files for it. When you start debugging such a program, 
  3892. or when execution lands in a part of the program that was compiled with debug 
  3893. information but the debugger cannot find the source code for it, the debugger 
  3894. normally opens a Source Filename dialog in which you can enter the location and 
  3895. name of the source file. If you choose Cancel when this dialog appears, the 
  3896. debugger displays a disassembly view of the code, because it has no source code 
  3897. to display. If the source file has been moved or renamed, select View->Change 
  3898. text file, and enter the correct path and name in the Change text file dialog. 
  3899. (The debugger searches the workstation for source files using a search path 
  3900. based on environment variables, which you can set before starting your debug 
  3901. session. If you anticipate frequently having your source files in a different 
  3902. directory from your executables, you should set these environment variables.) 
  3903.  
  3904. If you are debugging remotely, the debugger searches for the files in the path 
  3905. you specify, first on the workstation where the program being debugged is 
  3906. running, then on the workstation where the debugger user interface is running. 
  3907.  
  3908. Related Information 
  3909.  
  3910. Reference 
  3911. Environment Variables 
  3912.  
  3913.  
  3914. ΓòÉΓòÉΓòÉ 3.7.2. Debugger Is Using a Different Executable Version ΓòÉΓòÉΓòÉ
  3915.  
  3916. In the Source window, you may not be able to obtain a source view of an object 
  3917. if the debugger is finding a different version of the executable than the one 
  3918. you created with debug information. Set the Show module path check box in the 
  3919. Options->Window Settings->Display Style dialog of the Session Control window, 
  3920. so that full pathnames are displayed in the components pane of the Session 
  3921. Control window. Check that the modules listed are in the correct location. If 
  3922. they are not, you can exit the debugger, remove or rename the executable or DLL 
  3923. in the incorrect path so that the one in the correct path is accessed, and 
  3924. start debugging again. (For example, if there is an obsolete version of your 
  3925. executable in one directory, and an updated version in another, and the 
  3926. obsolete directory's entry in PATH precedes that of the updated directory, 
  3927. remove the executable from the obsolete directory.) 
  3928.  
  3929. You can also specify an absolute path to the version you know was compiled with 
  3930. debug information, when you invoke the debugger or in the Startup dialog. To 
  3931. bring up the Startup dialog, choose File->Startup from within the Source or 
  3932. Session Control window, or start the debugger with no parameters. 
  3933.  
  3934.  
  3935. ΓòÉΓòÉΓòÉ 3.7.3. Source Views for Code You Did Not Write ΓòÉΓòÉΓòÉ
  3936.  
  3937. In the Source window, you may not be able to obtain a source view of an object 
  3938. if the current code being executed is not part of your program. (For example, 
  3939. you may have halted execution while in a DLL that does not contain debug 
  3940. information.) Check the object name that appears at the top of the Source 
  3941. window. If you do not recognize this name as an object of your own executable, 
  3942. you are probably debugging system code used by, but not compiled with, your 
  3943. program. If you have access to the source code for this object, you could 
  3944. recompile it with debug information so that you can obtain a source view of it. 
  3945.  
  3946.  
  3947. ΓòÉΓòÉΓòÉ 3.8. Supported Communications Protocols and Platforms ΓòÉΓòÉΓòÉ
  3948.  
  3949. The debugger supports the TCP/IP protocol to establish the communications link 
  3950. between the debugger and a debuggee program running on different systems. 
  3951.  
  3952.  
  3953. ΓòÉΓòÉΓòÉ 3.9. Heap Errors ΓòÉΓòÉΓòÉ
  3954.  
  3955. Note: You cannot debug heap usage when debugging COBOL or PL/I programs, or 
  3956. when the DEBUG_LANG environment variable is set to COBOL or PL1. 
  3957.  
  3958. Heap errors can occur when your code inadvertently overwrites control 
  3959. information that the memory management functions use to control heap usage. 
  3960. Each block of allocated storage within a heap consists of a data area, which 
  3961. starts at the address returned by the allocating function, as well as a control 
  3962. area adjacent to the data area, which is needed by the memory management 
  3963. functions to free the storage properly when you deallocate the storage. If you 
  3964. overwrite a control structure in the heap (for example, by writing to elements 
  3965. outside the allocated bounds of an array, or by copying a string into too small 
  3966. a block of allocated storage), the control information is corrupted and may 
  3967. cause incorrect program behavior even if the data areas of other allocated 
  3968. blocks are not overwritten. 
  3969.  
  3970. You should consider the following points when you are trying to locate heap 
  3971. errors: 
  3972.  
  3973. Finding heap errors outside the debugger 
  3974.  
  3975. To detect heap errors, you can compile your program to use the heap-checking 
  3976. versions of memory management functions (use the /Tm option). When you run a 
  3977. program compiled with this option, each call to a memory management function 
  3978. causes a heap check to be performed on the default heap. This heap check 
  3979. involves checking the control structures for each allocated block of storage 
  3980. within the heap, and ensuring that none were overwritten. If an error is 
  3981. encountered, the program terminates and information is written to standard 
  3982. error including the address where heap corruption occurred, the source file and 
  3983. line number at which a valid heap state was last detected, and the source file 
  3984. and line number at which the memory error was detected. 
  3985.  
  3986. Heap checking for default and other heaps 
  3987.  
  3988. Heap checking is only enabled for the default heap used by each executable. If 
  3989. the debug versions of the memory management functions do not report heap 
  3990. corruption and you still suspect a problem, you may be using additional heaps 
  3991. and corrupting them. You can debug usage of nondefault heaps by adding calls to 
  3992. the _uheapchk C Library function to your source code. See your compiler 
  3993. documentation for more information. 
  3994.  
  3995. Pinpointing heap errors within the debugger 
  3996.  
  3997. You can pinpoint the cause of a heap error from within the debugger, provided 
  3998. the heap causing the error is known to be the default heap, by continually 
  3999. narrowing down the gap between the last line at which the heap was valid, and 
  4000. the first line at which corruption occurred. From within the Source window, use 
  4001. a combination of run commands, step commands, line and function breakpoints, 
  4002. and the Check heap when stopping setting on the Run menu, to narrow the scope 
  4003. of your search. 
  4004.  
  4005. Check heap when stopping may expose other coding errors 
  4006.  
  4007. For semantically incorrect programs, Check heap when stopping is intrusive in 
  4008. that it may cause different results where a program is incorrectly accessing 
  4009. data on the stack. This is because Check heap when stopping causes the process 
  4010. and thread being debugged to call a heap check function each time execution 
  4011. stops, and this heap check function affects the safe area of the stack by 
  4012. overwriting part of that area with its stack frame. For example, if a called 
  4013. function returns the address of a local variable, that local variable's 
  4014. contents will be accessible from the calling function, and will not change, as 
  4015. long as the stack frame used by the called function is not overwritten by a 
  4016. subsequent call. However, if you issue a Step return command from the called 
  4017. function while Check heap when stopping is enabled, the heap checking function 
  4018. is called immediately on return from the called function, and the storage 
  4019. pointed to by the returned pointer may overwritten by the stack frame of the 
  4020. heap checking function. 
  4021.  
  4022. Check heap when stopping affects performance 
  4023.  
  4024. Heap checking within the debugger has a high overhead cost for step commands, 
  4025. because the heap is checked after each step. If you are stepping through large 
  4026. sections of code, or frequently stopping at breakpoints, and you find debug 
  4027. performance too slow, try turning on Check heap when stopping only in those 
  4028. areas you suspect are causing heap errors. 
  4029.  
  4030. Related Information 
  4031.  
  4032. Procedures 
  4033. Debug Heap Usage 
  4034.  
  4035.  
  4036. ΓòÉΓòÉΓòÉ 3.9.1. Notes on Check Heap when Stopping ΓòÉΓòÉΓòÉ
  4037.  
  4038. Note: Heap checking is unavailable when the dominant language is COBOL or PL/I 
  4039. (that is, when the environment variable DEBUG_LANG is set to COBOL or PL1). 
  4040.  
  4041.      For the Check heap when stopping choice to work, you have to compile your 
  4042.       application using the VisualAge for C++ /Tm+ compiler option. 
  4043.  
  4044.      If you enable the Check heap when stopping choice and run your 
  4045.       application to termination, and the application contains a heap error, 
  4046.       the heap check is not made. To check the heap just before termination, 
  4047.       set a breakpoint on the last line of your application. 
  4048.  
  4049.      (OS/2 only): If you are debugging a multiple thread program and a thread 
  4050.       stops while running in compiler memory management code that is holding a 
  4051.       memory semaphore, the heap check will not be performed. 
  4052.  
  4053.      (OS/2 only): If the stopping thread is running in 16-bit code, the heap 
  4054.       check will not be performed. 
  4055.  
  4056.  
  4057. ΓòÉΓòÉΓòÉ 3.10. Postmortem Debugging ΓòÉΓòÉΓòÉ
  4058.  
  4059.  Postmortem debugging is supported in the OS/2 environment through the ITRAPPER 
  4060. program. It is not available on Windows. 
  4061.  
  4062. Related Information 
  4063.  
  4064. Reference 
  4065. Postmortem Debugging on OS/2 
  4066. Limitations During Postmortem Debugging 
  4067. Postmortem Debugging Overview 
  4068.  
  4069.  
  4070. ΓòÉΓòÉΓòÉ 3.10.1. Postmortem Debugging on OS/2 ΓòÉΓòÉΓòÉ
  4071.  
  4072. Note: Postmortem debugging is supported in the OS/2 environment through the 
  4073. ITRAPPER program. It is not available on Windows. 
  4074.  
  4075. Use the debugger's postmortem debugging capabilities to debug failing programs 
  4076. that are already in production. Postmortem debugging is only useful when a 
  4077. program fails by trapping or by throwing an OS/2 exception, and your 
  4078. development site cannot easily reproduce the failure. When a trap or exception 
  4079. occurs in a production version of your program, relevant information such as 
  4080. process and thread IDs, register and memory contents, can be saved to a dump 
  4081. file, and this dump file can then be sent to you for debugging. 
  4082.  
  4083. Related Information 
  4084.  
  4085. Procedures 
  4086. Debug Dump Files 
  4087. Obtain a Dump File 
  4088.  
  4089. Reference 
  4090. Postmortem Debugging Overview 
  4091.  
  4092.  
  4093. ΓòÉΓòÉΓòÉ 3.10.2. Limitations During Postmortem Debugging ΓòÉΓòÉΓòÉ
  4094.  
  4095. Once you have started debugging a dump file, you can use a subset of debugger 
  4096. features to examine registers, storage (if available), and code for the 
  4097. executable that caused the trap. You can access only the following debugger 
  4098. monitors: 
  4099.  
  4100.      Registers monitor 
  4101.  
  4102.      Storage monitor 
  4103.  
  4104.      Call Stack monitor 
  4105.  
  4106.      Local Variables monitor 
  4107.  
  4108.  You cannot change the contents of items in these monitors (for example, 
  4109.  registers in the registers monitor). Where the core file does not contain 
  4110.  appropriate information, question marks or messages such as 'expression 
  4111.  evaluation failed' may appear in place of data. For example, if stack 
  4112.  information was not saved, local variable values may not be displayed, even 
  4113.  though the names of those variables are. 
  4114.  
  4115.  The following debugger commands are disabled, and icons for them are hidden or 
  4116.  greyed out, when you are debugging a dump file: 
  4117.  
  4118.      Run and stop commands 
  4119.  
  4120.      Step commands 
  4121.  
  4122.      Commands to set, clear, disable, enable, or delete breakpoints. 
  4123.  
  4124.  
  4125. ΓòÉΓòÉΓòÉ 3.10.3. Postmortem Debugging Overview ΓòÉΓòÉΓòÉ
  4126.  
  4127. Note: This section applies only to OS/2 local debugging. 
  4128.  
  4129. Postmortem debugging is intended to help you isolate the causes of 
  4130. unanticipated traps or OS/2 exceptions, in programs that are already in 
  4131. production or widespread use. The stages of the postmortem debugging process 
  4132. are: 
  4133.  
  4134.    1. You ship the ITRAPPER utility along with your application. 
  4135.  
  4136.    2. After the end user has experienced a trap or unanticipated OS/2 
  4137.       exception, or in anticipation of such a problem, they reload the 
  4138.       application under ITRAPPER. This utility has no effect on the running 
  4139.       application. However, if the application traps or throws an unhandled 
  4140.       exception, ITRAPPER takes control and writes relevant information to a 
  4141.       dump file, using compression algorithms to minimize the dump file size. 
  4142.       If the failure causing the trap was an OS/2 exception, the program 
  4143.       continues running. If the cause was a trap, the program terminates. A 
  4144.       separate dump file is created for each exception or trap. The end user 
  4145.       ships you the dump files created by ITRAPPER. 
  4146.  
  4147.    3. You debug the dump file instead of a live object file. Because the dump 
  4148.       file contains information about the state of the application at the time 
  4149.       of the trap or exception, and is not a live object file, only a subset of 
  4150.       debugger features are available. For example, you can view memory and 
  4151.       register contents, but you cannot step or run the program or set 
  4152.       breakpoints. 
  4153.  
  4154.  
  4155. ΓòÉΓòÉΓòÉ 3.10.4. Start ITRAPPER ΓòÉΓòÉΓòÉ
  4156.  
  4157. Note: post-mortem debugging and the ITRAPPER program are only available on 
  4158. OS/2. 
  4159.  
  4160. Use the ITRAPPER utility to obtain a dump file when a program traps. If the 
  4161. program has already trapped and was not started as a child process of the 
  4162. ITRAPPER utility, you must restart the program under ITRAPPER and try to 
  4163. duplicate the trap. 
  4164.  
  4165. ITRAPPER is started with a simple command line interface: 
  4166.  
  4167. [d:][path]ITRAPPER [/p parameter_file debuggee [debuggee_parameters]] 
  4168.  
  4169. where: 
  4170.  
  4171.  [d:][path] Is the path to the location of the ITRAPPER.EXE file, if this 
  4172.            location is not in the user's PATH environment variable 
  4173.  
  4174.  /p        is an optional parameter indicating that a trapper parameter file 
  4175.            has been specified. (ITRAPPER also accepts /P, -p, or -P for this 
  4176.            parameter.) The name of the parameter file follows. 
  4177.  
  4178.  debuggee  is the program to be run under ITRAPPER 
  4179.  
  4180.  debuggee_parameters are the normal parameters for the program to be run under 
  4181.            ITRAPPER. 
  4182.  
  4183.  Related Information 
  4184.  
  4185.  Reference 
  4186.  Trapper Parameter File 
  4187.  
  4188.  
  4189. ΓòÉΓòÉΓòÉ 3.10.5. Trapper Parameter File ΓòÉΓòÉΓòÉ
  4190.  
  4191. Note: post-mortem debugging and the ITRAPPER program are only available on 
  4192. OS/2. 
  4193.  
  4194. You can specify an optional parameter file to control ITRAPPER behavior. This 
  4195. file should be shipped with your product and the ITRAPPER.EXE utility. This 
  4196. file is an ASCII file. Blank lines and comment lines (lines beginning with an 
  4197. asterisk '*') are allowed. Parameter lines are of the form: 
  4198.  
  4199. KEYWORD value
  4200.  
  4201. Keywords are not case-sensitive, and only the first three characters of a 
  4202. keyword are necessary. Valid keywords are listed below. Click on a keyword for 
  4203. information on its purpose and the arguments it takes: 
  4204.  
  4205.      OnException | OffException 
  4206.  
  4207.      OutputPath | Path 
  4208.  
  4209.      DumpNumber | Number 
  4210.  
  4211.      TraceChild 
  4212.  
  4213.      UserExit 
  4214.  
  4215.      LogFile 
  4216.  
  4217.  
  4218. ΓòÉΓòÉΓòÉ 3.10.5.1. DumpNumber | Number ΓòÉΓòÉΓòÉ
  4219.  
  4220.  ITRAPPER keyword, values: DumpNumber | Number nn [WRAP|NOWRAP] 
  4221.  
  4222. These two keywords are interchangeable and control the extensions of dump 
  4223. files. These keywords take as arguments a number nn from 1 to 99, and an 
  4224. optional WRAP or NOWRAP argument: The extension of each dump file will be the 
  4225. character @ followed by a number between 1 and the value specified for nn. At 
  4226. each new dump, ITRAPPER adds 1 to the number of the most recent dump, and dumps 
  4227. to that file. If the number of the current dump is the same as the value nn. 
  4228. ITRAPPER wraps back to 1, unless NOWRAP is set, in which case ITRAPPER does not 
  4229. create a dump file. 
  4230.  
  4231.  
  4232. ΓòÉΓòÉΓòÉ 3.10.5.2. LogFile ΓòÉΓòÉΓòÉ
  4233.  
  4234. ITRAPPER keyword, values: LogFile LOGFILE_NAME 
  4235.  
  4236. Use the LogFile parameter to specify a log file, to which ITRAPPER will write 
  4237. textual information at the start and end of each dump. By default, no log file 
  4238. is created. 
  4239.  
  4240.  
  4241. ΓòÉΓòÉΓòÉ 3.10.5.3. OnException | OffException ΓòÉΓòÉΓòÉ
  4242.  
  4243. ITRAPPER keyword, values: OnException | OffExceptionexception_list 
  4244.  
  4245. These two keywords control which OS/2 exceptions will cause ITRAPPER to create 
  4246. a dump file. See the exception list for the names of exceptions you can 
  4247. specify, and their default ITRAPPER settings. 
  4248.  
  4249.  
  4250. ΓòÉΓòÉΓòÉ 3.10.5.4. OutputPath | Path ΓòÉΓòÉΓòÉ
  4251.  
  4252. ITRAPPER keyword, values: OutputPath | Path logfilepath 
  4253.  
  4254. These two keywords are interchangeable and control the path where the dump and 
  4255. log files are to be placed. If this parameter is not specified, ITRAPPER checks 
  4256. for a TMP environment variable and uses that directory if found. Otherwise it 
  4257. uses the current directory. 
  4258.  
  4259.  
  4260. ΓòÉΓòÉΓòÉ 3.10.5.5. TraceChild ΓòÉΓòÉΓòÉ
  4261.  
  4262. ITRAPPER keyword, values: TraceChild [ ON | OFF] 
  4263.  
  4264. This parameter controls whether ITRAPPER can detect exceptions in the children 
  4265. of the program being traced. By default this parameter is on, and all 
  4266. descendant processes are monitored for exceptions. You only need to turn it off 
  4267. if you are running ITRAPPER against a program that uses the DosDebug() API, 
  4268. because ITRAPPER will cause such programs to malfunction if TraceChild is on. 
  4269.  
  4270.  
  4271. ΓòÉΓòÉΓòÉ 3.10.5.6. UserExit ΓòÉΓòÉΓòÉ
  4272.  
  4273. ITRAPPER keyword, values: UserExit DLL_NAME 
  4274.  
  4275. Use the UserExit parameter to specify a user exit DLL to be called at the start 
  4276. and end of each dump. The DLL may export either or both of the functions listed 
  4277. below. The functions are called by ordinal, and the actual function names are 
  4278. irrelevant. 
  4279.  
  4280. Ordinal 1: 
  4281.  
  4282. void _System startdump(const char* exename, unsigned long PID);
  4283.  
  4284. This function, if you provide it, is called at the start of the process dump. 
  4285. Use it to add additional process logging and control. The function parameters 
  4286. are: 
  4287.  
  4288.  exename   The fully qualified name of the executable that has trapped 
  4289.  
  4290.  PID       The process ID of the executable that has trapped 
  4291.  
  4292.  Ordinal 2: 
  4293.  
  4294.   void _System enddump(unsigned long PID);
  4295.  
  4296.  This function, if you provide it, is called at the end of the process dump. 
  4297.  Use it to add additional process logging and control. The function parameter, 
  4298.  PID, is the process ID of the executable that has trapped. 
  4299.  
  4300.  
  4301. ΓòÉΓòÉΓòÉ 3.11. Debug on Demand ΓòÉΓòÉΓòÉ
  4302.  
  4303. Note: Debug on Demand is available only on Windows NT and Windows 95, and only 
  4304. for local debugging. It is not available for debugging PL/I programs. 
  4305.  
  4306. Debug on Demand enables you to open a debugging session whenever an unhandled 
  4307. exception or other unrecoverable error occurs in your application. The debugger 
  4308. starts and attaches to your application at the point of fault. This can save 
  4309. you time for two reasons: you do not have to recreate errors, and your 
  4310. application can run at full speed without interference from the debugger until 
  4311. the exception is encountered. 
  4312.  
  4313. Debug on demand can be started for any application that fails while it is 
  4314. running, even if the application does not contain debug information. VisualAge 
  4315. for COBOL can start debug on demand for any failing application that was 
  4316. started with the TRAP(OFF) runtime option (see the COBOL Programming Guide for 
  4317. more information). With debug on demand, you can even find and fix a problem in 
  4318. your application and let the application continue running. 
  4319.  
  4320. To enable this feature, type the following at a command shell: 
  4321.  
  4322. idod path_name 
  4323.  
  4324. where path_name is the path where the debugger is installed, for example 
  4325. e:\ibmcobw\bin. 
  4326.  
  4327. To disable Debug on demand, type the following at a command shell: 
  4328.  
  4329. idod /u 
  4330.  
  4331.  
  4332. ΓòÉΓòÉΓòÉ 3.12. Why Use Remote Debugging ΓòÉΓòÉΓòÉ
  4333.  
  4334. You might want to use remote debugging for the following reasons: 
  4335.  
  4336.      The program you are debugging is running on another user's system, and is 
  4337.       behaving differently on that system than on your own. You can use the 
  4338.       remote debug feature to debug this program on the other system, from your 
  4339.       system. The user on the system running that program interacts with the 
  4340.       program as usual (except where breakpoints or step commands introduce 
  4341.       delays). You interact with the debugger, but not with the I/O of the 
  4342.       program being debugged. 
  4343.  
  4344.      It is easier to debug an application that uses graphics or has a GUI when 
  4345.       you keep the debugger user interface separate from the application's GUI. 
  4346.       Your interaction (or another user's interaction) with the application 
  4347.       occurs on the remote system, while your interaction with the debugger 
  4348.       occurs on the local system. 
  4349.  
  4350.      The program you are debugging was compiled for a platform that the 
  4351.       debugger user interface does not run on. You can use the remote debug 
  4352.       feature to take advantage of the debugger user interface while debugging 
  4353.       the remote application 
  4354.  
  4355.  Related Information 
  4356.  
  4357.  Procedures 
  4358.  Start the Debugger and the Remote Program 
  4359.  
  4360.  Concepts 
  4361.  Remote Debugging 
  4362.  
  4363.  
  4364. ΓòÉΓòÉΓòÉ 3.13. Single and Multiple Session Debugging ΓòÉΓòÉΓòÉ
  4365.  
  4366. The remote debug driver for workstation-to-workstation debugging (irmtdbg) runs 
  4367. on the remote workstation, and waits for requests from a debugger user 
  4368. interface on another workstation to start an application for debugging. irmtdbg 
  4369. executes in single session mode by default. In this mode, when you close the 
  4370. debugger (for example, by pressing F3), the remote debug driver will also exit. 
  4371.  
  4372. In multiple session mode, when you close the debugger, the remote debug driver 
  4373. does not terminate; instead, it re-initializes itself and waits for a new 
  4374. connection. If you use this mode, you must terminate the remote debug driver 
  4375. from the remote machine. For example, on OS/2 and Windows, terminate the 
  4376. driver's process or use Ctrl-C or Ctrl-Break. 
  4377.  
  4378.  
  4379. ΓòÉΓòÉΓòÉ 3.14. More Information on Recursion ΓòÉΓòÉΓòÉ
  4380.  
  4381. Recursion does not have to involve a function calling itself directly; for 
  4382. example: func1 calls func2 calls func3 calls func1. After the call to func3, 
  4383. each time you step into one of these functions, the entry for that call shows a 
  4384. recursion count one higher than the previous entry for that call. 
  4385.  
  4386. You can use the recursion value to detect unintentionally recursive calls. 
  4387.  
  4388. The debugger can keep track of all calls, whether they are done using a 
  4389. function or pointer to function, or, for C++, a virtual function. 
  4390.  
  4391.  
  4392. ΓòÉΓòÉΓòÉ 3.15. Valid Entries for Registers ΓòÉΓòÉΓòÉ
  4393.  
  4394. If the value you enter consists entirely of valid hexadecimal characters, it is 
  4395. treated as a hexadecimal value unless it is also the name of a variable that is 
  4396. currently in scope. For example, suppose you have a variable feedbeef, and you 
  4397. enter 'feedbeef' as a register value. If the variablefeedbeef can be 
  4398. represented as a hex value, that hex value is used. Otherwise, the debugger 
  4399. uses the hex value 'feedbeef'. To force the debugger to use a hex value rather 
  4400. than the contents of a variable, precede the hex value with '0x' (for example, 
  4401. '0xfeedbeef').  In COBOL, you can also use 'X'feedbeef''.In PL/I, you can also 
  4402. use ''feedbeef'X'. 
  4403.  
  4404. For C++, you can also enter a segmented address, or an expression. Numbers used 
  4405. in the expression are treated as decimal unless explicitly preceded with '0x'. 
  4406.  
  4407. Related Information 
  4408.  
  4409. Reference 
  4410. Expressions Supported 
  4411.  
  4412.  
  4413. ΓòÉΓòÉΓòÉ 3.16. Registers Monitor Split Bars ΓòÉΓòÉΓòÉ
  4414.  
  4415. You can change the amount of space given to each group of registers in the 
  4416. Registers monitor, as follows: 
  4417.  
  4418.    1. Place the pointer on the split bar (a division between two panes of the 
  4419.       window). The pointer's shape changes to an icon with two arrows. 
  4420.  
  4421.    2. Click and hold mouse button 1. 
  4422.  
  4423.    3. Drag the mouse up or down (for register groups displayed in rows) or left 
  4424.       or right (for register groups displayed in columns) until you reach the 
  4425.       desired size for the pane. 
  4426.  
  4427.    4. Release the mouse button. 
  4428.  
  4429.  To save the position of the split bars, select Options->Display style and 
  4430.  click on the Save Split Bar Positions check box. 
  4431.  
  4432.  
  4433. ΓòÉΓòÉΓòÉ 3.17. Notes on Debugging Optimized Code ΓòÉΓòÉΓòÉ
  4434.  
  4435. When you debug optimized code, information in debugger panes may lead you to 
  4436. suspect logic problems that do not actually exist. You should bear in mind the 
  4437. points below. 
  4438.  
  4439. Values in some monitors may not be current 
  4440.  
  4441. Do not rely on monitors such as the Local Variables or Popup monitors to show 
  4442. the current values of variables. Numeric and char values may be kept in 
  4443. processor registers, as may pointers to other types of variables such as 
  4444. strings and class objects. In the optimized program, these values and pointers 
  4445. are not always written out to memory; in some cases, they may be discarded 
  4446. because they are not needed. 
  4447.  
  4448. Static and external variables are not always current 
  4449.  
  4450. Static or external variables can be monitored at function entry and exit 
  4451. points. Within an optimized function, their values may be optimized out of 
  4452. existence. 
  4453.  
  4454. Register and Storage monitors are always current 
  4455.  
  4456. The register and storage monitors are correct. Unlike monitors that show actual 
  4457. variables, such as the Local Variables or Popup monitors, the Register and 
  4458. Storage Monitors are always up-to-date as of the last time execution stopped. 
  4459.  
  4460. Source statements may be optimized away 
  4461.  
  4462. Use the disassembly view of your program to see whether source statements whose 
  4463. result you were relying on have been optimized away (via dead code elimination, 
  4464. where code that performs no useful work is removed). You may find, for example, 
  4465. that an assignment to a variable in your source code does not result in any 
  4466. disassembly code being produced; this may indicate that the variable's value is 
  4467. never used after the assignment. 
  4468.  
  4469. Related Information 
  4470.  
  4471. Procedures 
  4472. Debug Optimized Code 
  4473.  
  4474.  
  4475. ΓòÉΓòÉΓòÉ 3.18. Limitations when Debugging Visual C++ Programs ΓòÉΓòÉΓòÉ
  4476.  
  4477. Note: This section applies only to programs being debugged on Windows 95 or 
  4478. Windows NT. 
  4479.  
  4480. You can debug C and C++ programs compiled with the Microsoft Visual C++ 
  4481. compiler, provided you have compiled and linked your program with the 
  4482. appropriate options. The following limitations apply when debugging such 
  4483. programs: 
  4484.  
  4485. Enumerated types: Enumeration member name information for enumerated types in C 
  4486. programs compiled with Visual C++ is not shown in monitors that display 
  4487. variable contents, such as the Local Variables monitor. This information is 
  4488. available for C++ programs, however. The following shows a code fragment with 
  4489. enumerated types, and the values displayed in the Local Variables monitor of 
  4490. the debugger: 
  4491.  
  4492. typedef enum { One=1, Two, Three} TypeX;
  4493. TypeX a=One;
  4494. TypeX b=Two;
  4495. TypeX c=Three;
  4496.  
  4497. If the program is compiled as a C program with Visual C++: 
  4498.  
  4499. a: 1
  4500. b: 2
  4501. c: 3
  4502.  
  4503. If the program is compiled as a C or C++ program with VisualAge C++, or a C++ 
  4504. program with Visual C++ 
  4505.  
  4506. a: 1 /* One */
  4507. b: 2 /* Two */
  4508. c: 3 /* Three */
  4509.  
  4510. Constants: A statement such as const int i = 42; in a Visual C++ program does 
  4511. not generate any debug information for the variable i. Therefore the debugger 
  4512. does not display any value for it. The IBM Visual Age C++ compiler does 
  4513. generate information for this symbol. 
  4514.  
  4515. Namespaces: You cannot debug Visual C++ namespaces because the Visual C++ 
  4516. compiler does not generate the necessary debug information for namespaces in 
  4517. the executable. 
  4518.  
  4519. Related Information 
  4520.  
  4521. Procedures 
  4522. Debug a Microsoft Visual C++ Program 
  4523.  
  4524.  
  4525. ΓòÉΓòÉΓòÉ 3.19. When to Use the Process List Dialog ΓòÉΓòÉΓòÉ
  4526.  
  4527. Note: The Process List dialog, menu choice, and pushbutton are only available 
  4528. on platforms that support process debugging (Windows 95, Windows NT). 
  4529.  
  4530. If you close the debugger after attaching to a process on Windows NT, the 
  4531. process terminates. 
  4532.  
  4533. You can use the Process List dialog to attach the debugger to an already 
  4534. running program where an error or failure has occurred. There are two main 
  4535. reasons for attaching the debugger to an already running process: 
  4536.  
  4537.      You anticipate a problem at a particular point in your program, and you 
  4538.       do not want to step through the program or set breakpoints. In this 
  4539.       situation, you can run your program, and at a program pause shortly 
  4540.       before the anticipated failure (for example, while the program is waiting 
  4541.       for keyboard input), you attach to the process. You can then provide the 
  4542.       input, and debug from that point on. 
  4543.  
  4544.      You are developing or maintaining a program that hangs sporadically, and 
  4545.       you want to find out why it is hanging. In this situation, you can attach 
  4546.       the debugger to the hung process, and look for infinite loops or other 
  4547.       problems that might be causing your program to hang. 
  4548.  
  4549.  On Windows NT and Windows 95, you can also use the Debug on Demand feature to 
  4550.  invoke the debugger when an application running on your system throws an 
  4551.  exception that is not handled. 
  4552.  
  4553.  On OS/2 (local debugging only), you can also use postmortem debugging to debug 
  4554.  a dump file containing information on the state of an application when it 
  4555.  trapped. 
  4556.  
  4557.  Related Information 
  4558.  
  4559.  Reference 
  4560.  Debug on Demand 
  4561.  Postmortem Debugging on OS/2 
  4562.  
  4563.  
  4564. ΓòÉΓòÉΓòÉ 3.20. Call Statement Example for COBOL ΓòÉΓòÉΓòÉ
  4565.  
  4566. Given the following:: 
  4567.  
  4568. .
  4569. .
  4570. .
  4571. PROGRAM-ID. MAINPRG.
  4572. .
  4573. .
  4574. .
  4575. CALL 'PROG1'.
  4576. .
  4577. .
  4578. .
  4579.  
  4580. If you step into PROG1 and display the Call Stack window, the call statement 
  4581. shown for MAINPRG is the line number where PROG1 was called. The entry with the 
  4582. highest entry number in the Call Stack window has no Call Statement value 
  4583. because it has not itself called any routine. 
  4584.  
  4585.  
  4586. ΓòÉΓòÉΓòÉ 3.21. Call Statement Example for C++ ΓòÉΓòÉΓòÉ
  4587.  
  4588. Given the following source code: 
  4589.  
  4590. void func1() {/* ... */}
  4591. void main() {
  4592.   func1();
  4593. }
  4594.  
  4595. If you step into func1 and display the Call Stack window, the call statement 
  4596. shown for main is the line number where func1 was called from. The function 
  4597. with the highest entry number in the Call Stack window has no Call Statement 
  4598. entry because it has not itself called any function. 
  4599.  
  4600.  
  4601. ΓòÉΓòÉΓòÉ 3.22. Jump to Location -- COBOL Example ΓòÉΓòÉΓòÉ
  4602.  
  4603. In the example below, assume that line 61 is the current line and that you 
  4604. selected line 62. If you issue a Jump to Location command and then a Step Into 
  4605. command, line 65 will become the current line. However, if you issue a Run to 
  4606. Location command instead of the Jump to Location command, line 63 will become 
  4607. the current line. 
  4608.  
  4609. 59           MOVE 13 TO VAR2.
  4610. 60           MOVE 12 TO VAR1.
  4611. 61           MOVE 12 TO VAR2.
  4612. 62           IF VAR1 = VAR2 THEN
  4613. 63               CALL 'PROG1'
  4614. 64           ELSE
  4615. 65               CALL 'PROG2'
  4616. 66           END-IF.
  4617.  
  4618.  
  4619. ΓòÉΓòÉΓòÉ 3.23. Jump to Location -- C++ Example ΓòÉΓòÉΓòÉ
  4620.  
  4621. In the example below, if you have stepped over the assignment to var2, and you 
  4622. select the if line and issue a Jump to Location command followed by two Step 
  4623. Into commands, execution stops at the first line of func2 instead of func1: 
  4624.  
  4625. //...
  4626. var1=11;
  4627. var2=12;  // just stepped over this statement
  4628. var1=12;
  4629. if (var1==var2) func1();
  4630. else func2();
  4631.  
  4632.  
  4633. ΓòÉΓòÉΓòÉ 3.24. Jump to Location -- PL/I Example ΓòÉΓòÉΓòÉ
  4634.  
  4635. In the example below, assume that line 61 is the current line and that you 
  4636. selected line 62. If you issue a Jump to Location command and then a Step Into 
  4637. command, line 65 will become the current line. However, if you issue a Run to 
  4638. Location command instead, line 63 will become the current line. 
  4639.  
  4640. 59 VAR2 = 13;
  4641. 60 VAR1 = 12;
  4642. 61 VAR2 = 12;
  4643. 62 IF VAR1 = VAR2 THEN
  4644. 63 CALL PROG1;
  4645. 64 ELSE
  4646. 65 CALL PROG2;
  4647.  
  4648.  
  4649. ΓòÉΓòÉΓòÉ 4. User Interface Help for Debugger ΓòÉΓòÉΓòÉ
  4650.  
  4651.  The Debugger Online Help is divided into four types of information: 
  4652.  
  4653.      Procedures - how to perform a specific task or set of tasks 
  4654.  
  4655.      Reference - technical information you may need to understand how to 
  4656.       perform a task 
  4657.  
  4658.      User Interface - context-sensitive help pages displayed when you press F1 
  4659.       from within the debugger 
  4660.  
  4661.      Concepts - overview information you may need to understand basic 
  4662.       principles of debugging or components of the debugger interface 
  4663.  
  4664.  The main topics for User Interface help are listed below: 
  4665.  
  4666.      Source window 
  4667.  
  4668.      Call Stack monitor 
  4669.  
  4670.      Registers monitor 
  4671.  
  4672.      Storage monitor 
  4673.  
  4674.      Breakpoint List window 
  4675.  
  4676.      Session Control window 
  4677.  
  4678.      Popup Monitor 
  4679.  
  4680.      Private Monitor 
  4681.  
  4682.      Program Monitor 
  4683.  
  4684.      Popup Menu for Private and Program Monitors 
  4685.  
  4686.      Local Variables Monitor 
  4687.  
  4688.      Dialogs 
  4689.  
  4690.      Toolbar Buttons, Shortcut Keys, and Common Menu Items 
  4691.  
  4692.  
  4693. ΓòÉΓòÉΓòÉ 4.1. Source Window ΓòÉΓòÉΓòÉ
  4694.  
  4695. The Source window displays the source code for the program you are debugging. 
  4696. You can perform most debugger actions from the Source window. For more details 
  4697. see: 
  4698.  
  4699.      Introduction to the Source window 
  4700.  
  4701.      How to use the Source window 
  4702.  
  4703.      Menus, buttons, shortcut keys 
  4704.  
  4705.  
  4706. ΓòÉΓòÉΓòÉ 4.1.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  4707.  
  4708. The Source window provides the following menu bar menus, popup menus, toolbar 
  4709. buttons, and shortcut keys: 
  4710.  
  4711.      Menu bar menus: 
  4712.  
  4713.         -  File 
  4714.  
  4715.         -  View 
  4716.  
  4717.         -  Breakpoints 
  4718.  
  4719.         -  Monitors 
  4720.  
  4721.         -  Run 
  4722.  
  4723.         -  Options 
  4724.  
  4725.         -  Windows 
  4726.  
  4727.         -  Help 
  4728.  
  4729.         -  Project 
  4730.  
  4731.      Prefix area popup menu and code area popup menu 
  4732.  
  4733.      Toolbar buttons:       Project button 
  4734.  
  4735.      Shortcut keys: 
  4736.  
  4737.         -  [Ctrl+B->Session Control] 
  4738.  
  4739.         -  [Ctrl+E->Registers] 
  4740.  
  4741.         -  [Ctrl+G->Storage] 
  4742.  
  4743.         -  [Ctrl+K->Call Stack] 
  4744.  
  4745.         -  [Ctrl+R->Run] 
  4746.  
  4747.         -  [Ctrl+V-> Local variables] 
  4748.  
  4749.         -  [Ctrl+X-> Breakpoint list] 
  4750.  
  4751.  
  4752. ΓòÉΓòÉΓòÉ 4.1.1.1. File Menu ΓòÉΓòÉΓòÉ
  4753.  
  4754. Use the File menu of the Source window to open a new source file, find a 
  4755. function or the current execution point, switch to debugging a different 
  4756. program or process, or exit the debugger. The File menu contains the following 
  4757. choices: 
  4758.  
  4759.      Open New Source 
  4760.  
  4761.      Find Function 
  4762.  
  4763.      Where is Execution Point -- [Ctrl+P] 
  4764.  
  4765.      Startup 
  4766.  
  4767.      Process List 
  4768.  
  4769.      Close Debugger -- [F3] 
  4770.  
  4771.  
  4772. ΓòÉΓòÉΓòÉ 4.1.1.2. View Menu ΓòÉΓòÉΓòÉ
  4773.  
  4774. Use the View menu of the Source window to locate a text string, scroll through 
  4775. the view, switch to a different view, or view a different source file. The View 
  4776. menu contains the following choices: 
  4777.  
  4778.      Find -- [Ctrl+F] 
  4779.  
  4780.      Find Next -- [Ctrl+N] 
  4781.  
  4782.      Scroll to Line Number 
  4783.  
  4784.      Select Include (not available for COBOL) 
  4785.  
  4786.      Change Text File 
  4787.  
  4788.      Source 
  4789.  
  4790.      Disassembly 
  4791.  
  4792.      Mixed 
  4793.  
  4794.  
  4795. ΓòÉΓòÉΓòÉ 4.1.1.2.1. Find ΓòÉΓòÉΓòÉ
  4796.  
  4797. Select View->Find or press Ctrl+F to locate a string of text in the Source 
  4798. Window. Enter the string in the Find dialog. The debugger searches forward from 
  4799. the current highlighted word or line to the end of the file, then wraps to the 
  4800. beginning and searches up to the highlighted word or line. If the string is 
  4801. found, it is highlighted. Otherwise the message Text not found is displayed. 
  4802.  
  4803. If you want to search for only exact case matches to the search string, click 
  4804. on the Case sensitive check box. 
  4805.  
  4806. Once you have entered a string in the Find dialog, you can repeat the find 
  4807. operation by selecting View->Find Next or by pressing Ctrl+N. 
  4808.  
  4809.  
  4810. ΓòÉΓòÉΓòÉ 4.1.1.2.2. Find Next ΓòÉΓòÉΓòÉ
  4811.  
  4812. Select View->Find Next or press Ctrl+N to find the next string that matches the 
  4813. search string you specified using View->Find or Ctrl+F. 
  4814.  
  4815. If you have not yet specified a string to search for, this choice is not 
  4816. available. 
  4817.  
  4818.  
  4819. ΓòÉΓòÉΓòÉ 4.1.1.2.3. Scroll to Line Number ΓòÉΓòÉΓòÉ
  4820.  
  4821. Select View->Scroll to Line Number to move to another line in the source file. 
  4822. This action only affects what you see; it does not change what line will be 
  4823. executed next. 
  4824.  
  4825. A dialog opens where you enter a line number to scroll to. You can then either 
  4826. click on OK to scroll to that line, or you can select Breakpoint if you want to 
  4827. set a breakpoint at the line number. 
  4828.  
  4829. Once you have scrolled to a line number, you can select Run to locationor Jump 
  4830. to location to runor jump to that line. 
  4831.  
  4832. You can also open the Scroll to Line Number dialog by typing a line number 
  4833. directly from within the Source window. The dialog opens and the number you 
  4834. typed is placed in the line number entry field. 
  4835.  
  4836. Scroll to Line Number is accessible only from the source view of a Source 
  4837. window. 
  4838.  
  4839.  
  4840. ΓòÉΓòÉΓòÉ 4.1.1.2.4. Select Include ΓòÉΓòÉΓòÉ
  4841.  
  4842. Select View->Select Include to display a list of the source files included in 
  4843. your program. You can select a file from this list to view. You can also access 
  4844. these files from the notebook tabs in the Source window (unless you have 
  4845. disabled the Source as Notebook check box in the Source window options). 
  4846.  
  4847.  
  4848. ΓòÉΓòÉΓòÉ 4.1.1.2.5. Change Text File ΓòÉΓòÉΓòÉ
  4849.  
  4850. Select View->Change text file to view a different source file. Sometimes the 
  4851. debugger locates the wrong source file for your program. Change Text File lets 
  4852. you specify the correct source file and directory  for the source file. 
  4853.  
  4854. In the dialog that appears, enter the path and name of the source file you 
  4855. want, or select File List to navigate through your directories and choose a 
  4856. file from that list. 
  4857.  
  4858. Note: Change Text File does not open a new Source window or change the 
  4859. executable being debugged. If you enter the wrong source file, you may still be 
  4860. able to set breakpoints, issue step commands, and see the debugger moving the 
  4861. current line. However, the debugger's behavior is related to the current object 
  4862. file, not to the current source file, and so this behavior may seem out of sync 
  4863. with the source file. If you want to debug a different object file within the 
  4864. same program, do not use this menu item; select File->Open New Source instead. 
  4865. To stop debugging one program and start debugging another, choose 
  4866. File->Startup. 
  4867.  
  4868.  
  4869. ΓòÉΓòÉΓòÉ 4.1.1.2.6. Source ΓòÉΓòÉΓòÉ
  4870.  
  4871. Select View->Source to switch to a source view of the current object. In this 
  4872. view, the object is displayed in notebook format, with a tab for each source 
  4873. included by the current object, unless you have disabled the notebook format 
  4874. from Options->Window settings. 
  4875.  
  4876. Related Information 
  4877.  
  4878. Concepts 
  4879. Source View 
  4880.  
  4881.  
  4882. ΓòÉΓòÉΓòÉ 4.1.1.2.7. Disassembly ΓòÉΓòÉΓòÉ
  4883.  
  4884. Select View->Disassembly to switch to a disassembly view of the current object. 
  4885. In this view, the disassembly code appears without reference to what source 
  4886. file the code originated in. 
  4887.  
  4888. Related Information 
  4889.  
  4890. Concepts 
  4891. Disassembly View 
  4892.  
  4893.  
  4894. ΓòÉΓòÉΓòÉ 4.1.1.2.8. Mixed ΓòÉΓòÉΓòÉ
  4895.  
  4896. Select View->Mixed to switch to a mixed view of the current object. In this 
  4897. view, the object is display in notebook format, with a tab for each source file 
  4898. included by the current object. 
  4899.  
  4900. Related Information 
  4901.  
  4902. Concepts 
  4903. Mixed View 
  4904.  
  4905.  
  4906. ΓòÉΓòÉΓòÉ 4.1.1.3. Breakpoints Menu ΓòÉΓòÉΓòÉ
  4907.  
  4908. Use the Breakpoints menu of the Source window to set and delete breakpoints. It 
  4909. contains the following choices: 
  4910.  
  4911.      Set line 
  4912.  
  4913.      Set entry 
  4914.  
  4915.      Set address 
  4916.  
  4917.      Set storage change 
  4918.  
  4919.      Set load occurrence 
  4920.  
  4921.      List -- [Ctrl+X] 
  4922.  
  4923.      Toggle at current line -- space bar 
  4924.  
  4925.      Delete All - delete all breakpoints 
  4926.  
  4927.  You can also set, delete, enable, and disable breakpoints in the prefix area 
  4928.  of the source view. 
  4929.  
  4930.  Related Information 
  4931.  
  4932.  Procedures 
  4933.  Delete All Breakpoints 
  4934.  
  4935.  
  4936. ΓòÉΓòÉΓòÉ 4.1.1.3.1. List ΓòÉΓòÉΓòÉ
  4937.  
  4938. Select Breakpoints->List, or press Ctrl+X from a Source window or the Session 
  4939. Control window, to open the Breakpoints List window. This window lists 
  4940. information on all breakpoints, and lets you enable, disable, set, and delete 
  4941. breakpoints. 
  4942.  
  4943.  
  4944. ΓòÉΓòÉΓòÉ 4.1.1.3.2. Toggle at Current Line ΓòÉΓòÉΓòÉ
  4945.  
  4946. Select Breakpoints->Toggle at current line to set a breakpoint at the current 
  4947. line. If there is already a breakpoint at the current line, this action clears 
  4948. it. 
  4949.  
  4950. Other ways to toggle a breakpoint are to double-click on the line number or to 
  4951. select the line number and press the space bar. 
  4952.  
  4953.  
  4954. ΓòÉΓòÉΓòÉ 4.1.1.4. Monitors Menu ΓòÉΓòÉΓòÉ
  4955.  
  4956. Use the Monitors menu to display one of the debugger monitors. Monitors keep 
  4957. track of the contents of the call stack, registers, storage, and variables, and 
  4958. are updated after each step command or encountered breakpoint. 
  4959.  
  4960. In the Source window, the Monitors menu also includes the Monitor Expression 
  4961. choice, which lets you enter a variable or expression to monitor. 
  4962.  
  4963. You can access the following windows from the Monitors menu: 
  4964.  
  4965.      Call stack 
  4966.  
  4967.      Registers 
  4968.  
  4969.      Storage 
  4970.  
  4971.      Local Variables 
  4972.  
  4973.  
  4974. ΓòÉΓòÉΓòÉ 4.1.1.5. Run Menu ΓòÉΓòÉΓòÉ
  4975.  
  4976. A subset of the following menu choices appears on the Run menu of the Source 
  4977. and Session Control windows: 
  4978.  
  4979.      Step over -- [O] 
  4980.  
  4981.      Step into -- [I] 
  4982.  
  4983.      Step debug -- [D] 
  4984.  
  4985.      Step return -- [T] 
  4986.  
  4987.      Run -- [R] or [Ctrl+R] 
  4988.  
  4989.      Halt -- [SysRq] 
  4990.  
  4991.      Restart 
  4992.  
  4993.      Run to Location -- [L] 
  4994.  
  4995.      Jump to Location -- [N] 
  4996.  
  4997.      Hide Debugger on Run 
  4998.  
  4999.      Check Heap When Stopping (not available for COBOL or PL/I programs) 
  5000.  
  5001.      Thread Enabled 
  5002.  
  5003.  The help for each debugger window contains appropriate links to the menu 
  5004.  choices it supports. 
  5005.  
  5006.  
  5007. ΓòÉΓòÉΓòÉ 4.1.1.6. Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  5008.  
  5009. When you click mouse button 2 [note] in the prefix area of an executable line 
  5010. in a Source window, a popup menu appears with some or all of the following 
  5011. choices: 
  5012.  
  5013.      Run to location -- run to this line 
  5014.  
  5015.      Jump to location -- jump to this line 
  5016.  
  5017.      Set line breakpoint -- set a breakpoint at this line 
  5018.  
  5019.      Clear breakpoint -- clear the breakpoint at the current line 
  5020.  
  5021.      Set breakpoint -- set a breakpoint at the current line 
  5022.  
  5023.      Disable breakpoint -- disable the breakpoint at the current line 
  5024.  
  5025.      Enable breakpoint -- enable the disabled breakpoint at the current line 
  5026.  
  5027.  Executable lines are shown in blue in the prefix area, while non-executable 
  5028.  lines (such as comment lines) are shown in black. 
  5029.  
  5030.  
  5031. ΓòÉΓòÉΓòÉ 4.1.1.7. Code Area Popup Menu ΓòÉΓòÉΓòÉ
  5032.  
  5033. When you click mouse button 2 [note] while your pointer is over text in the 
  5034. source code area of a Source window, a popup menu appears with the choices 
  5035. shown below. The first four choices are used to add the highlighted item to the 
  5036. indicated type of monitor: 
  5037.  
  5038.      Popup expression 
  5039.  
  5040.      Add to private monitor 
  5041.  
  5042.      Add to program monitor 
  5043.  
  5044.      Add to storage monitor 
  5045.  
  5046.      Copy -- copy the highlighted item into the system clipboard 
  5047.  
  5048.      Find -- find the next occurrence of the highlighted item 
  5049.  
  5050.      Find entry -- find an entry point that matches the highlighted item 
  5051.  
  5052.      Set entry breakpoint -- set a breakpoint at the entry that matches the 
  5053.       highlighted item 
  5054.  
  5055.  For the last two choices, if the selected text corresponds to an overloaded 
  5056.  C++ function (one that is implemented with two or more distinct signatures), 
  5057.  an Overloaded dialog opens so that you can select which function signature 
  5058.  corresponds to the function you selected. 
  5059.  
  5060.  
  5061. ΓòÉΓòÉΓòÉ 4.1.1.8. Toolbar Buttons and Shortcut Keys ΓòÉΓòÉΓòÉ
  5062.  
  5063. The Source window provides the following toolbar buttons and shortcut keys: 
  5064.  
  5065.      [O] -- Step over 
  5066.  
  5067.      [I] -- Step into 
  5068.  
  5069.      [D] -- Step debug 
  5070.  
  5071.      [T] -- Step return 
  5072.  
  5073.      [R] -- Run 
  5074.  
  5075.      [SysRq] -- Halt 
  5076.  
  5077.      -- Change views 
  5078.  
  5079.      -- Monitor expression 
  5080.  
  5081.      -- Call stack monitor 
  5082.  
  5083.      -- Registers monitor 
  5084.  
  5085.      -- Storage monitor 
  5086.  
  5087.      [Ctrl+X] -- Breakpoints list 
  5088.  
  5089.      EDIT_BMP -- Edit source 
  5090.  
  5091.      [Ctrl+B] -- Session Control window 
  5092.  
  5093.  
  5094. ΓòÉΓòÉΓòÉ 4.1.1.8.1. Change View ΓòÉΓòÉΓòÉ
  5095.  
  5096. Button: 
  5097.  
  5098. Click on the Change View toolbar button in a Source window to switch between 
  5099. available views for the current object. If the object was compiled with debug 
  5100. information on, Change View cycles you through Source, Disassembly, and Mixed 
  5101. views in that order. 
  5102.  
  5103. Related Information 
  5104.  
  5105. Concepts 
  5106. Source View 
  5107. Disassembly View 
  5108. Mixed View 
  5109.  
  5110.  
  5111. ΓòÉΓòÉΓòÉ 4.1.2. Prefix Area ΓòÉΓòÉΓòÉ
  5112.  
  5113. The prefix area of the Source window is the leftmost column in the main area of 
  5114. the window. In a source view, the values in the prefix area correspond to the 
  5115. line numbers in the current source file. In a disassembly view, they correspond 
  5116. to the hexadecimal addresses of machine language instructions. In a mixed view, 
  5117. both line numbers and hex addresses are shown. 
  5118.  
  5119. You can use the prefix area in the following ways: 
  5120.  
  5121.      To get a bearing on where you are in your file, by using line numbers as 
  5122.       references. 
  5123.  
  5124.      To set and clear breakpoints. Double-click mouse button 1 on a value in 
  5125.       the prefix area, or press the space bar while the cursor is in the prefix 
  5126.       area. This toggles between setting and removing a breakpoint. 
  5127.  
  5128.      To run or jump to a line. Click mouse button 2 [note] over the line's 
  5129.       prefix area, and select either Run to location  or Jump to location from 
  5130.       the popup menu. 
  5131.  
  5132.  Breakpoints are indicated in the prefix area by reverse red highlighting. 
  5133.  
  5134.  
  5135. ΓòÉΓòÉΓòÉ 4.2. Call Stack Window ΓòÉΓòÉΓòÉ
  5136.  
  5137. You can use the Call Stack window to view a list of active functions for a 
  5138. thread, and to raise a Source window to view the code for any of these 
  5139. functions. To display the window, select Monitors->Call stack or click on the 
  5140. pushbutton in the Source window or the Session Control window. 
  5141.  
  5142. Call Stack window Menus, buttons, and shortcut keys 
  5143.  
  5144. Related Information 
  5145.  
  5146. Procedures 
  5147. Use the Call Stack Window 
  5148.  
  5149. Concepts 
  5150. Introduction to the Call Stack Window 
  5151.  
  5152.  
  5153. ΓòÉΓòÉΓòÉ 4.2.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  5154.  
  5155. The Call Stack window provides the following menus, buttons, and shortcut keys: 
  5156.  
  5157.      A popup menu with one item, View 
  5158.  
  5159.      File Options Windows Help 
  5160.  
  5161.     
  5162.  
  5163.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  5164.  
  5165.  
  5166. ΓòÉΓòÉΓòÉ 4.2.1.1. File Menu ΓòÉΓòÉΓòÉ
  5167.  
  5168. The File menu of the Call Stack window contains only one choice, Close 
  5169. Debugger. 
  5170.  
  5171.  
  5172. ΓòÉΓòÉΓòÉ 4.2.1.2. Options Menu ΓòÉΓòÉΓòÉ
  5173.  
  5174. The Options menu of the Call Stack window contains the following choices: 
  5175.  
  5176.      Fonts 
  5177.  
  5178.      Display style 
  5179.  
  5180.      Restore defaults 
  5181.  
  5182.      Tool buttons 
  5183.  
  5184.      Hover help 
  5185.  
  5186.      Infoarea 
  5187.  
  5188.  
  5189. ΓòÉΓòÉΓòÉ 4.2.1.2.1. Display Style ΓòÉΓòÉΓòÉ
  5190.  
  5191. Select Options->Display style to specify what information you want displayed in 
  5192. the Call Stack window, and to specify the growth direction for the window. 
  5193.  
  5194. In the dialog that appears, you can select from the following items (not 
  5195. necessarily in the order shown here): 
  5196.  
  5197.      Entry No Function 
  5198.  
  5199.      Source 
  5200.  
  5201.      Return Address 
  5202.  
  5203.      Recursion 
  5204.  
  5205.      Stack frame pointer (this appears as a register name) 
  5206.  
  5207.  Click on an entry from the list above for help about it. 
  5208.  
  5209.  To select an item in the dialog, position the pointer over it and click mouse 
  5210.  button 1, or press the space bar. (Clicking or pressing again deselects a 
  5211.  selected item.) Selected items appear white on a gray background. To cancel 
  5212.  changes you have made to the window without closing the window, click on 
  5213.  Reset. To restore the debugger defaults, click on Defaults. You can move 
  5214.  through the list by using either the mouse and slide bar or the cursor keys. 
  5215.  
  5216.  
  5217. ΓòÉΓòÉΓòÉ 4.2.1.3. View ΓòÉΓòÉΓòÉ
  5218.  
  5219. Position the pointer over a function in the Call Stack window, click mouse 
  5220. button 2, and select View from the popup menu. A Source window that contains 
  5221. the source code for the function is opened or raised. 
  5222.  
  5223.  
  5224. ΓòÉΓòÉΓòÉ 4.2.1.4. Growth Direction ΓòÉΓòÉΓòÉ
  5225.  
  5226. You can change the order in which functions on the call stack are displayed in 
  5227. the Call Stack window -- with the most recent entry at the top, or at the 
  5228. bottom. You can have the window display the most recently called routine at the 
  5229. top, and the outermost calling routine (usually the main program) at the 
  5230. bottom. If you click on the  button, the order is reversed. 
  5231.  
  5232. To change the default growth direction, select Options->Display style and 
  5233. choose the appropriate growth direction from the dialog. 
  5234.  
  5235.  
  5236. ΓòÉΓòÉΓòÉ 4.2.1.5. Growth Direction Push button ΓòÉΓòÉΓòÉ
  5237.  
  5238. Button:  Menu: Options->Display style (from Call Stack window) 
  5239.  
  5240. The Growth direction command changes the order in which functions on the call 
  5241. stack are displayed (whether the most recently called function appears at the 
  5242. top or bottom). See Growth Direction for more information. 
  5243.  
  5244.  
  5245. ΓòÉΓòÉΓòÉ 4.2.2. Source ΓòÉΓòÉΓòÉ
  5246.  
  5247. The Source item in the Call Stack window lists the name of the source file (or 
  5248. object file) for each active function in the current thread. 
  5249.  
  5250. Select Source from the Options->Display style dialog for the Call Stack window 
  5251. if you want a column showing  source file names to be displayed. Source file 
  5252. names are displayed by default. 
  5253.  
  5254.  
  5255. ΓòÉΓòÉΓòÉ 4.2.3. View Popup Choice ΓòÉΓòÉΓòÉ
  5256.  
  5257. Use the View choice on the Breakpoints List window's popup menu to raise the 
  5258. focus of the Source window containing a  line, address, or function breakpoint: 
  5259.  
  5260.    1. Select the breakpoint in the Breakpoints List window 
  5261.  
  5262.    2. Click mouse button 2 
  5263.  
  5264.    3. Select View from the breakpoint popup menu 
  5265.  
  5266.  You can also raise the focus of the Source window by double-clicking on the 
  5267.  breakpoint with mouse button 1. 
  5268.  
  5269.  The line containing the breakpoint is displayed in a Source window, with its 
  5270.  prefix area selected. If you want to alter the breakpoint, position the 
  5271.  pointer on that line, click mouse button 2 [note], and select an item from the 
  5272.  popup menu. 
  5273.  
  5274.  
  5275. ΓòÉΓòÉΓòÉ 4.2.4. Compile Date/Time ΓòÉΓòÉΓòÉ
  5276.  
  5277. The Compile Date/Time item in the Call Stack window shows the date and time the 
  5278. function was compiled. 
  5279.  
  5280. Select Compile Date/Time from the Options->Display style dialog for the Call 
  5281. Stack window if you want a column showing compilation time stamps to be 
  5282. displayed. 
  5283.  
  5284.  
  5285. ΓòÉΓòÉΓòÉ 4.2.5. Entry No ΓòÉΓòÉΓòÉ
  5286.  
  5287. The Entry No (entry number) item in the Call Stack window is a column of 
  5288. numbers that indicate the order of functions. The function with the highest 
  5289. number is the currently executing function; the one with the next highest 
  5290. number is its caller. Depending on the growth direction of the Call Stack 
  5291. window, entry numbers appear in descending or ascending order. The smallest 
  5292. entry number is always 1. 
  5293.  
  5294. Select Entry No from the Options->Display style dialog for the Call Stack 
  5295. window if you want a column showing entry numbers to be displayed. 
  5296.  
  5297.  
  5298. ΓòÉΓòÉΓòÉ 4.2.6. Function ΓòÉΓòÉΓòÉ
  5299.  
  5300. The Function item in the Call Stack window lists the name of each active 
  5301. function in the current thread, or, where the name is not available, the 
  5302. function's address. To view the source for that function, you can: 
  5303.  
  5304.      Double-click on its name 
  5305.  
  5306.      Select its line and press Enter 
  5307.  
  5308.      Position the pointer over it, click on mouse button 2, and select View 
  5309.       from the popup menu 
  5310.  
  5311.  Select Function from the Options->Display style dialog for the Call Stack 
  5312.  window if you want a column showing function names to be displayed. This 
  5313.  column is displayed by default. 
  5314.  
  5315.  
  5316. ΓòÉΓòÉΓòÉ 4.2.7. Recursion ΓòÉΓòÉΓòÉ
  5317.  
  5318. The Recursion item in the Call Stack window shows the number of times a 
  5319. function has been called and has not yet returned. For example, when a function 
  5320. recursefunc calls itself and you step into recursefunc, the debugger adds a new 
  5321. recursefunc entry to the Call Stack window. The recursion count for the new 
  5322. entry is one greater than for the previous recursefunc entry. 
  5323.  
  5324. Select Recursion from the Options->Display style dialog for the Call Stack 
  5325. window if you want a column showing recursion values to be displayed. 
  5326.  
  5327. Related Information 
  5328.  
  5329. Reference 
  5330. More Information on Recursion 
  5331.  
  5332.  
  5333. ΓòÉΓòÉΓòÉ 4.2.8. Return Address ΓòÉΓòÉΓòÉ
  5334.  
  5335. The Return address item in the Call Stack window shows the hexadecimal address 
  5336. of the instruction that execution will return to, provided the indicated 
  5337. function has called another function and that called function has not yet 
  5338. returned. 
  5339.  
  5340.  
  5341. ΓòÉΓòÉΓòÉ 4.2.9. Stack Frame Pointers ΓòÉΓòÉΓòÉ
  5342.  
  5343. These entries in the Call Stack window are typically the names of processor 
  5344. registers for the processor on which the program being debugged is executing. 
  5345. The available registers are those generally associated with the stack. For 
  5346. example, on Intel processors, the stack pointer (ESP) and base pointer (EBP) 
  5347. are used, respectively, to keep track of the current function's stack frame and 
  5348. the calling function's stack frame. 
  5349.  
  5350. From the Options->Display style dialog for the Call Stack window, select the 
  5351. processor registers whose contents you want displayed. 
  5352.  
  5353.  
  5354. ΓòÉΓòÉΓòÉ 4.2.10. Size ΓòÉΓòÉΓòÉ
  5355.  
  5356. The  Size item in the Call Stack window is the size, in bytes, of the stack 
  5357. frame for the called function. A function's stack frame includes the address to 
  5358. return to when the function completes, a pointer to the previous function's 
  5359. stack frame, and any local variables or arrays declared in the calling 
  5360. function. Given that the return address and previous function pointer are 
  5361. fixed-size components of a stack frame, the stack frame size provides an 
  5362. indication of how much local data is declared by the function. 
  5363.  
  5364. In C++, because the heap, not the stack frame, contains the storage for 
  5365. dynamically allocated local variables, only the pointers to such variables take 
  5366. up stack frame space. 
  5367.  
  5368. Select Size from the Options->Display style dialog for the Call Stack window if 
  5369. you want a column showing the size of the stack frame. 
  5370.  
  5371.  
  5372. ΓòÉΓòÉΓòÉ 4.3. Registers Monitor ΓòÉΓòÉΓòÉ
  5373.  
  5374. Use the Registers monitor to view or modify the contents of the registers 
  5375. monitored for your program. The debugger displays a separate Registers monitor 
  5376. for each thread. See the following topics for more information: 
  5377.  
  5378.      Introduction 
  5379.  
  5380.      How to use the Registers monitor 
  5381.  
  5382.      Menus, buttons, and shortcut keys 
  5383.  
  5384.  
  5385. ΓòÉΓòÉΓòÉ 4.3.1. Menus, Buttons, Shortcut Keys ΓòÉΓòÉΓòÉ
  5386.  
  5387. The Registers monitor provides the following menus, buttons, and shortcut keys: 
  5388.  
  5389.      File Options Windows Help 
  5390.  
  5391.     
  5392.  
  5393.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  5394.  
  5395.  
  5396. ΓòÉΓòÉΓòÉ 4.3.1.1. File Menu ΓòÉΓòÉΓòÉ
  5397.  
  5398. The File menu of the Registers monitor contains only one choice, Close 
  5399. Debugger. 
  5400.  
  5401.  
  5402. ΓòÉΓòÉΓòÉ 4.3.1.2. Options Menu ΓòÉΓòÉΓòÉ
  5403.  
  5404. The Options menu of the Registers monitor contains the following choices: 
  5405.  
  5406.      Fonts 
  5407.  
  5408.      Display style 
  5409.  
  5410.      Restore defaults 
  5411.  
  5412.      Tool buttons 
  5413.  
  5414.      Hover help 
  5415.  
  5416.      Infoarea 
  5417.  
  5418.  
  5419. ΓòÉΓòÉΓòÉ 4.3.1.2.1. Display Style ΓòÉΓòÉΓòÉ
  5420.  
  5421. Use the Display Style dialog to customize how the information in your Registers 
  5422. monitor is displayed. You can choose what groups of registers are displayed in 
  5423. the window, whether groups are laid out in columns (vertical orientation) or 
  5424. rows (horizontal orientation), whether or not the name of each group appears 
  5425. above its column or row, and whether the positions of split bars between rows 
  5426. or columns are saved. 
  5427.  
  5428. This dialog has the following group boxes and check boxes: 
  5429.  
  5430.  Groups    Use this selection list to choose the groups of registers you want 
  5431.            to display. (Available groups are dependent on the processor on 
  5432.            which the application being debugged is running.) To select an item, 
  5433.            position the pointer over it and click mouse button 1 or press the 
  5434.            space bar. Repeating this action deselects the item. Selected items 
  5435.            appear white on a gray background.
  5436.  
  5437.            You can move through the list by using the mouse and slide bar, or 
  5438.            by using the cursor up and down keys. 
  5439.  
  5440.  Orientation Select Vertical if you want each group of registers to display in 
  5441.            its own column, or select Horizontal if you want it to display in 
  5442.            its own row. (A row can have multiple lines.) 
  5443.  
  5444.  Column titles Select this check box if you want the title of each group of 
  5445.            registers to appear above its group. 
  5446.  
  5447.  Save split bars Select this check box if you want to save the positions of 
  5448.            split bars between rows or columns of registers, from one debugging 
  5449.            session of your program to the next. 
  5450.  
  5451.  To cancel changes you have made without closing the dialog, click on Reset. To 
  5452.  restore the debugger defaults, click on Defaults. 
  5453.  
  5454.  
  5455. ΓòÉΓòÉΓòÉ 4.4. Storage Monitor ΓòÉΓòÉΓòÉ
  5456.  
  5457. Use the Storage monitor to view and update the contents of storage areas used 
  5458. by your program. 
  5459.  
  5460. See the following topics for more information: 
  5461.  
  5462.      Introduction to the Storage monitor 
  5463.  
  5464.      Menus, buttons, and shortcut keys 
  5465.  
  5466.  
  5467. ΓòÉΓòÉΓòÉ 4.4.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  5468.  
  5469. The Storage monitor provides the following menus, buttons, and shortcut keys: 
  5470.  
  5471.      File Options Windows Help 
  5472.  
  5473.     
  5474.  
  5475.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  5476.  
  5477.  
  5478. ΓòÉΓòÉΓòÉ 4.4.1.1. File Menu ΓòÉΓòÉΓòÉ
  5479.  
  5480. The File menu of the Storage monitor contains only one choice, Close Debugger. 
  5481.  
  5482.  
  5483. ΓòÉΓòÉΓòÉ 4.4.1.2. Options Menu ΓòÉΓòÉΓòÉ
  5484.  
  5485. The Options menu of the Storage monitor contains the following choices: 
  5486.  
  5487.      Fonts 
  5488.  
  5489.      Display style 
  5490.  
  5491.      Monitor expression 
  5492.  
  5493.      Restore defaults 
  5494.  
  5495.      Tool buttons 
  5496.  
  5497.      Hover help 
  5498.  
  5499.      Infoarea 
  5500.  
  5501.  
  5502. ΓòÉΓòÉΓòÉ 4.4.1.2.1. Display Style ΓòÉΓòÉΓòÉ
  5503.  
  5504. Use the Display style dialog to specify what information is shown in the 
  5505. Storage monitor, what addressing scheme is used, how many columns of bytes are 
  5506. displayed on each line, and whether column titles are shown. 
  5507.  
  5508. To choose the desired style from the Content Style list, scroll through the 
  5509. list using the cursor keys, or position the pointer over the item you want; 
  5510. then click mouse button 1. To cancel changes you have made without closing the 
  5511. dialog, click on Reset. To restore the debugger defaults, click on Defaults. 
  5512.  
  5513. For information on the other items in the Display style dialog, click on the 
  5514. links below: 
  5515.  
  5516.      Address style 
  5517.  
  5518.      Columns per line 
  5519.  
  5520.      Column titles 
  5521.  
  5522.  
  5523. ΓòÉΓòÉΓòÉ 4.4.1.2.1.1. Address Style ΓòÉΓòÉΓòÉ
  5524.  
  5525. For debuggee programs running on Intel processors, you can select an address 
  5526. style of either flat, segmented (shown as '16:16'), or combined (shown as 'Flat 
  5527. and 16:16'). 
  5528.  
  5529.  
  5530. ΓòÉΓòÉΓòÉ 4.4.1.2.1.2. Columns per Line ΓòÉΓòÉΓòÉ
  5531.  
  5532. Enter a number, or use the arrows beside this field, to specify the number of 
  5533. Columns per line of storage you want displayed. The size of a single column is 
  5534. based on the content style you select. For example, if you select Hex and 
  5535. character, a column is a single byte; if you select 16-bit integer, a column is 
  5536. two bytes. 
  5537.  
  5538.  
  5539. ΓòÉΓòÉΓòÉ 4.4.1.2.1.3. Column Titles ΓòÉΓòÉΓòÉ
  5540.  
  5541. Select this check box if you want a title line to appear above the storage area 
  5542. of the Storage monitor. When you choose Column Titles, the Storage monitor 
  5543. displays the address style (flat or segmented) above the column showing 
  5544. addresses, and displays the offset of the displayed range above the column 
  5545. showing storage contents. 
  5546.  
  5547.  
  5548. ΓòÉΓòÉΓòÉ 4.4.1.2.1.4. Display String Literals in ASCII or EBCDIC ΓòÉΓòÉΓòÉ
  5549.  
  5550. You can view string literals in the Storage monitor in either ASCII or EBCDIC. 
  5551. The default is ASCII for workstation applications. To change the default 
  5552. representation, select Options->Display style and choose the appropriate 
  5553. representation: 
  5554.  
  5555.      HEX and EBCDIC 
  5556.  
  5557.      HEX and ASCII 
  5558.  
  5559.  
  5560. ΓòÉΓòÉΓòÉ 4.4.1.2.2. Monitor Expression in Storage ΓòÉΓòÉΓòÉ
  5561.  
  5562. Select Options->Monitor Expression from the Storage monitor to enter the 
  5563. variable or expression you want to monitor. 
  5564.  
  5565. The storage monitor is updated to show the requested storage address and 
  5566. contents. This saves you from having to scroll up and down through the 
  5567. monitor's storage pane if you know what storage you want to look at. 
  5568.  
  5569. For COBOLand PL/I, if a variable is added to the storage monitor, the storage 
  5570. monitor opens at the address of that variable. If the variable is of type 
  5571. POINTER, it opens at the address specified by the contents of that variable. 
  5572.  
  5573. For C++, given the code: 
  5574.  
  5575. int x=12;
  5576. int *y=&x;
  5577.  
  5578. to view the storage for x, you can enter either &x or y. 
  5579.  
  5580. Note: For C++, if you enter the name of a variable that is not a pointer, or an 
  5581. expression that is not related to pointers, the debugger shows storage 
  5582. beginning at the address corresponding to the value of the variable or 
  5583. expression. This storage may not have any connection to the variable itself or 
  5584. to the program you are debugging. Normally you would only use variables or 
  5585. expressions that evaluate to an address (for example, pointers, array names, or 
  5586. expressions containing pointers). 
  5587.  
  5588. Select the Enabled monitor check box if the expression you are entering 
  5589. evaluates to a dynamically changing address and you want the Storage monitor to 
  5590. show the storage for that changing address. For instance, if you enter a 
  5591. pointer as part of the expression, and the address contained in that pointer 
  5592. changes dynamically, the Storage monitor will display a different location in 
  5593. storage each time the pointer changes. 
  5594.  
  5595. Related Information 
  5596.  
  5597. Concepts 
  5598. Expressions 
  5599.  
  5600.  
  5601. ΓòÉΓòÉΓòÉ 4.4.1.3. Single-Precision Floating-Point Pushbutton ΓòÉΓòÉΓòÉ
  5602.  
  5603. Button:  Menu: Select Options->Display style from the Storage monitor, then 
  5604. select Single-precision floating-point float from the Content style list. 
  5605.  
  5606. This causes storage in the Storage monitor to be displayed as a series of 
  5607. single-precision floating-point numbers. Each number begins on a four-byte 
  5608. boundary. 
  5609.  
  5610.  
  5611. ΓòÉΓòÉΓòÉ 4.4.1.4. Double-Precision Floating-Point Pushbutton ΓòÉΓòÉΓòÉ
  5612.  
  5613. Button:  Menu: Select Options->Display style from the Storage monitor, then 
  5614. select Double-precision floating-point float from the Content style list. 
  5615.  
  5616. This causes storage in the Storage monitor to be displayed as a series of 
  5617. double-precision floating-point numbers. Each number begins on an eight-byte 
  5618. boundary. 
  5619.  
  5620.  
  5621. ΓòÉΓòÉΓòÉ 4.4.1.5. 32-Bit Unsigned Pushbutton ΓòÉΓòÉΓòÉ
  5622.  
  5623. Button:  Menu: Select Options->Display style (from the Storage monitor), then 
  5624. select 32-bit unsigned integer from the Content style list. 
  5625.  
  5626. This causes storage in the Storage monitor to be displayed as a series of 
  5627. 32-bit unsigned integers. Each number begins on a four-byte boundary. 
  5628.  
  5629.  
  5630. ΓòÉΓòÉΓòÉ 4.4.1.6. 32-bit Signed Pushbutton ΓòÉΓòÉΓòÉ
  5631.  
  5632. Button:  Menu: Select Options->Display style (from Storage monitor) then select 
  5633. 32-bit signed integer from the Content style list. 
  5634.  
  5635. This causes storage in the Storage monitor to be displayed as a series of 
  5636. 32-bit signed integers. Each number begins on a four-byte boundary. 
  5637.  
  5638.  
  5639. ΓòÉΓòÉΓòÉ 4.4.1.7. Character Pushbutton ΓòÉΓòÉΓòÉ
  5640.  
  5641. Button:  Menu: Select Options->Display style (from the Storage monitor) then 
  5642. select Character from the Content style list. 
  5643.  
  5644. This causes storage in the Storage monitor to be displayed as a series of 
  5645. characters. Alphanumeric characters and some punctuation characters are 
  5646. displayed normally; other characters are shown only as small dots. To view the 
  5647. value of a nondisplayed character, change to Hex and character display style 
  5648. and look for the character's hexadecimal value. 
  5649.  
  5650.  
  5651. ΓòÉΓòÉΓòÉ 4.4.1.8. Hex and Character Push button ΓòÉΓòÉΓòÉ
  5652.  
  5653. Button:  Menu: Select Options->Display style from the Storage monitor, then 
  5654. select Hex and character from the Content style list. 
  5655.  
  5656. This causes storage in the Storage monitor to be displayed in columns of 
  5657. hexadecimal data, followed by a single column of characters. In the character 
  5658. section, alphanumeric characters and punctuation characters are displayed 
  5659. normally; other characters are shown only as small dots. 
  5660.  
  5661. When storage is displayed in hex and character data, the characters can be in 
  5662. either ASCII or EBCDIC format depending on the platform the debugger is running 
  5663. on. See Display String Literals in ASCII or EBCDIC for information on how to 
  5664. change the default character set. 
  5665.  
  5666.  
  5667. ΓòÉΓòÉΓòÉ 4.5. Breakpoints List Window ΓòÉΓòÉΓòÉ
  5668.  
  5669. Use the Breakpoints List window to set, delete, enable, disable, or modify the 
  5670. characteristics of  breakpoints. See the following topics for more information: 
  5671.  
  5672.      Introduction to the Breakpoints List window 
  5673.  
  5674.      Menus, buttons, and shortcut keys 
  5675.  
  5676.  
  5677. ΓòÉΓòÉΓòÉ 4.5.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  5678.  
  5679. The Breakpoint List window provides the following menus, buttons, and shortcut 
  5680. keys: 
  5681.  
  5682.      File Edit Set Options Windows Help 
  5683.  
  5684.     
  5685.  
  5686.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  5687.  
  5688.  It also provides a popup menu. 
  5689.  
  5690.  
  5691. ΓòÉΓòÉΓòÉ 4.5.1.1. File Menu ΓòÉΓòÉΓòÉ
  5692.  
  5693. The File menu of the Breakpoints List window contains only one choice, Close 
  5694. Debugger. 
  5695.  
  5696.  
  5697. ΓòÉΓòÉΓòÉ 4.5.1.2. Edit Menu ΓòÉΓòÉΓòÉ
  5698.  
  5699. Use the Edit menu of the Breakpoint List window to delete, change, disable, or 
  5700. enable breakpoints that have already been set. This menu contains the following 
  5701. choices: 
  5702.  
  5703.      Delete 
  5704.  
  5705.      Disable (shown only when the highlighted breakpoint is enabled) 
  5706.  
  5707.      Enable (shown only when the highlighted breakpoint is disabled) 
  5708.  
  5709.      Modify 
  5710.  
  5711.      Delete all 
  5712.  
  5713.      Disable all 
  5714.  
  5715.      Enable all 
  5716.  
  5717.  
  5718. ΓòÉΓòÉΓòÉ 4.5.1.2.1. Disable ΓòÉΓòÉΓòÉ
  5719.  
  5720. To disable the currently selected breakpoint, choose Edit->Disable from the 
  5721. Breakpoints List window, or place the pointer over the breakpoint you want to 
  5722. disable. Then click on mouse button 2, and select Disable. (The breakpoint must 
  5723. be enabled for this menu choice to be shown.) 
  5724.  
  5725. When you disable a breakpoint, it does not stop execution when the program is 
  5726. run. You can later enable it by selecting Edit->Enable from the Breakpoints 
  5727. List window, or by clicking mouse button 2 on it and selecting Enable from the 
  5728. popup menu. You can also enable all disabled breakpoints by selecting 
  5729. Edit->Enable all. 
  5730.  
  5731. Related Information 
  5732.  
  5733. Procedures 
  5734. Enable and Disable Breakpoints 
  5735.  
  5736.  
  5737. ΓòÉΓòÉΓòÉ 4.5.1.2.2. Enable ΓòÉΓòÉΓòÉ
  5738.  
  5739. To enable the currently selected breakpoint, choose Edit->Enable from the 
  5740. Breakpoints List window, or place the pointer over the breakpoint, click mouse 
  5741. button 2, and select Enable. (The breakpoint must be disabled for this menu 
  5742. choice to be shown.) 
  5743.  
  5744. Disabled breakpoints are remembered by the debugger but do not cause execution 
  5745. to stop when the program runs. When you enable a disabled breakpoint, the 
  5746. debugger stops program execution whenever the breakpoint is encountered. 
  5747.  
  5748. Related Information 
  5749.  
  5750. Procedures 
  5751. Enable and Disable Breakpoints 
  5752.  
  5753.  
  5754. ΓòÉΓòÉΓòÉ 4.5.1.2.3. Modify ΓòÉΓòÉΓòÉ
  5755.  
  5756. Select Edit->Modify from the Breakpoints List window to modify settings for the 
  5757. selected breakpoint (for example, the frequency with which it causes execution 
  5758. to stop, or what threads it applies to). After you have made the desired 
  5759. changes, click on OK. 
  5760.  
  5761. If you click on Set instead, the changes are applied and the dialog stays open. 
  5762. Subsequent changes you make within the dialog are applied to the same 
  5763. breakpoint. 
  5764.  
  5765. Related Information 
  5766.  
  5767. Procedures 
  5768. Modify Breakpoint Characteristics 
  5769.  
  5770.  
  5771. ΓòÉΓòÉΓòÉ 4.5.1.2.4. Delete all ΓòÉΓòÉΓòÉ
  5772.  
  5773. Choose Edit->Delete all from the Breakpoints List menu bar to delete all 
  5774. breakpoints in the monitor. 
  5775.  
  5776. Note: If you want to temporarily disable all breakpoints and then later 
  5777. re-enable them, use Edit->Disable all instead. 
  5778.  
  5779.  
  5780. ΓòÉΓòÉΓòÉ 4.5.1.2.5. Disable All ΓòÉΓòÉΓòÉ
  5781.  
  5782. Choose Edit->Disable all from the Breakpoints List window to disable all 
  5783. breakpoints. When you disable breakpoints, the debugger remembers where they 
  5784. are set, but does not use them to stop execution when the program is run. You 
  5785. can later enable them all by selecting Edit->Enable all. You can enable 
  5786. individual breakpoints by clicking with mouse button 2 on each breakpoint you 
  5787. want to enable, and selecting Enable from the popup menu. 
  5788.  
  5789.  
  5790. ΓòÉΓòÉΓòÉ 4.5.1.2.6. Enable All ΓòÉΓòÉΓòÉ
  5791.  
  5792. Choose Edit->Enable all from the Breakpoints List window to enable all 
  5793. breakpoints that have been disabled. 
  5794.  
  5795.  
  5796. ΓòÉΓòÉΓòÉ 4.5.1.3. Set Menu ΓòÉΓòÉΓòÉ
  5797.  
  5798. Use the Set menu of the Breakpoint List window to set various kinds of 
  5799. breakpoints through a dialog. This menu contains the following choices: 
  5800.  
  5801.      Set line 
  5802.  
  5803.      Set entry 
  5804.  
  5805.      Set address 
  5806.  
  5807.      Set storage change 
  5808.  
  5809.      Set load occurrence 
  5810.  
  5811.  
  5812. ΓòÉΓòÉΓòÉ 4.5.1.3.1. Set Line ΓòÉΓòÉΓòÉ
  5813.  
  5814. Select Set->Set Line, or select Line breakpoint from the prefix area popup 
  5815. menu, to set a line breakpoint at a particular line number. In the dialog that 
  5816. appears, you can specify what executable and source file you want to set the 
  5817. breakpoint in. If the source code consists of several files (that is, if one or 
  5818. more files include other files) you can select which source file the breakpoint 
  5819. should be set in from the Include File pulldown list. 
  5820.  
  5821. Type a line number in the Line entry field. The breakpoint is set on that line 
  5822. number. 
  5823.  
  5824. More information is available on the following entry field items: 
  5825.  
  5826.      Thread 
  5827.  
  5828.      Defer breakpoint 
  5829.  
  5830.      Frequency 
  5831.  
  5832.      Expression 
  5833.  
  5834.  
  5835. ΓòÉΓòÉΓòÉ 4.5.1.3.2. Set Function ΓòÉΓòÉΓòÉ
  5836.  
  5837. Select Set->Set Function to set a breakpoint at the start of a function. Select 
  5838. Set->Set Entry to set a breakpoint at an entry point. In the dialog that 
  5839. appears, type the name of the function in the Function entry field, or select 
  5840. the List button and click on the function you want. You can also specify what 
  5841. executable and source file you want to set the breakpoint in. If the source 
  5842. code consists of several files (that is, if one or more files include other 
  5843. files) select which source file to set the breakpoint in from the Include File 
  5844. pulldown list. 
  5845.  
  5846. More information is available on the following entry field items: 
  5847.  
  5848.      Thread 
  5849.  
  5850.      Defer breakpoint 
  5851.  
  5852.      Frequency 
  5853.  
  5854.      Expression 
  5855.  
  5856.  If the function you specified is an overloaded C++ function (your program 
  5857.  contains two or more functions with the same name but different signatures), 
  5858.  an Overloaded dialog appears, displaying a list of the overloads of the 
  5859.  function. Choose the desired one from the list. 
  5860.  
  5861.  
  5862. ΓòÉΓòÉΓòÉ 4.5.1.3.3. Set Address ΓòÉΓòÉΓòÉ
  5863.  
  5864. Use the Set Address choice to set a breakpoint at a specific address. When the 
  5865. instruction at the specified address is executed, the program will stop. 
  5866.  
  5867. When you click on Set Address, an Address Breakpoint dialog opens. In the 
  5868. Address or Expression entry field, you can type the address, or an expression 
  5869. that evaluates to a valid execution address. 
  5870.  
  5871. A valid execution address is the beginning address of a machine language 
  5872. instruction. For  Intel 32-bit code, you must enter the address in flat format. 
  5873. For 16-bit code (debuggee on OS/2 only), you can enter it in either flat or 
  5874. segmented format. 
  5875.  
  5876. For example, to set an address breakpoint for the address 0x000A1FCC, type 
  5877. 0X000A1FCC or A1FCC. In a PL/I program you can also enter the address in the 
  5878. form '000A1FCC'X.In a COBOL program you can also enter the address in the form 
  5879. X'000A1FCC'. Note that the PL/I and COBOL specific syntaxes both require an 
  5880. even number of hexadecimal digits. To set the segmented address 0x0060:1F7C, 
  5881. type 0X0060:1F7C or 60:1F7C. 
  5882.  
  5883. COBOL and PL/I: You can also specify a POINTER variable instead of a 
  5884. hexadecimal constant to specify an address. 
  5885.  
  5886. C++: Expressions that evaluate to an address are C++ expressions such as: 
  5887.  
  5888.      An expression containing an address, an addition or subtraction operator, 
  5889.       and a value. For example: A1FCC+17. 
  5890.  
  5891.      A pointer-to-function that points to a valid execution address. For 
  5892.       example, after you have stepped over the assignment to ptf1 in the 
  5893.       following program: 
  5894.  
  5895.                  void howdy() { printf('Hello there\n'); }
  5896.                  void main() {
  5897.                    void (*ptf1) ();
  5898.                    ptf1=howdy;
  5899.                    // ...
  5900.                  }
  5901.  
  5902.       you could enter ptf1 as the expression, and the breakpoint would be set 
  5903.       on entry to the function howdy(). (Before you have stepped over the 
  5904.       assignment, ptf1 does not point to a valid function and so you could not 
  5905.       use it in an address expression here.) 
  5906.  
  5907.  More information is available on the following entry field items: 
  5908.  
  5909.      Thread 
  5910.  
  5911.      Frequency 
  5912.  
  5913.      Expression 
  5914.  
  5915.  Related Information 
  5916.  
  5917.  Reference 
  5918.  Expressions Supported 
  5919.  
  5920.  
  5921. ΓòÉΓòÉΓòÉ 4.5.1.3.4. Set Storage Change ΓòÉΓòÉΓòÉ
  5922.  
  5923. Use the Set storage change choice to cause execution to stop whenever storage 
  5924. at a specific address is written to. Execution stops even if the value written 
  5925. to storage is the value that was already present at that address. You can set 
  5926. up to four breakpoints. 
  5927.  
  5928. Caution: If you set a storage change breakpoint for an address that is on the 
  5929. call stack, be sure to remove the breakpoint before leaving the routine 
  5930. associated with it. Otherwise, when you return from the routine, the routine's 
  5931. stack frame will be removed from the stack, but the breakpoint will still be 
  5932. active. Any other routine that gets loaded on the stack will then contain the 
  5933. breakpoint. 
  5934.  
  5935. In the Address or Expression entry field, you can type the address or a 
  5936. variable name or expression that evaluates to a valid address. 
  5937.  
  5938. C++: You can also enter the address of a variable, by preceding the variable 
  5939. name with an ampersand (for example, &myVariable). 
  5940.  
  5941. COBOLand PL/I: For POINTER variables, the contents of the variable are used as 
  5942. the address. For all other variables, the address of the variable is used. 
  5943.  
  5944. Note: If you type FEEDBEEF in the Address or expression entry field, and there 
  5945. is a variable named FEEDBEEF, the debugger will interpret the entry as the 
  5946. variable FEEDBEEF, not the hex value FEEDBEEF. 
  5947.  
  5948. More information is available on the following fields: 
  5949.  
  5950.      Bytes to monitor 
  5951.  
  5952.      Thread 
  5953.  
  5954.      Frequency 
  5955.  
  5956.  Related Information 
  5957.  
  5958.  Reference 
  5959.  Expressions Supported 
  5960.  Valid Addresses and Expressions 
  5961.  
  5962.  
  5963. ΓòÉΓòÉΓòÉ 4.5.1.3.4.1. Bytes to Monitor ΓòÉΓòÉΓòÉ
  5964.  
  5965. Select a value from Bytes to Monitor on the Storage Change Breakpoint dialog to 
  5966. tell the debugger the number of bytes you want it to monitor. The valid range 
  5967. depends on the operating system the debuggee is running on. 
  5968.  
  5969. On Intel platforms, you can choose 1, 2, or 4 bytes. The 2-byte range must be 
  5970. aligned on a word boundary, and the 4-byte range must be aligned on a 
  5971. double-word boundary. 
  5972.  
  5973.  
  5974. ΓòÉΓòÉΓòÉ 4.5.1.3.4.2. Set Load Occurrence ΓòÉΓòÉΓòÉ
  5975.  
  5976. Select Set Load Occurrence to set a breakpoint that will stop execution when 
  5977. the DLL you specify has been loaded.  In the Load Occurrence Breakpoint dialog, 
  5978. type the name of the DLL in the DLL File Name entry field. Execution stops when 
  5979. the DLL is loaded. 
  5980.  
  5981. For information on other fields in this dialog, see the following: 
  5982.  
  5983.      Thread 
  5984.  
  5985.      Frequency (From/To/Every) 
  5986.  
  5987.  
  5988. ΓòÉΓòÉΓòÉ 4.5.1.4. Options Menu ΓòÉΓòÉΓòÉ
  5989.  
  5990. The Options menu of the Breakpoints List window contains the following choices: 
  5991.  
  5992.      Fonts 
  5993.  
  5994.      Display style 
  5995.  
  5996.      Sort 
  5997.  
  5998.      Restore defaults 
  5999.  
  6000.      Tool buttons 
  6001.  
  6002.      Hover help 
  6003.  
  6004.      Infoarea 
  6005.  
  6006.  
  6007. ΓòÉΓòÉΓòÉ 4.5.1.4.1. Display Style ΓòÉΓòÉΓòÉ
  6008.  
  6009. You can change the way items in the Breakpoint List window are displayed by 
  6010. selecting Options->Display style, then selecting those items you want from the 
  6011. Select Items list in the Display Style dialog. 
  6012.  
  6013. The Select Items list in the Display Style dialog contains the following items: 
  6014.  
  6015.  Type      The type of breakpoint, for example, Line or Address 
  6016.  
  6017.  Executable The name of the executable file the breakpoint applies to 
  6018.  
  6019.  Source    The name of the compilation unit the breakpoint applies to 
  6020.  
  6021.  File      The source file 
  6022.  
  6023.  Function  The function containing the breakpoint 
  6024.  
  6025.  Line      The source code line containing the breakpoint 
  6026.  
  6027.  Address   The address of the breakpoint 
  6028.  
  6029.  State     Whether the breakpoint is enabled or disabled 
  6030.  
  6031.  Status    Whether the breakpoint is active or deferred (a deferred breakpoint 
  6032.            is a breakpoint set in a DLL that has not yet been loaded) 
  6033.  
  6034.  Thread    What threads the breakpoint applies to 
  6035.  
  6036.  Expression An optional expression that must evaluate to true for the 
  6037.            breakpoint to cause execution to stop. 
  6038.  
  6039.  From      The first encounter of the breakpoint that causes execution to stop. 
  6040.            For example, if this value is set to 5, each run command could, if 
  6041.            no other breakpoints are encountered and the program does not 
  6042.            terminate, pass over the breakpoint four times before stopping the 
  6043.            fifth time. 
  6044.  
  6045.  To        The last encounter of the breakpoint that causes execution to stop. 
  6046.  
  6047.  Every     The frequency at which encounters of the breakpoint cause execution 
  6048.            to stop. For example, if Every is set to 2, the breakpoint causes 
  6049.            execution to stop every other time the breakpoint is encountered. 
  6050.  
  6051.  If you select the Reset pushbutton any changes you have made in the Display 
  6052.  Style dialog are discarded, and the dialog is refreshed to show the display 
  6053.  style in effect when you opened the dialog. If you select Default the default 
  6054.  items are displayed in the Breakpoint List window. 
  6055.  
  6056.  
  6057. ΓòÉΓòÉΓòÉ 4.5.1.4.2. Sort ΓòÉΓòÉΓòÉ
  6058.  
  6059. You can change the order of items in the Breakpoint List window by selecting 
  6060. Options->Sort, then selecting the item you want the debugger to sort on from 
  6061. the Select Item list in the Sort dialog. By default, breakpoints are sorted by 
  6062. line number. 
  6063.  
  6064.  
  6065. ΓòÉΓòÉΓòÉ 4.5.1.5. Defer Breakpoint ΓòÉΓòÉΓòÉ
  6066.  
  6067. Select the Defer breakpoint check box from within the Line Breakpoint dialog if 
  6068. you want to set a line breakpoint in a DLL that is not currently loaded. 
  6069.  
  6070. When a DLL in which you have set a deferred breakpoint is loaded, the 
  6071. breakpoint state changes from deferred to active. When the DLL is freed, the 
  6072. breakpoint state changes back to deferred. 
  6073.  
  6074. If you enter an incorrect source, file, or line number, the debugger will be 
  6075. unable to activate the breakpoint when the DLL is loaded, and the breakpoint 
  6076. will remain in the deferred state. 
  6077.  
  6078. Note: You cannot set a deferred breakpoint in a preloaded DLL, but you can set 
  6079. one in a program that has some preloaded DLLs and some dynamically loaded ones. 
  6080.  
  6081. Related Information 
  6082.  
  6083. Procedures 
  6084. Set a Deferred Breakpoint 
  6085.  
  6086.  
  6087. ΓòÉΓòÉΓòÉ 4.5.2. Thread ΓòÉΓòÉΓòÉ
  6088.  
  6089. The Thread pulldown list in a Set breakpoint or Modify breakpoint dialog lets 
  6090. you choose what threads to activate the breakpoint in. To select a thread ID 
  6091. from the list, select the List button, then highlight the thread where you want 
  6092. to set the breakpoint. 
  6093.  
  6094.  
  6095. ΓòÉΓòÉΓòÉ 4.5.3. Defer Breakpoint ΓòÉΓòÉΓòÉ
  6096.  
  6097. Select the Defer breakpoint check box if you want to set a function breakpoint 
  6098. in a DLL that is not currently loaded. 
  6099.  
  6100. If you set a deferred function breakpoint on a C++ function, and that function 
  6101. is overloaded, the debugger sets the breakpoint in all of the overloaded 
  6102. functions when the DLL is loaded. 
  6103.  
  6104. When a DLL in which you have set a deferred breakpoint is loaded, the 
  6105. breakpoint state changes from deferred to active. When the DLL is freed, the 
  6106. breakpoint state changes back to deferred. 
  6107.  
  6108. If you enter an incorrect source, file, or function, the debugger will be 
  6109. unable to activate the breakpoint when the DLL is loaded, and the breakpoint 
  6110. will remain in the deferred state. 
  6111.  
  6112. Note: You cannot set a deferred breakpoint in a preloaded DLL, but you can set 
  6113. one in a program that has some preloaded DLLs and some dynamically loaded ones. 
  6114.  
  6115.  
  6116. ΓòÉΓòÉΓòÉ 4.5.4. Frequency ΓòÉΓòÉΓòÉ
  6117.  
  6118. Use the Frequency fields to tell the debugger when to stop on a breakpoint and 
  6119. when to skip it. The debugger keeps track of how many times each breakpoint is 
  6120. encountered. The fields in this section tell the debugger on which encounter of 
  6121. a breakpoint the debugger should first stop, how often it should stop, and on 
  6122. which encounter the debugger should no longer stop. 
  6123.  
  6124. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6125. ΓöéEntry field                           ΓöéPurpose                              Γöé
  6126. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6127. ΓöéFrom                                  ΓöéEnter the first breakpoint encounter Γöé
  6128. Γöé                                      Γöéyou want the debugger to stop on. ForΓöé
  6129. Γöé                                      Γöéexample, if you want the debugger to Γöé
  6130. Γöé                                      Γöéskip over the breakpoint the first   Γöé
  6131. Γöé                                      Γöéfive times it is encountered, enter  Γöé
  6132. Γöé                                      Γöé'6'.                                 Γöé
  6133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6134. ΓöéTo                                    ΓöéEnter the last breakpoint encounter  Γöé
  6135. Γöé                                      Γöéyou want the debugger to stop on. ForΓöé
  6136. Γöé                                      Γöéexample, if you want it to start     Γöé
  6137. Γöé                                      Γöéignoring the breakpoint after the    Γöé
  6138. Γöé                                      Γöé20th encounter, enter '20'. To have  Γöé
  6139. Γöé                                      Γöéit always stop on the breakpoint,    Γöé
  6140. Γöé                                      Γöéenter 'Infinity'.                    Γöé
  6141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6142. ΓöéEvery                                 ΓöéEnter the frequency with which you   Γöé
  6143. Γöé                                      Γöéwant the debugger to stop on this    Γöé
  6144. Γöé                                      Γöébreakpoint. For example, if you want Γöé
  6145. Γöé                                      Γöéit to stop on only one out of every  Γöé
  6146. Γöé                                      Γöéfour it encounters, enter '4'.       Γöé
  6147. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6148.  
  6149.  
  6150. ΓòÉΓòÉΓòÉ 4.5.5. Expression ΓòÉΓòÉΓòÉ
  6151.  
  6152. If you are setting a line breakpoint, address breakpoint or function breakpoint 
  6153. in a C++ program,  or a line or address breakpoint in a COBOL or PL/I program, 
  6154. you can type an expression into the Expression entry field in a Set breakpoint 
  6155. or Modify breakpoint dialog. The execution of the program stops at the 
  6156. breakpoint only if the condition specified in this field tests true. 
  6157.  
  6158. For example, if you are debugging a C++ program you could type the following: 
  6159.  
  6160. (i==1) || (j==k) && (k!=5)
  6161.  
  6162. For a COBOL or PL/I program, you could type the following: 
  6163.  
  6164. myvar = 'abc'
  6165.  
  6166. Note: Variables in a conditional expression that is associated with a function 
  6167. breakpoint are limited to any static or global variables known to the called 
  6168. function when the function is called. The expression cannot contain local or 
  6169. automatic variables. 
  6170.  
  6171. Related Information 
  6172.  
  6173. Reference 
  6174. Expressions Supported 
  6175.  
  6176.  
  6177. ΓòÉΓòÉΓòÉ 4.5.6. Breakpoints List Popup Menu ΓòÉΓòÉΓòÉ
  6178.  
  6179. In the Breakpoints List window, if your pointer is on a line containing 
  6180. breakpoint information and you click on mouse button 2, a popup menu appears 
  6181. with the following choices that affect breakpoints: 
  6182.  
  6183.      View 
  6184.  
  6185.      Delete - deletes the selected breakpoint 
  6186.  
  6187.      Enable (if breakpoint is currently disabled) 
  6188.  
  6189.      Disable (if breakpoint is currently enabled) 
  6190.  
  6191.      Modify (not supported on OS/390) - opens a dialog that lets you change 
  6192.       the breakpoint 
  6193.  
  6194.      Delete all - deletes all the breakpoints 
  6195.  
  6196.  Related Information 
  6197.  
  6198.  Procedures 
  6199.  Delete Breakpoints 
  6200.  Modify Breakpoint Characteristics 
  6201.  Delete All Breakpoints 
  6202.  
  6203.  
  6204. ΓòÉΓòÉΓòÉ 4.6. Session Control Window ΓòÉΓòÉΓòÉ
  6205.  
  6206. The Session Control window is open throughout the debugging session. It shows 
  6207. the current status of the debugger, and gives you a number of ways to access 
  6208. other windows or perform common functions. See the following topics for more 
  6209. information: 
  6210.  
  6211.      Introduction to the Session Control window 
  6212.  
  6213.      Menus, buttons, and shortcut keys 
  6214.  
  6215.  
  6216. ΓòÉΓòÉΓòÉ 4.6.1. Using the Components Pane ΓòÉΓòÉΓòÉ
  6217.  
  6218. You can expand any item in the Components pane that has a '+' beside it. The 
  6219. following list shows what items you can expand, and what items appear when you 
  6220. do: 
  6221.  
  6222.  Item with + Expands to 
  6223.  
  6224.  Executable or DLL Object files used to form the executable or DLL 
  6225.  
  6226.  Object file Source files used to compile the object file, if more than one 
  6227.            source file was used. Otherwise, the object file item expands to the 
  6228.            functions defined in the source file. 
  6229.  
  6230.  Source file (C++ only): File-scope functions and class member functions 
  6231.            defined within each source file. C++ class member functions are not 
  6232.            shown. 
  6233.  
  6234.  To shift the focus within the Session Control window between the Threads and 
  6235.  Components panes, use the pointer or the cursor left and right keys. To move 
  6236.  between items in the list, use the mouse or the cursor up and down keys. To 
  6237.  expand or collapse items in the list, use the + and - keys. 
  6238.  
  6239.  To open or raise the focus of the Source window for an object file, source 
  6240.  file, or function, double-click on the item, or highlight it and press Enter. 
  6241.  
  6242.  To access the popup menu for a function, select that function and click on 
  6243.  mouse button 2 . This menu lets you set a breakpoint on the function or view 
  6244.  its source code. 
  6245.  
  6246.  
  6247. ΓòÉΓòÉΓòÉ 4.6.2. Using the Threads Pane ΓòÉΓòÉΓòÉ
  6248.  
  6249. When you expand a thread in the Threads pane, the following information is 
  6250. displayed: 
  6251.  
  6252.      Whether the thread is runable or blocked 
  6253.  
  6254.      Whether the thread is enabled or disabled 
  6255.  
  6256.      The thread's priority. 
  6257.  
  6258.  To move between items in the list, use the mouse or the cursor up and down 
  6259.  keys. To expand or collapse items in the list, use the + and - keys. 
  6260.  
  6261.  To open or raise the focus of the Source window for a thread, press the Enter 
  6262.  key while the thread is highlighted, or double-click on it. 
  6263.  
  6264.  To access a popup menu for a highlighted thread, click mouse button 2. This 
  6265.  menu lets you disable or enable the thread, access monitors specific to it, or 
  6266.  jump to the execution point in the Source window for the thread. 
  6267.  
  6268.  To enable a disabled thread or disable an enabled one, select the thread, then 
  6269.  choose Run->Thread enabled. This toggles the current enablement for that 
  6270.  thread. If the thread is enabled, a checkmark appears beside Thread enabled. 
  6271.  
  6272.  Note: In the Source window, the current execution line is reverse-highlighted 
  6273.  in black. When a thread becomes disabled, the current execution line for that 
  6274.  thread's Source Window changes to gray. 
  6275.  
  6276.  For guidance on designing and debugging multithreaded programs, see Debugging 
  6277.  Threads. 
  6278.  
  6279.  
  6280. ΓòÉΓòÉΓòÉ 4.6.3. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  6281.  
  6282. The Session Control window provides the following menus, buttons, and shortcut 
  6283. keys: 
  6284.  
  6285.      File Breakpoints Monitors Run Options Windows Help 
  6286.  
  6287.     
  6288.  
  6289.      [Ctrl+E->Registers] [Ctrl+G->Storage] [Ctrl+K->Call Stack] 
  6290.       [Ctrl+P->Source] [Ctrl+R->Run] [Ctrl+V->Local variables] [Ctrl+X-> 
  6291.       Breakpoint list] 
  6292.  
  6293.  The Session Control window also has a popup menu. 
  6294.  
  6295.  
  6296. ΓòÉΓòÉΓòÉ 4.6.3.1. Shortcut Keys ΓòÉΓòÉΓòÉ
  6297.  
  6298. The Session Control window provides the following shortcut keys: 
  6299.  
  6300.      [Ctrl+E->Registers] 
  6301.  
  6302.      [Ctrl+G->Storage] 
  6303.  
  6304.      [Ctrl+K->Call Stack] 
  6305.  
  6306.      [Ctrl+P->Source] 
  6307.  
  6308.      [Ctrl+R->Run] 
  6309.  
  6310.      [Ctrl+V->Local variables] 
  6311.  
  6312.      [Ctrl+X-> Breakpoint list] 
  6313.  
  6314.      [Ctrl+Y-> Process list] (Windows only) 
  6315.  
  6316.  
  6317. ΓòÉΓòÉΓòÉ 4.6.3.2. Breakpoints Menu ΓòÉΓòÉΓòÉ
  6318.  
  6319. Use the Breakpoints menu to set and delete breakpoints. It contains the 
  6320. following choices: 
  6321.  
  6322.      Set line 
  6323.  
  6324.      Set function 
  6325.  
  6326.      Set address 
  6327.  
  6328.      Set storage change 
  6329.  
  6330.      Set load occurrence 
  6331.  
  6332.      List -- [Ctrl+X] 
  6333.  
  6334.      Delete All - Deletes all breakpoints 
  6335.  
  6336.  Related Information 
  6337.  
  6338.  Procedures 
  6339.  Delete All Breakpoints 
  6340.  
  6341.  
  6342. ΓòÉΓòÉΓòÉ 4.6.3.3. Options Menu ΓòÉΓòÉΓòÉ
  6343.  
  6344. The Options menu in the Session Control window lets you change settings for the 
  6345. window and for the debugger itself. It contains the following choices: 
  6346.  
  6347.      Window settings 
  6348.  
  6349.      Debugger settings 
  6350.  
  6351.  
  6352. ΓòÉΓòÉΓòÉ 4.6.3.3.1. Display Style ΓòÉΓòÉΓòÉ
  6353.  
  6354. Select Options->Window settings->Display style to specify what you want 
  6355. displayed in the Session Control window. The dialog contains the following 
  6356. check boxes: 
  6357.  
  6358.  Check box Effect when checked 
  6359.  
  6360.  Show all components All components are displayed (when this choice is not 
  6361.            checked, only components with debug information are displayed) 
  6362.  
  6363.  Show module path The path name is displayed 
  6364.  
  6365.  Sort components Components are sorted in alphabetical order 
  6366.  
  6367.  Sort threads Threads are sorted in numerical order 
  6368.  
  6369.  Show status line A status line is displayed, showing the current state of the 
  6370.            debugger (for example, Executing) 
  6371.  
  6372.  
  6373. ΓòÉΓòÉΓòÉ 4.6.3.3.2. Window Settings ΓòÉΓòÉΓòÉ
  6374.  
  6375. Select the Window settings cascading choices from the Session Control window 
  6376. Options menu to modify these settings: 
  6377.  
  6378.  Fonts     Lets you change the font for the Session Control window. 
  6379.  
  6380.  Display style Opens a Display Style dialog where you can specify how 
  6381.            information in the Session Control window should appear. 
  6382.  
  6383.  Restore defaults Resets all settings for the Session Control window to their 
  6384.            original values. 
  6385.  
  6386.  Tool buttons Displays or hides the toolbar buttons for the window. 
  6387.  
  6388.  Hover help Enables or disables hover help, which provides brief descriptions 
  6389.            of menu choices and toolbar buttons when your pointing device passes 
  6390.            over them. 
  6391.  
  6392.  Infoarea  Enables or disables the window's information area, which provides 
  6393.            longer textual descriptions of menu choices and toolbar buttons when 
  6394.            your pointing device passes over them. 
  6395.  
  6396.  
  6397. ΓòÉΓòÉΓòÉ 4.6.3.3.3. Set Breakpoints at Entry Points ΓòÉΓòÉΓòÉ
  6398.  
  6399. Select the Set breakpoints at entry points  check box in the Debugger 
  6400. Properties dialog of the Session Control window to automatically set a 
  6401. breakpoint at each function. 
  6402.  
  6403.  
  6404. ΓòÉΓòÉΓòÉ 4.6.3.4. Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  6405.  
  6406. Popup menus are available for both the Threads pane and the Components pane of 
  6407. the Session Control window. 
  6408.  
  6409. In the Threads pane, when you highlight the main entry for a thread and click 
  6410. mouse button 2, the popup menu displays a subset of the following choices: 
  6411.  
  6412.      Execution point -- opens or raises a Source window showing the next line 
  6413.       to be executed in the thread 
  6414.  
  6415.      Enable -- changes a disabled thread's state to enabled, so that it can 
  6416.       run (shown only for disabled threads) 
  6417.  
  6418.      Disable -- changes an enabled thread's state to disabled, to prevent it 
  6419.       from running (shown only for enabled threads) 
  6420.  
  6421.      Registers -- opens or raises a Registers monitor for that thread 
  6422.  
  6423.      Call Stack -- opens or raises a Call Stack window for that thread 
  6424.  
  6425.      Local variables -- opens or raises a Local Variables window for that 
  6426.       thread 
  6427.  
  6428.  In the Components pane, if you click mouse button 2 over a function, the popup 
  6429.  menu contains the following choices: 
  6430.  
  6431.      View -- open or raise a Source window for the file or function 
  6432.  
  6433.      Set function breakpoint -- set a breakpoint at the start of this 
  6434.       function, for the current thread only 
  6435.  
  6436.      Set breakpoint every -- set a breakpoint at the start of the function, 
  6437.       for all threads 
  6438.  
  6439.  If you click mouse button 2 over an object file, the popup menu contains only 
  6440.  the View choice. 
  6441.  
  6442.  
  6443. ΓòÉΓòÉΓòÉ 4.6.3.5. Source ΓòÉΓòÉΓòÉ
  6444.  
  6445. Menu: Windows->Source from the Session Control window Keystroke: Ctrl+P 
  6446.  
  6447. Opens or raises a Source window. When you use Ctrl+P to access a source window, 
  6448. the source window raised or opened contains the contents of the active thread 
  6449. and function. When you use the Windows menu and more than one Source window is 
  6450. currently open, a Source choice is available for each open Source window. 
  6451.  
  6452.  
  6453. ΓòÉΓòÉΓòÉ 4.7. Monitor Expression Dialog ΓòÉΓòÉΓòÉ
  6454.  
  6455. Use the Monitor Expression dialog to add a variable or expression to one of the 
  6456. following monitors, which are listed in the dialog within a radio button group 
  6457. box: 
  6458.  
  6459.      Popup 
  6460.  
  6461.      Private 
  6462.  
  6463.      Program 
  6464.  
  6465.      Storage 
  6466.  
  6467.  The current context is shown in an information group box. This is the context 
  6468.  (file, line number, etc.) that the debugger uses in evaluating the expression 
  6469.  you enter. 
  6470.  
  6471.  Type in an expression, and either click on OK or Monitor. OK closes the 
  6472.  dialog, while Monitor leaves the dialog open so that you can add more 
  6473.  expressions. 
  6474.  
  6475.  If the expression you want to add is already in your source code, you can 
  6476.  place that expression in the Expression entry field in the Monitor Expression 
  6477.  dialog as follows: highlight it with the mouse, then select Monitor->Monitor 
  6478.  expression or click on the  toolbar button. 
  6479.  
  6480.  See Expressions Supported for more information on what types of expressions 
  6481.  the debugger supports. 
  6482.  
  6483.  Related Information 
  6484.  
  6485.  Concepts 
  6486.  Expressions 
  6487.  
  6488.  
  6489. ΓòÉΓòÉΓòÉ 4.7.1. Current Context ΓòÉΓòÉΓòÉ
  6490.  
  6491. The context group box on the right side of the Monitor Expression dialog shows 
  6492. the current execution point in your program: the file name, line number, type 
  6493. of view, and thread number. 
  6494.  
  6495. If you have tried to add an expression to a monitor and the debugger issues the 
  6496. error message 'Expression validation failed', you may have included 
  6497. out-of-scope variables or constants in your expression. If you are familiar 
  6498. with the structure of your program, the Context group box may help you 
  6499. determine if scoping problems are the cause of the error. 
  6500.  
  6501. See Expressions Supported for information on what types of expressions the 
  6502. debugger supports. 
  6503.  
  6504.  
  6505. ΓòÉΓòÉΓòÉ 4.8. Popup Monitor ΓòÉΓòÉΓòÉ
  6506.  
  6507. A Popup monitor displays a variable or expression you select for monitoring. 
  6508. This monitor is associated with a specific Source window and closes when the 
  6509. associated window closes. Each time you add a variable or expression to a Popup 
  6510. monitor, a new Popup monitor opens. The contents of each Popup monitor are 
  6511. updated after each Step or Run command (except for disabled variables or 
  6512. expressions within such windows). 
  6513.  
  6514. You can do the following from a Popup monitor: 
  6515.  
  6516.      Access a popup menu using mouse button 2 
  6517.  
  6518.      Change the contents of a variable 
  6519.  
  6520.  The Popup monitor has the following menu items on its titlebar menu: 
  6521.  
  6522.      File 
  6523.  
  6524.      Options 
  6525.  
  6526.      Help 
  6527.  
  6528.  Related Information 
  6529.  
  6530.  Procedures 
  6531.  Add Expressions and Variables to a Monitor 
  6532.  
  6533.  
  6534. ΓòÉΓòÉΓòÉ 4.8.1. File Menu ΓòÉΓòÉΓòÉ
  6535.  
  6536. The File menu of the Popup monitor contains only one choice, Close Debugger. 
  6537.  
  6538.  
  6539. ΓòÉΓòÉΓòÉ 4.8.2. Popup Menu for the Popup Monitor ΓòÉΓòÉΓòÉ
  6540.  
  6541. To access a popup menu from within a Popup window, place the pointer over a 
  6542. monitored variable or expression, and click mouse button 2. Depending on the 
  6543. variable or expression you selected, the popup menu provides a subset of the 
  6544. following choices: 
  6545.  
  6546.      Edit 
  6547.  
  6548.      Next representation 
  6549.  
  6550.      Change font 
  6551.  
  6552.      Dereference  (not available for COBOLor PL/I) 
  6553.  
  6554.      Delete 
  6555.  
  6556.      Enable 
  6557.  
  6558.      Disable 
  6559.  
  6560.  
  6561. ΓòÉΓòÉΓòÉ 4.8.2.1. Change Font ΓòÉΓòÉΓòÉ
  6562.  
  6563. Choose Change font from the popup menu in a Popup monitor to change the font 
  6564. used within that particular monitor. Choose the desired font from the Font 
  6565. Selection dialog that appears. 
  6566.  
  6567.  
  6568. ΓòÉΓòÉΓòÉ 4.9. Private Monitor ΓòÉΓòÉΓòÉ
  6569.  
  6570. Use a Private monitor to monitor variables or expressions from a given Source 
  6571. window. Each Source window can have its own Private monitor. This monitor is 
  6572. similar to the Program monitor. 
  6573.  
  6574. See the following for more information: 
  6575.  
  6576.      Introduction to the Private Monitor 
  6577.  
  6578.      Monitor popup menu 
  6579.  
  6580.      Menus, buttons, and shortcut keys 
  6581.  
  6582.  Related Information 
  6583.  
  6584.  Concepts 
  6585.  Differences between Program and Private Monitors 
  6586.  
  6587.  
  6588. ΓòÉΓòÉΓòÉ 4.9.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  6589.  
  6590. The Private monitor provides the following menus, buttons, and shortcut keys: 
  6591.  
  6592.      Edit Options Help 
  6593.  
  6594.     
  6595.  
  6596.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  6597.  
  6598.  The Private monitor also has a popup menu. To access it, place the pointer 
  6599.  within the content area of the window and click mouse button 2. 
  6600.  
  6601.  
  6602. ΓòÉΓòÉΓòÉ 4.9.1.1. Edit Menu ΓòÉΓòÉΓòÉ
  6603.  
  6604. The Edit menu of both the Program monitor and Private monitor contains the 
  6605. following choices: 
  6606.  
  6607.      Delete 
  6608.  
  6609.      Delete all 
  6610.  
  6611.      Select all 
  6612.  
  6613.      Deselect all 
  6614.  
  6615.      Enable 
  6616.  
  6617.      Disable 
  6618.  
  6619.      Other elements 
  6620.  
  6621.      Representation 
  6622.  
  6623.  
  6624. ΓòÉΓòÉΓòÉ 4.9.1.1.1. Delete ΓòÉΓòÉΓòÉ
  6625.  
  6626. Select Edit->Delete from the monitor menu bar, or Delete from a monitor popup 
  6627. menu, to delete the selected variables or expressions from the monitor. 
  6628.  
  6629. To delete all expressions, select Edit->Delete all. 
  6630.  
  6631.  
  6632. ΓòÉΓòÉΓòÉ 4.9.1.1.2. Delete All ΓòÉΓòÉΓòÉ
  6633.  
  6634. Choose Edit->Delete all from the monitor menu bar to delete all expressions and 
  6635. variables in the monitor. 
  6636.  
  6637. Note: If you delete an expression or variable and then later decide that you 
  6638. want to monitor it, you must add it again from the Source window. 
  6639.  
  6640.  
  6641. ΓòÉΓòÉΓòÉ 4.9.1.1.3. Disable ΓòÉΓòÉΓòÉ
  6642.  
  6643. Select Edit->Disable from the monitor menu bar, or Disable from the monitor 
  6644. popup menu, to prevent the displayed contents of the selected variables or 
  6645. expressions from being updated when they change. 
  6646.  
  6647.  
  6648. ΓòÉΓòÉΓòÉ 4.9.1.1.4. Enable ΓòÉΓòÉΓòÉ
  6649.  
  6650. Select Edit->Enable from the monitor menu bar to have the debugger refresh the 
  6651. displayed contents of the selected variables or expressions whenever they 
  6652. change. Variables and expressions are enabled by default, so this choice is 
  6653. only available if a variable or expression has been disabled. 
  6654.  
  6655.  
  6656. ΓòÉΓòÉΓòÉ 4.9.1.1.5. Other Elements ΓòÉΓòÉΓòÉ
  6657.  
  6658. If an array, structure, or C++ class object in a monitor contains more than 50 
  6659. elements, only 50 elements are displayed at a time. By default, the first 50 
  6660. elements are displayed. To display a different range of elements, select 
  6661. Edit->Other elements (or select Other elements from the monitor popup menu), 
  6662. and enter the number of the first element to display. 
  6663.  
  6664. You can change the default maximum of 50 elements to a different maximum by 
  6665. setting the DEBUG_NUMBEROFELEMENTS environment variable on the local 
  6666. workstation before starting the debugger. 
  6667.  
  6668. In a C++ class object, elements are listed in declaration order, regardless of 
  6669. their access specifier (private, protected or public). 
  6670.  
  6671. The 50-element limit applies to each level within an array or a C++ class 
  6672. object. For example, if a C++ class contains 100 member variables and the first 
  6673. variable is a 60-element array, the debugger displays the name of the array 
  6674. only (with a '+' to its left so that you can expand it) and the next 49 
  6675. elements of the C++ class object. When you expand the array, the debugger 
  6676. displays the first 50 elements of the array, and the next 49 elements of the 
  6677. C++ class object. To view more elements of the array, position the pointer on 
  6678. the array name and select Other elements. To view more elements of the C++ 
  6679. class object, position the pointer on the object name and select Other 
  6680. elements. 
  6681.  
  6682.  
  6683. ΓòÉΓòÉΓòÉ 4.9.1.1.6. Representation, Next Representation ΓòÉΓòÉΓòÉ
  6684.  
  6685. Select Edit->Representation, or Next representation from the monitor popup 
  6686. menu, to change the representation of monitor contents. 
  6687.  
  6688. Edit->Representation: 
  6689.  
  6690. The available representations for the selected variable or element are shown in 
  6691. a cascading menu. For example, for a 32-bit signed integer, the available 
  6692. representations are decimal and hexadecimal. 
  6693.  
  6694. Next representation (from the monitor popup menu, or from the  toolbar button): 
  6695.  
  6696. The next representation of the selected variable or element is shown. The 
  6697. debugger cycles through available representations in the same order as would be 
  6698. shown in the Edit->Representation cascading menu list for the selected item. 
  6699.  
  6700.  
  6701. ΓòÉΓòÉΓòÉ 4.9.2. Options Menu ΓòÉΓòÉΓòÉ
  6702.  
  6703. The Options menu of the Private and Program monitors contains the following 
  6704. choices: 
  6705.  
  6706.      Fonts 
  6707.  
  6708.      Restore defaults 
  6709.  
  6710.      Show enablement 
  6711.  
  6712.      Show context 
  6713.  
  6714.      Tool buttons 
  6715.  
  6716.      Hover help 
  6717.  
  6718.      Infoarea 
  6719.  
  6720.  
  6721. ΓòÉΓòÉΓòÉ 4.9.2.1. Show Enablement ΓòÉΓòÉΓòÉ
  6722.  
  6723. You can disable a variable or expression within a monitor so that its displayed 
  6724. contents are not updated when the variable or expression changes. Later you can 
  6725. enable the variable or expression so that its contents are updated. Select 
  6726. Options->Show enablement if you want the current enablement of each variable or 
  6727. expression to be shown. A column appears that shows either 'Enabled' or 
  6728. 'Disabled' for each entry in the monitor. 
  6729.  
  6730.  
  6731. ΓòÉΓòÉΓòÉ 4.9.2.2. Show Context ΓòÉΓòÉΓòÉ
  6732.  
  6733. Select Options->Show context from a monitor window to display the following 
  6734. information in separate columns for each object or array: 
  6735.  
  6736.       The source file name where the object or array is declared 
  6737.  
  6738.      The line number 
  6739.  
  6740.      The thread number 
  6741.  
  6742.      The variable or expression name 
  6743.  
  6744.  This information is only shown once for each object or array. 
  6745.  
  6746.  
  6747. ΓòÉΓòÉΓòÉ 4.10. Program Monitor ΓòÉΓòÉΓòÉ
  6748.  
  6749. Use the Program monitor to collect variables or expressions that you want to 
  6750. monitor. This monitor is not associated with any specific Source window, and is 
  6751. always displayed unless you specifically close it. It is similar to the Private 
  6752. monitor. 
  6753.  
  6754. See the following for more information: 
  6755.  
  6756.      Introduction to the Program monitor 
  6757.  
  6758.      Monitor popup menu 
  6759.  
  6760.      Menus, buttons, and shortcut keys 
  6761.  
  6762.  Related Information 
  6763.  
  6764.  Concepts 
  6765.  Differences between Program and Private Monitors 
  6766.  
  6767.  
  6768. ΓòÉΓòÉΓòÉ 4.10.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  6769.  
  6770. The Program monitor provides the following menus, buttons, and shortcut keys: 
  6771.  
  6772.      File Edit Options Windows Help 
  6773.  
  6774.     
  6775.  
  6776.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  6777.  
  6778.  The Program monitor also has a popup menu. To access it, position the pointer 
  6779.  in the content area of the window and click mouse button 2. 
  6780.  
  6781.  
  6782. ΓòÉΓòÉΓòÉ 4.10.1.1. File Menu ΓòÉΓòÉΓòÉ
  6783.  
  6784. The File menu of the Program monitor contains only one choice, Close Debugger. 
  6785.  
  6786.  
  6787. ΓòÉΓòÉΓòÉ 4.11. Popup Menu for Private and Program Monitors ΓòÉΓòÉΓòÉ
  6788.  
  6789. When you select a variable or element in the Program monitor or a Private 
  6790. monitor, and click mouse button 2, a popup menu appears with a subset of the 
  6791. following choices: 
  6792.  
  6793.      Edit 
  6794.  
  6795.      Delete 
  6796.  
  6797.      Disable 
  6798.  
  6799.      Dereference (not available for COBOLor PL/I) 
  6800.  
  6801.      Next representation 
  6802.  
  6803.      Other elements 
  6804.  
  6805.  
  6806. ΓòÉΓòÉΓòÉ 4.11.1. Edit Contents ΓòÉΓòÉΓòÉ
  6807.  
  6808. To edit the contents of a variable in a monitor, do one of the following: 
  6809.  
  6810.      Select the line containing the variable, click mouse button 2, and select 
  6811.       Edit from the popup menu 
  6812.  
  6813.      Double-click on the content of the variable 
  6814.  
  6815.      Use the cursor keys or the mouse to highlight the line containing the 
  6816.       variable, and press Enter. 
  6817.  
  6818.  Then enter a new value and press Enter. This value must be valid for the type 
  6819.  of variable. 
  6820.  
  6821.  Related Information 
  6822.  
  6823.  Procedures 
  6824.  Change the Contents of Storage, Variables, and Registers 
  6825.  
  6826.  
  6827. ΓòÉΓòÉΓòÉ 4.11.2. Dereference ΓòÉΓòÉΓòÉ
  6828.  
  6829. Note: The Dereference choice is not available for COBOLor PL/I programs. 
  6830.  
  6831. Choose Dereference from the popup menu in a Program, Private, or Local 
  6832. Variables monitor to show the storage contents of the selected pointer 
  6833. variable. 
  6834.  
  6835. This choice is available only when the variable you have selected is a pointer, 
  6836. or is an array or object name displayed in pointer representation (with a '>' 
  6837. to its left). To change an array or object to pointer representation, choose 
  6838. Edit->Representation from the menu bar, or Next representation from the popup 
  6839. menu. 
  6840.  
  6841.  
  6842. ΓòÉΓòÉΓòÉ 4.12. Local Variables Monitor ΓòÉΓòÉΓòÉ
  6843.  
  6844. Note: The Local Variables monitor is not available for debugging PL/I programs. 
  6845.  
  6846. Use the Local Variables monitor to view all local variables that are currently 
  6847. in scope. The Source window for each thread of your program has its own Local 
  6848. Variables monitor. 
  6849.  
  6850. See the following for more information: 
  6851.  
  6852.      Introduction to the Local Variables monitor 
  6853.  
  6854.      Local Variables popup menu 
  6855.  
  6856.      Menus, buttons, and shortcut keys 
  6857.  
  6858.  
  6859. ΓòÉΓòÉΓòÉ 4.12.1. Menus, Buttons, and Shortcut Keys ΓòÉΓòÉΓòÉ
  6860.  
  6861. The Local Variables monitor provides the following menus, buttons, and shortcut 
  6862. keys: 
  6863.  
  6864.      File Edit Options Windows Help 
  6865.  
  6866.     
  6867.  
  6868.      [Ctrl+B->Session Control] [Ctrl+R->Run] 
  6869.  
  6870.  The Local Variables monitor also has a popup menu. To access it, position the 
  6871.  pointer in the content area of the monitor and click mouse button 2. 
  6872.  
  6873.  
  6874. ΓòÉΓòÉΓòÉ 4.12.1.1. File Menu ΓòÉΓòÉΓòÉ
  6875.  
  6876. The File menu of the Local Variables monitor contains only one choice, Close 
  6877. Debugger. 
  6878.  
  6879.  
  6880. ΓòÉΓòÉΓòÉ 4.12.1.2. Edit Menu ΓòÉΓòÉΓòÉ
  6881.  
  6882. The Edit menu of the Local Variables monitor contains the following choices: 
  6883.  
  6884.      Delete 
  6885.  
  6886.      Select all 
  6887.  
  6888.      Deselect all 
  6889.  
  6890.      Other elements 
  6891.  
  6892.      Representation 
  6893.  
  6894.  
  6895. ΓòÉΓòÉΓòÉ 4.12.1.3. Options Menu ΓòÉΓòÉΓòÉ
  6896.  
  6897. The Options menu of the Local Variables monitor contains the following choices: 
  6898.  
  6899.      Fonts 
  6900.  
  6901.      Restore defaults 
  6902.  
  6903.      Show context 
  6904.  
  6905.      Tool buttons 
  6906.  
  6907.      Hover help 
  6908.  
  6909.      Infoarea 
  6910.  
  6911.  
  6912. ΓòÉΓòÉΓòÉ 4.12.2. Popup Menu for the Local Variables Monitor ΓòÉΓòÉΓòÉ
  6913.  
  6914. When you select a variable or element in a Local Variables monitor and click 
  6915. mouse button 2, a popup menu appears with a subset of the following choices: 
  6916.  
  6917.      Edit 
  6918.  
  6919.      Dereference (not available for COBOL) 
  6920.  
  6921.      Delete 
  6922.  
  6923.      Next representation 
  6924.  
  6925.      Other elements 
  6926.  
  6927.  
  6928. ΓòÉΓòÉΓòÉ 4.13. Debugger Dialogs ΓòÉΓòÉΓòÉ
  6929.  
  6930. You can get to help on the following debugger dialogs from here: 
  6931.  
  6932.      Source List Dialog 
  6933.  
  6934.      Exception Dialog 
  6935.  
  6936.      Overloaded Dialog 
  6937.  
  6938.      Source Filename Dialog 
  6939.  
  6940.      Monitor Expression Dialog 
  6941.  
  6942.      Post-Mortem Information Dialog 
  6943.  
  6944.      Exception Filtering Dialog 
  6945.  
  6946.      Startup Dialog 
  6947.  
  6948.  See also the following main help pages: 
  6949.  
  6950.      Main Debugger Windows 
  6951.  
  6952.      Monitor Windows 
  6953.  
  6954.      Other Help Topics 
  6955.  
  6956.      Debugger Help Home Page 
  6957.  
  6958.  
  6959. ΓòÉΓòÉΓòÉ 4.13.1. Debugger Properties Dialog ΓòÉΓòÉΓòÉ
  6960.  
  6961. Use the Debugger Properties dialog to define: 
  6962.  
  6963.      Whether to keep displaying, minimize, or discard a Source window from 
  6964.       which control has just passed 
  6965.  
  6966.      Whether multiple views can be displayed. 
  6967.  
  6968.      Whether clicking on mouse button 2 will perform a step command or bring 
  6969.       up a popup menu. 
  6970.  
  6971.  This dialog contains the following group boxes: 
  6972.  
  6973.      Display at stop 
  6974.  
  6975.      Old source disposition 
  6976.  
  6977.      Settings 
  6978.  
  6979.      Mouse button 2 behavior 
  6980.  
  6981.  
  6982. ΓòÉΓòÉΓòÉ 4.13.1.1. Display at stop Group Box ΓòÉΓòÉΓòÉ
  6983.  
  6984. The Display at stop group box lets you control how many Source windows are 
  6985. displayed at once, and how many Source windows the Old source disposition 
  6986. setting applies to. The choices are: 
  6987.  
  6988.  Only stopping thread Keeps, minimizes, or discards all views that are not the 
  6989.            stopping thread. 
  6990.  
  6991.  All threads Keeps, minimizes, or discards the views for old components within 
  6992.            each thread. 
  6993.  
  6994.  For example, if you select Only stopping thread, the Old source disposition 
  6995.  applies to all the Source windows except the current view of the stopping 
  6996.  thread. If you select All threads, the Old source disposition applies only to 
  6997.  the Source windows for the components from which execution has just left 
  6998.  within a thread. 
  6999.  
  7000.  
  7001. ΓòÉΓòÉΓòÉ 4.13.1.2. Old source disposition Group Box ΓòÉΓòÉΓòÉ
  7002.  
  7003. The Old source disposition group box lets you control the behavior of Source 
  7004. windows from which control has just passed. The choices are: 
  7005.  
  7006.  Keep      Leaves old Source windows open 
  7007.  
  7008.  Minimize  Changes old Source windows into icons 
  7009.  
  7010.  Discard   Closes old Source windows 
  7011.  
  7012.  Note: The setting of the Display at Stop group box affects what Source windows 
  7013.  the Old source disposition choices apply to. 
  7014.  
  7015.  
  7016. ΓòÉΓòÉΓòÉ 4.13.1.3. Settings Group Box ΓòÉΓòÉΓòÉ
  7017.  
  7018. The Settings group box contains the following: 
  7019.  
  7020.      The Multiple views check box, which you can select to display more than 
  7021.       one Source window for a particular object. If the check box is enabled, 
  7022.       when you open a new window for an object, the first window stays open and 
  7023.       is overlaid by the second one. If the check box is disabled, the first 
  7024.       window is closed when a second window is opened. The default is not to 
  7025.       display multiple Source windows. 
  7026.  
  7027.      The Set breakpoints at entry points check box. If this check box is 
  7028.       enabled, the debugger will set breakpoints at all functions for programs 
  7029.       that were compiled and linked with debug information. 
  7030.  
  7031.  
  7032. ΓòÉΓòÉΓòÉ 4.13.1.4. Mouse button 2 behavior Group Box ΓòÉΓòÉΓòÉ
  7033.  
  7034. The behavior of mouse button 2 within the Source window depends on the Mouse 
  7035. button 2 behavior group box in the Debugger properties dialog (accessed from 
  7036. the Source or Session Control windows through Options->Debugger 
  7037. settings->Debugger properties). 
  7038.  
  7039. Select one of the following check boxes to determine how mouse button 2 will 
  7040. behave in the Source window. 
  7041.  
  7042.  Popup menus Displays a popup menu, where one is available; otherwise does 
  7043.            nothing. 
  7044.  
  7045.  Step always Performs a step command. 
  7046.  
  7047.  Popup menus and step in white space Displays a popup menu, when the pointer is 
  7048.            over certain text (for example, a variable or a line number in the 
  7049.            prefix area), and performs a step command when the pointer is over 
  7050.            white space or over text for which no popup menu is available. 
  7051.  
  7052.  C++ example:.If Popup menus and step in white space is checked, and you click 
  7053.  mouse button 2 on the C++ source line int myVar=18;, a popup menu appears if 
  7054.  the pointer is over int, myVar, or 18, and a step command is performed if the 
  7055.  pointer is on white space or the = or ; symbols. 
  7056.  
  7057.  COBOL example: If Popup menus and step in white space is checked, and you 
  7058.  click mouse button 2 on the COBOL line MOVE 18 TO MYVAR., a popup menu appears 
  7059.  if the pointer is over MOVE, 18, TO, or MYVAR, and a step command is performed 
  7060.  if the pointer is on white space or the period. 
  7061.  
  7062.  PL/I example: If Popup menus and step in white space is checked, and you click 
  7063.  mouse button 2 on the PL/I source line MYVAR = 18;, a popup menu appears if 
  7064.  the pointer is over MYVAR or 18, and a step command is performed if the 
  7065.  pointer is on white space or the = or ; symbols. 
  7066.  
  7067.  
  7068. ΓòÉΓòÉΓòÉ 4.13.2. Exception Dialog ΓòÉΓòÉΓòÉ
  7069.  
  7070. The Exception dialog is displayed whenever an exception is raised that matches 
  7071. the exception category you specified in the Exception Filtering dialog. The 
  7072. line where the exception occurred is highlighted in a Source window. 
  7073.  
  7074. This dialog gives you three choices: 
  7075.  
  7076.  Examine/Retry  Lets you investigate the cause of the exception and, if 
  7077.            desired, retry executing the line that caused the original 
  7078.            exception. The debugger begins with this line and attempts to 
  7079.            continue. 
  7080.  
  7081.  Step exception The debugger steps into the first registered exception handler 
  7082.            (tracked by the operating system). Execution stops at the first 
  7083.            executable line of code in that exception. 
  7084.  
  7085.  Run exception The debugger runs the exception handler that is registered to 
  7086.            handle the type of exception that was encountered. 
  7087.  
  7088.  OS/2: For details on OS/2 exception definitions, see the Control Program 
  7089.  Programming Reference (S10G-6263). The Software exception is not listed in 
  7090.  this document, since this is a user-defined OS/2 exception generated by the 
  7091.  DosRaiseException call. 
  7092.  
  7093.  
  7094. ΓòÉΓòÉΓòÉ 4.13.3. Exception Filtering Dialog ΓòÉΓòÉΓòÉ
  7095.  
  7096. In the Exception Filtering dialog, select the exceptions you want the debugger 
  7097. to recognize. 
  7098.  
  7099. If an exception you selected is encountered during execution, the Exception 
  7100. dialog opens. Exceptions you did not select are ignored when they occur. 
  7101.  
  7102. If an exception is encountered during execution, and that exception is in an 
  7103. exception category you selected, the Exception dialog opens. Otherwise the 
  7104. exception is ignored. 
  7105.  
  7106. OS/2: For details on OS/2 exception definitions, see the Control Program 
  7107. Programming Reference (S10G-6263). The Software exception is not listed in this 
  7108. document, since this is a user-defined OS/2 exception generated by the 
  7109. DosRaiseException call. 
  7110.  
  7111.  
  7112. ΓòÉΓòÉΓòÉ 4.13.4. Find Function Dialog ΓòÉΓòÉΓòÉ
  7113.  
  7114. To use the Find Function dialog: 
  7115.  
  7116.    1. In the Function entry field, type the name of the function you want to 
  7117.       locate. An error message appears if a matching function was not found. 
  7118.  
  7119.    2. If you want to search only files that contain debugging information, 
  7120.       enable the Debugging information only check box. 
  7121.  
  7122.    3. If you want to search for the string exactly as typed, select the Case 
  7123.       sensitive check box. Do not select it if you want to search for both 
  7124.       uppercase and lowercase matches to the string. 
  7125.  
  7126.    4. Select OK. 
  7127.  
  7128.  If you specified a C++ function and the debugger finds more than one overload 
  7129.  of the function you specified, an Overloaded dialog opens, listing the 
  7130.  overloads of that function. Select the desired overload from that list. 
  7131.  
  7132.  
  7133. ΓòÉΓòÉΓòÉ 4.13.5. Monitor Properties Dialog ΓòÉΓòÉΓòÉ
  7134.  
  7135. Use the Monitor Properties dialog to select the settings for monitoring 
  7136. variables or expressions. You can set one check box in each of the following 
  7137. group boxes (click on the Group box name for more information): 
  7138.  
  7139.  Group box Purpose 
  7140.  
  7141.  Monitor Location The window into which the variable or expression being 
  7142.            monitored is placed. 
  7143.  
  7144.  Popup Duration For a popup expression window, determines how long the monitors 
  7145.            are displayed. 
  7146.  
  7147.  
  7148. ΓòÉΓòÉΓòÉ 4.13.5.1. Monitor Location ΓòÉΓòÉΓòÉ
  7149.  
  7150. Choose one of the following radio buttons to determine which monitor will open 
  7151. when you select a variable or expression to monitor. 
  7152.  
  7153.      Popup monitor 
  7154.  
  7155.      Private monitor 
  7156.  
  7157.      Program monitor 
  7158.  
  7159.      Storage monitor 
  7160.  
  7161.  
  7162. ΓòÉΓòÉΓòÉ 4.13.5.2. Popup Duration ΓòÉΓòÉΓòÉ
  7163.  
  7164. If you selected Popup in the Monitor Location group box, select one of the 
  7165. following radio buttons to specify at what point the popup expression window is 
  7166. closed. 
  7167.  
  7168.  Step/run  The monitor closes when the next step or run command is executed. 
  7169.  
  7170.  New source The monitor closes when execution stops in a new source. 
  7171.  
  7172.  Permanent The monitor is associated with a specific Source window, and is 
  7173.            closed when that Source window is closed. 
  7174.  
  7175.  
  7176. ΓòÉΓòÉΓòÉ 4.13.6. Open New Source Dialog ΓòÉΓòÉΓòÉ
  7177.  
  7178. Use the Open New Source dialog to open another Source window containing a new 
  7179. executable or DLL for the program you are already debugging. 
  7180.  
  7181. You may find it easier to open a new Source window by expanding components in 
  7182. the Components pane of the Session Control window until you find the 
  7183. compilation unit you want. The Open New Source dialog is useful for opening a 
  7184. source view for a source file when you are unsure of the file name of the 
  7185. executable that was created from that source file. 
  7186.  
  7187. If you know the name of the source file, turn on the All executables check box 
  7188. and type in the source file name, then select OK. 
  7189.  
  7190. If you do not know the name of the source file, leave the Source field blank, 
  7191. and turn off the All executables check box. You can then select an executable 
  7192. from the Executable pulldown list.  If you want to view only those executables 
  7193. compiled and linked with debug information, turn on the Debugging information 
  7194. only check box. 
  7195.  
  7196. Once you have chosen an executable, click on OK (or press Enter) and a Source 
  7197. List dialog displays with a list of the compilation units for that executable. 
  7198. From this Source List dialog, select the compilation unit you want to open a 
  7199. Source window for. 
  7200.  
  7201. Related Information 
  7202.  
  7203. Reference 
  7204. Environment Variables 
  7205.  
  7206.  
  7207. ΓòÉΓòÉΓòÉ 4.13.7. Overloaded Dialog ΓòÉΓòÉΓòÉ
  7208.  
  7209. When you specify a C++ function in a debugger entry field (for example, when 
  7210. you are setting a function breakpoint), and the debugger finds more than one 
  7211. overload of that function, an Overloaded dialog appears, containing a list of 
  7212. all functions with the name you specified. Choose the function from the 
  7213. displayed list that matches the function you wanted. 
  7214.  
  7215. A signature is the combination of return type and argument types that 
  7216. distinguish a C++ function from other functions of the same name. 
  7217.  
  7218.  
  7219. ΓòÉΓòÉΓòÉ 4.13.8. Postmortem Information Dialog ΓòÉΓòÉΓòÉ
  7220.  
  7221. Note: This dialog is only available on OS/2. 
  7222.  
  7223. The Postmortem Information dialog opens when you select a postmortem dump file 
  7224. to debug and you click on Postmortem info. 
  7225.  
  7226. This dialog provides the following information about the dump file you are 
  7227. using: 
  7228.  
  7229.      The level of operating system that was running when the dump file was 
  7230.       created 
  7231.  
  7232.      A list of all executables and dynamic load libraries (DLLs) that were 
  7233.       used by the program that caused the dump file to be created 
  7234.  
  7235.      For each listed executable or DLL, whether is available ('found') on the 
  7236.       machine you are doing the postmortem debugging from 
  7237.  
  7238.      For each executable or DLL that is found, whether the version found on 
  7239.       your system matches the version in the dump file. 
  7240.  
  7241.  If the comment for an executable or DLL indicates that it was not found on 
  7242.  your system, you will not have access to debug information for that module, so 
  7243.  you cannot debug source code or view the contents of variables used in that 
  7244.  module. 
  7245.  
  7246.  If the comment indicates that the executable or DLL was found but did not 
  7247.  match, the debug information in that module is of questionable value, because 
  7248.  variables, code, or  entry points may be at different addresses within the 
  7249.  module on your machine and on the machine where the dump occurred. 
  7250.  
  7251.  Related Information 
  7252.  
  7253.  Reference 
  7254.  Postmortem Debugging 
  7255.  
  7256.  
  7257. ΓòÉΓòÉΓòÉ 4.13.9. Source List Dialog ΓòÉΓòÉΓòÉ
  7258.  
  7259. The Source List dialog opens if you select an executable in the Open New Source 
  7260. dialog but do not specify a new source file to open. 
  7261.  
  7262. The lefthand pane contains the names of executable files, and the righthand 
  7263. pane shows corresponding compile units. Select a compile unit from the list, 
  7264. and either click on OK or press Enter. 
  7265.  
  7266. You can resize the panes by dragging the split bar between them to the left or 
  7267. right. 
  7268.  
  7269.  
  7270. ΓòÉΓòÉΓòÉ 4.13.10. Source Filename Dialog ΓòÉΓòÉΓòÉ
  7271.  
  7272. The Source Filename dialog is displayed when you try to debug a component that 
  7273. contains debugging data for which the source code cannot be located. To respond 
  7274. to this dialog, do one of the following: 
  7275.  
  7276.      If the source file is located in another directory on the system, type in 
  7277.       the path name and select OK. 
  7278.  
  7279.      If you do not have the source file for this component, select Cancel. A 
  7280.       Source window in disassembly view opens for this component. 
  7281.  
  7282.  
  7283. ΓòÉΓòÉΓòÉ 4.13.11. Startup Dialog ΓòÉΓòÉΓòÉ
  7284.  
  7285. Note: The Startup dialog is available for debugging both local and remote 
  7286. client code, but for remote client code no list of remote executables is 
  7287. available from the Browse pushbutton. 
  7288.  
  7289. Use the Startup dialog to start debugging a program. This dialog opens when you 
  7290. select File->Startup from a Source or Session Control window, or when you start 
  7291. the debugger without specifying the name of a program to debug. 
  7292.  
  7293. You can enter the name of an executable , or, for OS/2 only, a dump file, in 
  7294. the Program entry field; select a recently debugged file from the pulldown list 
  7295. on that field; or choose a file from a file selection dialog by clicking on the 
  7296. Browse/File list button (after you have selected a file, you are returned to 
  7297. the Startup dialog). 
  7298.  
  7299. Once you have entered the necessary information, select OK or press Enter to 
  7300. start the debugging session. 
  7301.  
  7302. For information on other entry fields and check boxes on the Startup dialog, 
  7303. click on the appropriate items below. 
  7304.  
  7305.      Parameters 
  7306.  
  7307.      Debug program initialization 
  7308.  
  7309.      Use program profile 
  7310.  
  7311.      Debug child processes, Child names, and Child List (OS/2 local debugging 
  7312.       only) 
  7313.  
  7314.      Process list (Windows 95, Windows NT) 
  7315.  
  7316.  
  7317. ΓòÉΓòÉΓòÉ 4.13.11.1. Parameters ΓòÉΓòÉΓòÉ
  7318.  
  7319. Use the Parameters entry field in the Startup dialog to specify parameters for 
  7320. your program. For example, if your program is designed to read a file name and 
  7321. the /xyz option from the parameter list, in that order, enter: 
  7322.  
  7323. filename /xyz
  7324.  
  7325. For local debug sessions, you can also specify parameters for your program when 
  7326. you invoke the debugger from the operating system command line or a batch, 
  7327. command,  or similar file. 
  7328.  
  7329. Related Information 
  7330.  
  7331. Procedures 
  7332. Invoke the Debugger 
  7333.  
  7334.  
  7335. ΓòÉΓòÉΓòÉ 4.13.11.2. Debug Program Initialization ΓòÉΓòÉΓòÉ
  7336.  
  7337. Click on the Debug program initialization check box in the Startup dialog if 
  7338. you want to debug code that executes before the main function is called. The 
  7339. principal reason you might want to do this is if you are debugging C++ code and 
  7340. you want to debug the constructors for your globally declared C++ class objects 
  7341. (because such objects are constructed before main is entered). 
  7342.  
  7343.  
  7344. ΓòÉΓòÉΓòÉ 4.13.11.3. Use Program Profile ΓòÉΓòÉΓòÉ
  7345.  
  7346. The Use program profile check box in the Startup dialog lets you specify 
  7347. whether the window sizes, positions, fonts, and breakpoints for your program 
  7348. are to be saved when you exit the debugger or switch to another program. If you 
  7349. check this check box, then the next time you load that program, the windows and 
  7350. breakpoints are restored to match their previous configuration for that program 
  7351. to save debugger window settings and breakpoints when debugging a program more 
  7352. than once. 
  7353.  
  7354. This check box is turned on by default. Turn it off if you do not want this 
  7355. information to be saved. When the check box is off, the debugger windows start 
  7356. up with their default appearance, and no breakpoints are initially set. 
  7357.  
  7358. Note: If you add or delete lines in your source file, recompile it, and then 
  7359. debug the program again with a saved program profile, line breakpoints may no 
  7360. longer match the code they were initially set for, as line breakpoint 
  7361. information is saved by line number, not by the content of the line. 
  7362.  
  7363.  
  7364. ΓòÉΓòÉΓòÉ 4.13.11.4. Process List Push button ΓòÉΓòÉΓòÉ
  7365.  
  7366. The Process list button on the Startup dialog (Windows 95, Windows NT, and AIX 
  7367. only) opens a Process list dialog. You can then select an already running 
  7368. process to debug, instead of an executable. The Process list dialog is also 
  7369. accessible from the File menu of the Source and Session Control windows. 
  7370.  
  7371.  
  7372. ΓòÉΓòÉΓòÉ 4.13.11.5. Select Child Process (OS/2) ΓòÉΓòÉΓòÉ
  7373.  
  7374. Note: Debugging child processes is only supported on OS/2. 
  7375.  
  7376. Use the Select Child Processes dialog to browse through your file system and 
  7377. select a child process to debug. The default file extension to search for (and 
  7378. the only valid one for a child process) is .EXE. Choose the executable or 
  7379. executables that your program invokes as child processes. 
  7380.  
  7381. You can select several executables, provided they all reside in the same 
  7382. directory. 
  7383.  
  7384. To select several executables with the mouse, click on the first executable 
  7385. name in the File list. For additional executables, hold down the Shift key and 
  7386. click on each additional executable. 
  7387.  
  7388. To select several executables with keystrokes, tab to the File list. Use the 
  7389. cursor keys to move up or down the list, and press the space bar to select each 
  7390. executable you want to add. 
  7391.  
  7392.  
  7393. ΓòÉΓòÉΓòÉ 4.13.11.6. Debug Child Processes (OS/2) ΓòÉΓòÉΓòÉ
  7394.  
  7395. Click on the Debug child processes check box in the Startup dialog if you want 
  7396. to debug child processes that are started by a parent program. When you enable 
  7397. this check box, the Child process(es) entry field becomes active. 
  7398.  
  7399. When you select Debug child processes, the debugger does not stop in the main 
  7400. function of the program, and does not stop at any breakpoints set in your 
  7401. program. Instead, execution proceeds until the first invocation of a child 
  7402. process whose name you identified in the Child process(es) entry field. 
  7403.  
  7404. In the Child process(es) entry field, you can type the name of the executable 
  7405. file for the child process you want to debug. If you do not know the child 
  7406. process executable name, click on the File List pushbutton to open the Open 
  7407. dialog. From this dialog, you can browse your file system for the executable 
  7408. that gets invoked as a child process of your program. 
  7409.  
  7410.  
  7411. ΓòÉΓòÉΓòÉ 4.14. Toolbar Buttons, Shortcut Keys, and Common Menu Items ΓòÉΓòÉΓòÉ
  7412.  
  7413. Each window of the debugger provides a subset of the following toolbar buttons, 
  7414. shortcut keys, and menu choices: 
  7415.  
  7416.      Toolbar buttons:
  7417.  
  7418.      Shortcut keys: [Ctrl+B] -->Raise Session Control window [Ctrl+R] -->Run 
  7419.       (The Source window and Session Control window have their own specialized 
  7420.       sets of shortcut keys.) 
  7421.  
  7422.      Menu choices:
  7423.  
  7424.       File Edit Monitors Run Options Windows Help Project 
  7425.  
  7426.  
  7427. ΓòÉΓòÉΓòÉ 4.14.1. Toolbar Buttons ΓòÉΓòÉΓòÉ
  7428.  
  7429. Toolbar buttons let you quickly access a wide range of commands and windows 
  7430. from the Source and Session Control windows, and a lesser range from other 
  7431. windows. These buttons are displayed when the Tool buttons item is set from a 
  7432. window's Options menu (or from a menu beneath Options). The following toolbar 
  7433. buttons are available: 
  7434.  
  7435.  
  7436. ΓòÉΓòÉΓòÉ 4.14.1.1. Call Stack Button ΓòÉΓòÉΓòÉ
  7437.  
  7438. Click on the  button to open or raise a Call Stack window containing the 
  7439. contents of the call stack for the current thread. This is the same as 
  7440. selecting Monitors->Call Stack or typing Ctrl+K. 
  7441.  
  7442.  
  7443. ΓòÉΓòÉΓòÉ 4.14.1.2. Delete All Button ΓòÉΓòÉΓòÉ
  7444.  
  7445. Click on the  button to delete all breakpoints in a breakpoint list, or to 
  7446. delete all variables and expressions in a monitor. 
  7447.  
  7448.  
  7449. ΓòÉΓòÉΓòÉ 4.14.1.3. Delete Button ΓòÉΓòÉΓòÉ
  7450.  
  7451. Click on the  button to delete the selected breakpoint in a breakpoint list, or 
  7452. to delete the selected variable or expression in a monitor. 
  7453.  
  7454.  
  7455. ΓòÉΓòÉΓòÉ 4.14.1.4. Session Control Button ΓòÉΓòÉΓòÉ
  7456.  
  7457. Click on the  button to bring the Session Control window into focus. 
  7458.  
  7459.  
  7460. ΓòÉΓòÉΓòÉ 4.14.1.5. Edit Button ΓòÉΓòÉΓòÉ
  7461.  
  7462. Note: This button is only supported for versions of the debugger installed with 
  7463. an IBM VisualAge product, and is only shown if the debugger was invoked from a 
  7464. WorkFrame project. 
  7465.  
  7466. Click on the  button to open or raise an editor window containing the current 
  7467. source file. 
  7468.  
  7469.  
  7470. ΓòÉΓòÉΓòÉ 4.14.1.6. Monitor Expression Button ΓòÉΓòÉΓòÉ
  7471.  
  7472. Click on the  button from the Source window to add a variable or expression to 
  7473. one of the debugger monitors. In the Monitor expression dialog that opens, 
  7474. enter a variable or expression to monitor. 
  7475.  
  7476. If you highlight a variable or expression before you press the Monitor 
  7477. expression button, that variable or expression is automatically placed in the 
  7478. Monitor expression dialog. 
  7479.  
  7480. See Expressions Supported for information on what types of expressions the 
  7481. debugger supports. 
  7482.  
  7483.  
  7484. ΓòÉΓòÉΓòÉ 4.14.1.7. Project Button ΓòÉΓòÉΓòÉ
  7485.  
  7486. Note: This button is only supported for versions of the debugger installed with 
  7487. an IBM VisualAge product, and is only shown if the debugger was invoked from a 
  7488. WorkFrame project. 
  7489.  
  7490. Click on the Project button to open or raise the WorkFrame. 
  7491.  
  7492.  
  7493. ΓòÉΓòÉΓòÉ 4.14.1.8. Registers Button ΓòÉΓòÉΓòÉ
  7494.  
  7495. Click on the  button to open or raise a Registers monitor containing the 
  7496. contents of processor registers for the current thread. This is the same as 
  7497. selecting Monitors->Registers or typing Ctrl+E. 
  7498.  
  7499.  
  7500. ΓòÉΓòÉΓòÉ 4.14.1.9. Storage Button ΓòÉΓòÉΓòÉ
  7501.  
  7502. Click on the  button to open or raise a Storage monitor, which you can use to 
  7503. display storage used by your program. This is the same as selecting 
  7504. Monitors->Storage or typing Ctrl+G. 
  7505.  
  7506.  
  7507. ΓòÉΓòÉΓòÉ 4.14.1.10. Breakpoints Button ΓòÉΓòÉΓòÉ
  7508.  
  7509. Click on the  button to open or raise the Breakpoints list window, which you 
  7510. can use to view, set, clear, disable, or enable breakpoints. This is the same 
  7511. as selecting Breakpoints->List or typing Ctrl+X. 
  7512.  
  7513.  
  7514. ΓòÉΓòÉΓòÉ 4.14.2. Common Menu Choices ΓòÉΓòÉΓòÉ
  7515.  
  7516. A subset of the following menus appears on many debugger windows: 
  7517.  
  7518.      File 
  7519.  
  7520.      Edit 
  7521.  
  7522.      Options -- you can view help for a short list of common options, or a 
  7523.       complete list of all available options 
  7524.  
  7525.      Monitors 
  7526.  
  7527.      Run 
  7528.  
  7529.      Windows 
  7530.  
  7531.      Help 
  7532.  
  7533.  The help for each debugger window contains appropriate links to the menus it 
  7534.  supports. 
  7535.  
  7536.  
  7537. ΓòÉΓòÉΓòÉ 4.14.2.1. File Menu ΓòÉΓòÉΓòÉ
  7538.  
  7539. A subset of the following menu choices appears on the File menu of many 
  7540. debugger windows: 
  7541.  
  7542.      Open new source 
  7543.  
  7544.      Locate function 
  7545.  
  7546.      Where is execution point -- [Ctrl+P] 
  7547.  
  7548.      Startup 
  7549.  
  7550.      Process list window 
  7551.  
  7552.      Close debugger -- [F3] 
  7553.  
  7554.  The help for each debugger window contains appropriate links to the File menu 
  7555.  choices it supports. 
  7556.  
  7557.  
  7558. ΓòÉΓòÉΓòÉ 4.14.2.1.1. Open New Source ΓòÉΓòÉΓòÉ
  7559.  
  7560. Note: The Open new module choice on the File menu is available only on the 
  7561. Source and Session Control windows. 
  7562.  
  7563. Select this choice when you want to view a source file that is associated with 
  7564. your application, but is not currently shown in a Source window. The Open New 
  7565. Source dialog displays. 
  7566.  
  7567. Note: Open new source does not change the program being debugged. The source 
  7568. file you select must be one that is used by the program you are currently 
  7569. debugging. If instead you want to switch to debugging a different program, 
  7570. select Startup from the File menu. 
  7571.  
  7572.  
  7573. ΓòÉΓòÉΓòÉ 4.14.2.1.2. Where is Execution Point ΓòÉΓòÉΓòÉ
  7574.  
  7575. Select Where is execution point from the File menu to view the next line to be 
  7576. executed. If the file containing that line is already in a Source window, that 
  7577. Source window has its focus raised; otherwise, a new Source window opens. The 
  7578. next line to be executed is highlighted and has the cursor on it. 
  7579.  
  7580.  
  7581. ΓòÉΓòÉΓòÉ 4.14.2.1.3. Startup ΓòÉΓòÉΓòÉ
  7582.  
  7583. Select Startup from the File menu to open a Startup dialog. 
  7584.  
  7585.  
  7586. ΓòÉΓòÉΓòÉ 4.14.2.1.4. Process List (Windows NT and Windows 95 Only) ΓòÉΓòÉΓòÉ
  7587.  
  7588. Note: The Process List dialog, menu choice, and pushbutton are only available 
  7589. on platforms that support process debugging (Windows 95, Windows NT). 
  7590.  
  7591. Select Process List on the File menu, or the Process List pushbutton in the 
  7592. Startup dialog, to open a Process List dialog. This dialog lets you attach to a 
  7593. specific process that you want to debug. 
  7594.  
  7595. To select a process to debug: 
  7596.  
  7597.    1. Type the full path name of the process you want to debug in the Process 
  7598.       path entry field. 
  7599.  
  7600.       The debugger requires this path to locate the executable for the process 
  7601.       so that it can load the debugging information contained in the 
  7602.       executable. If you do not specify a process path, you can only see the 
  7603.       disassembly view in the Source window for the process. 
  7604.  
  7605.    2. Double-click on the process, or select the process you want to debug from 
  7606.       the list, then press Enter or select the Attach push button. 
  7607.  
  7608.  Note: In Windows 95 and Windows NT, if you are currently debugging a process, 
  7609.  that process is terminated when a new process is attached. When you exit the 
  7610.  debugger, any attached process is also terminated. Do not attach to operating 
  7611.  system processes, or to the debugger's own process. Attaching to such 
  7612.  processes can cause unpredictable results. 
  7613.  
  7614.  Use program profile Check Box 
  7615.  
  7616.  Select the Use program profile check box to start the debugging session with 
  7617.  program profile information. If the executable associated with the process you 
  7618.  attach to was previously debugged, its program profile is used to determine 
  7619.  window positions and sizes. 
  7620.  
  7621.  Push Buttons 
  7622.  
  7623.  Attach    Attaches the process you selected so that you can begin debugging 
  7624.            it. 
  7625.  
  7626.  Refresh   Refreshes the list, removing processes that have terminated, and 
  7627.            adding ones that started since the Process List dialog opened or 
  7628.            since the last refresh. 
  7629.  
  7630.  Related Information 
  7631.  
  7632.  Reference 
  7633.  When to Use the Process List Dialog 
  7634.  
  7635.  
  7636. ΓòÉΓòÉΓòÉ 4.14.2.1.5. Close Debugger ΓòÉΓòÉΓòÉ
  7637.  
  7638. Select Close debugger from the File menu to end the program you are debugging 
  7639. and exit the debugger. 
  7640.  
  7641. When you close the debugger, the window positions, sizes, and other settings 
  7642. such as breakpoints are saved in a program profile. This profile is used the 
  7643. next time you debug that program, to establish startup settings for the new 
  7644. debug session. 
  7645.  
  7646. Note: If you attached the debugger to an already running process, closing the 
  7647. debugger also terminates the process. 
  7648.  
  7649.  
  7650. ΓòÉΓòÉΓòÉ 4.14.2.2. Edit Menu ΓòÉΓòÉΓòÉ
  7651.  
  7652. A subset of the following menu choices appears on the Edit menu of many 
  7653. debugger windows: 
  7654.  
  7655.      Delete 
  7656.  
  7657.      Select all 
  7658.  
  7659.      Deselect all 
  7660.  
  7661.  The help for each debugger window contains appropriate links to the menu 
  7662.  choices it supports. 
  7663.  
  7664.  
  7665. ΓòÉΓòÉΓòÉ 4.14.2.2.1. Delete ΓòÉΓòÉΓòÉ
  7666.  
  7667. Button:  Shortcut key: [Delete] Menu: Edit->Delete (from Breakpoints List 
  7668. window, and Program, Private, and Local Variables monitors) 
  7669.  
  7670. Delete deletes the highlighted item or items in the current window. In a 
  7671. Monitor window, the selected expressions or variables are deleted. In a 
  7672. Breakpoint List window, the selected breakpoint is deleted (you can only select 
  7673. one breakpoint at a time). 
  7674.  
  7675. Note: When you delete a breakpoint, all information on it is lost. If you need 
  7676. to temporarily prevent a breakpoint from stopping execution but you want to be 
  7677. able to easily activate it later, you should disable it instead, by selecting 
  7678. Edit->Disable. 
  7679.  
  7680. Related Information 
  7681.  
  7682. Procedures 
  7683. Enable and Disable Breakpoints 
  7684.  
  7685.  
  7686. ΓòÉΓòÉΓòÉ 4.14.2.2.2. Select All ΓòÉΓòÉΓòÉ
  7687.  
  7688. Select Edit->Select all from a Program or Private monitor to select all the 
  7689. variables and expressions shown in the monitor. You can then individually 
  7690. deselect certain variables, and use one of the available Edit menu choices to 
  7691. delete, enable, or disable the remaining selected variables. 
  7692.  
  7693.  
  7694. ΓòÉΓòÉΓòÉ 4.14.2.2.3. Deselect All ΓòÉΓòÉΓòÉ
  7695.  
  7696. Select Edit->Deselect all from a monitor to deselect all selected variables and 
  7697. expressions shown in the monitor. 
  7698.  
  7699.  
  7700. ΓòÉΓòÉΓòÉ 4.14.2.3. Options Menu ΓòÉΓòÉΓòÉ
  7701.  
  7702. The following Options menu choices are shared by several debugger windows: 
  7703.  
  7704.  Fonts     Lets you change the font for the current window. 
  7705.  
  7706.  Restore defaults Resets all settings for this window to the debugger defaults 
  7707.            for the window. 
  7708.  
  7709.  Tool buttons Determines whether the toolbar buttons are displayed in the 
  7710.            window. 
  7711.  
  7712.  Hover help Enables or disables hover help, which provides brief descriptions 
  7713.            of menu choices and toolbar buttons when the pointer is placed over 
  7714.            them. 
  7715.  
  7716.  Infoarea  Enables or disables the window's information area, which provides 
  7717.            longer textual descriptions of menu choices and toolbar buttons when 
  7718.            the pointer is placed over them. 
  7719.  
  7720.  
  7721. ΓòÉΓòÉΓòÉ 4.14.2.4. Monitors Menu ΓòÉΓòÉΓòÉ
  7722.  
  7723. A subset of the following menu choices appears on the Monitors menu of the 
  7724. Source and Session Control windows: 
  7725.  
  7726.      Monitor expression 
  7727.  
  7728.      Call Stack 
  7729.  
  7730.      Registers 
  7731.  
  7732.      Storage 
  7733.  
  7734.      Local variables 
  7735.  
  7736.  The help for each debugger window contains appropriate links to the menu 
  7737.  choices it supports. 
  7738.  
  7739.  
  7740. ΓòÉΓòÉΓòÉ 4.14.2.4.1. Monitor Expression ΓòÉΓòÉΓòÉ
  7741.  
  7742. Select Monitors->Monitor expression to open a Monitor expression dialog. Here, 
  7743. you can enter a variable or expression to monitor, and select what monitor to 
  7744. display it in. 
  7745.  
  7746.  
  7747. ΓòÉΓòÉΓòÉ 4.14.2.4.2. Call Stack ΓòÉΓòÉΓòÉ
  7748.  
  7749. Select Monitors->Call Stack to open a Call Stack window for the current thread. 
  7750. Here, you can view the contents of the call stack to determine what calls are 
  7751. currently in progress. 
  7752.  
  7753.  
  7754. ΓòÉΓòÉΓòÉ 4.14.2.4.3. Registers ΓòÉΓòÉΓòÉ
  7755.  
  7756. Select Monitors->Registers to open a Registers monitor. Here, you can view or 
  7757. alter the contents of registers for the processor of the machine that the 
  7758. program being debugged is running on. 
  7759.  
  7760.  
  7761. ΓòÉΓòÉΓòÉ 4.14.2.4.4. Storage ΓòÉΓòÉΓòÉ
  7762.  
  7763. Select Monitors->Storage to open a Storage monitor. Here, you can view or alter 
  7764. the contents of storage used by your program. 
  7765.  
  7766.  
  7767. ΓòÉΓòÉΓòÉ 4.14.2.4.5. Local Variables ΓòÉΓòÉΓòÉ
  7768.  
  7769. Select Monitors->Local variables to open a Local Variables monitor. Here, you 
  7770. can view or alter the contents of variables that are currently in scope for a 
  7771. given thread. When you select this choice from a Source window, the Local 
  7772. Variables monitor uses the thread for that Source window. When you select it 
  7773. from the Session Control window, the Local Variables monitor uses the currently 
  7774. highlighted thread in the Threads pane. 
  7775.  
  7776.  
  7777. ΓòÉΓòÉΓòÉ 4.14.2.5. Run Menu ΓòÉΓòÉΓòÉ
  7778.  
  7779. Use the Run menu to perform step commands, run your program, restart the 
  7780. debugging session, hide debugger windows, enable heap check, and enable or 
  7781. disable threads. It contains the following choices: 
  7782.  
  7783.      Step over -- [O] 
  7784.  
  7785.      Step into -- [I] 
  7786.  
  7787.      Step debug -- [D] 
  7788.  
  7789.      Step return -- [T] 
  7790.  
  7791.      Run -- [R] 
  7792.  
  7793.      Halt -- [SysRq] 
  7794.  
  7795.      Restart 
  7796.  
  7797.      Run to location -- [L] 
  7798.  
  7799.      Jump to location -- [N] 
  7800.  
  7801.      Hide debugger on Run 
  7802.  
  7803.      Check heap when stopping (not available for COBOL or PL/I programs) 
  7804.  
  7805.      Thread enabled 
  7806.  
  7807.  Shortcut keys (shown above in brackets) and toolbar buttons are available for 
  7808.  many of the Run menu choices. See the help panels for these choices for more 
  7809.  information. 
  7810.  
  7811.  
  7812. ΓòÉΓòÉΓòÉ 4.14.2.5.1. Hide Debugger on Run ΓòÉΓòÉΓòÉ
  7813.  
  7814. Select Run->Hide debugger on Run to hide the debugger windows when your program 
  7815. is running. This option does not affect the windows when you are stepping 
  7816. through your program. 
  7817.  
  7818.  
  7819. ΓòÉΓòÉΓòÉ 4.14.2.5.2. Check Heap When Stopping ΓòÉΓòÉΓòÉ
  7820.  
  7821. Note: This choice is disabled, and heap checking is unavailable, when the 
  7822. dominant language is COBOL or PL/I (that is, when the environment variable 
  7823. DEBUG_LANG is set to COBOL or to PL1). 
  7824.  
  7825. Select Run->Check heap when stopping to check all memory blocks allocated or 
  7826. freed by the runtime memory management functions. This makes sure that 
  7827. overwriting has not occurred outside the bounds of allocated blocks, and that 
  7828. free memory blocks have not been overwritten. 
  7829.  
  7830. If Check heap when stopping is enabled, the heap is checked each time the 
  7831. program stops. For example, the heap check is performed at each breakpoint or 
  7832. after each step command. If a heap error is detected, your application 
  7833. terminates. The Termination dialog displays showing the source line number 
  7834. where the application stopped and the heap check was performed. 
  7835.  
  7836. Related Information 
  7837.  
  7838. Reference 
  7839. Notes on Check Heap when Stopping 
  7840.  
  7841.  
  7842. ΓòÉΓòÉΓòÉ 4.14.2.5.3. Thread Enabled ΓòÉΓòÉΓòÉ
  7843.  
  7844. Select Run->Thread enabled to allow the thread that is highlighted in the 
  7845. Threads box of the Session Control window to execute when the program runs. 
  7846. When threads are enabled, a check mark is displayed beside the Thread enabled 
  7847. choice. This is the default setting. 
  7848.  
  7849. When threads are not enabled, no check mark is displayed and the highlighted 
  7850. thread is not executed when the program is run. 
  7851.  
  7852.  
  7853. ΓòÉΓòÉΓòÉ 4.14.2.5.4. Restart ΓòÉΓòÉΓòÉ
  7854.  
  7855. Select Run->Restart to start the debugging session again. Restart closes all 
  7856. debugger windows except the Session Control window, and then restarts your 
  7857. debugging session. 
  7858.  
  7859. If you want to debug a different program, use File->Startup instead. 
  7860.  
  7861.  
  7862. ΓòÉΓòÉΓòÉ 4.14.2.6. Project ΓòÉΓòÉΓòÉ
  7863.  
  7864. The Project menu is available when you have loaded the debugger from a 
  7865. Workframe project. Use it to perform project-related tasks. The list of choices 
  7866. depends upon the type of project, the platform, and the language. See the 
  7867. WorkFrame online help for further information on the choices. 
  7868.  
  7869.  
  7870. ΓòÉΓòÉΓòÉ 4.14.2.7. Options Menu ΓòÉΓòÉΓòÉ
  7871.  
  7872. Use the Options menu to change the appearance and behavior of the debugger. You 
  7873. can change settings for the particular window from which you access the menu, 
  7874. and settings for the debugger itself. This menu contains the following choices: 
  7875.  
  7876.      Window settings 
  7877.  
  7878.      Debugger settings 
  7879.  
  7880.  
  7881. ΓòÉΓòÉΓòÉ 4.14.2.7.1. Window Settings ΓòÉΓòÉΓòÉ
  7882.  
  7883. Select the Window settings cascading choices to modify these settings for the 
  7884. window from which you access the Options menu: 
  7885.  
  7886.  Colors    (Source window only) Lets you change the colors used in the Source 
  7887.            window. 
  7888.  
  7889.  Fonts     (Source window only) Lets you change the font for the Source window. 
  7890.            Only fixed-pitch fonts are available. 
  7891.  
  7892.  Display style Opens a dialog where you can specify how information in this 
  7893.            window should appear. Additional help is available for the Session 
  7894.            Control window. 
  7895.  
  7896.  Monitor expression (Storage monitor only) Opens a Monitor Expression in 
  7897.            Storage dialog, where you can enter an expression for monitoring in 
  7898.            storage. 
  7899.  
  7900.  Restore defaults Resets all settings for this window to their original values. 
  7901.  
  7902.  Notebook  (Source window only) Displays source files within the Source window 
  7903.            in a notebook format. 
  7904.  
  7905.  Tool buttons Displays or hides the toolbar buttons for the window. 
  7906.  
  7907.  Hover help Enables or disables hover help, which provides brief descriptions 
  7908.            of menu choices and toolbar buttons when your pointing device passes 
  7909.            over them. 
  7910.  
  7911.  Infoarea  Enables or disables the window's information area, which provides 
  7912.            longer textual descriptions of menu choices and toolbar buttons when 
  7913.            your pointing device passes over them. 
  7914.  
  7915.  
  7916. ΓòÉΓòÉΓòÉ 4.14.2.7.2. Debugger Settings ΓòÉΓòÉΓòÉ
  7917.  
  7918. Select the Debugger settings cascading choices to modify debugger settings: 
  7919.  
  7920.      Debugger properties 
  7921.  
  7922.      Monitor properties 
  7923.  
  7924.      PM debugging mode (OS/2 only) 
  7925.  
  7926.      Default data representation 
  7927.  
  7928.      Program profiles 
  7929.  
  7930.      Exception filtering 
  7931.  
  7932.      Save debugger window positions 
  7933.  
  7934.      Global font change 
  7935.  
  7936.      Enable window cascading 
  7937.  
  7938.      Display tool buttons -- shows the toolbar buttons at the top of each 
  7939.       window 
  7940.  
  7941.      Display hover help -- displays a help bubble, when one is available, near 
  7942.       the pointer when you move the pointer over a tool button 
  7943.  
  7944.      Display infoarea -- displays a line of help, when one is available, at 
  7945.       the bottom of the window when you move the pointer to a new area of the 
  7946.       window. 
  7947.  
  7948.      Place tool buttons on title bar -- places the tool buttons for each 
  7949.       window on its title bar rather than below the menu bar. This choice is 
  7950.       only supported when the debugger's user interface is running under OS/2. 
  7951.  
  7952.  
  7953. ΓòÉΓòÉΓòÉ 4.14.2.7.2.1. Default Data Representation ΓòÉΓòÉΓòÉ
  7954.  
  7955. Select Options->Debugger settings->Default data representation to specify how 
  7956. you want your data represented in the monitors. A cascading menu appears with 
  7957. choices for 'system' and for the languages supported by the debugger. 
  7958.  
  7959. System: You can select either floating point or hexadecimal. This setting 
  7960. affects only the representation used for floating point registers in the 
  7961. Registers monitor. 
  7962.  
  7963. Language-specific representations: For each language supported by the debugger, 
  7964. a cascading menu choice appears from the Default data representation menu. The 
  7965. dialog for the language you select contains a group box for each data type that 
  7966. is supported by the debugger's expression evaluator for that language. You can 
  7967. change the default representation for a data type by clicking on the 
  7968. appropriate radio button within that data type's group box. 
  7969.  
  7970.  
  7971. ΓòÉΓòÉΓòÉ 4.14.2.7.2.2. Program Profiles ΓòÉΓòÉΓòÉ
  7972.  
  7973. Select Options->Debugger settings->Program profiles to specify where you want 
  7974. the debugger program profiles stored, what profile information to save, or what 
  7975. profiles to delete. This menu has three choices: 
  7976.  
  7977.  Select information Select the types of information to save in the program 
  7978.            profile. If Save profile information is checked, your changes to 
  7979.            this list will be saved for future debugging sessions. If it is not 
  7980.            checked, your changes will only affect profiles saved until you exit 
  7981.            this session of the debugger. 
  7982.  
  7983.  Delete program profiles A dialog opens with a list of program profiles. Select 
  7984.            those profiles you want to delete, and click on OK. Profile 
  7985.            filenames are similar to their associated program filenames,but have 
  7986.            an extension that contains the character '@'. 
  7987.  
  7988.  Change location Change the location of the files that hold the debugger 
  7989.            settings. Enter the new path for program profiles in the Change 
  7990.            location dialog. 
  7991.  
  7992.  
  7993. ΓòÉΓòÉΓòÉ 4.14.2.7.2.3. Exception Filtering ΓòÉΓòÉΓòÉ
  7994.  
  7995. Select Options->Debugger settings->Exception filtering to open the Exception 
  7996. Filtering dialog. Select the exceptions that you want the debugger to 
  7997. recognize. 
  7998.  
  7999.  
  8000. ΓòÉΓòÉΓòÉ 4.14.2.7.2.4. Exception List ΓòÉΓòÉΓòÉ
  8001.  
  8002. The following table shows the named exceptions that ITRAPPER can trap on. You 
  8003. can also specify up to 8 additional exception numbers in decimal, octal, or 
  8004. hex, where each such number is specified in a form suitable for input to the 
  8005. stroul() function of the C library. 
  8006.  
  8007. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8008. ΓöéException Name                        ΓöéDefault State                        Γöé
  8009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8010. ΓöéXCPT_DATATYPE_MISALIGNMENT            ΓöéOn                                   Γöé
  8011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8012. ΓöéXCPT_BREAKPOINT                       ΓöéOn                                   Γöé
  8013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8014. ΓöéXCPT_SINGLE_STEP                      ΓöéOn                                   Γöé
  8015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8016. ΓöéXCPT_ACCESS_VIOLATION                 ΓöéOn                                   Γöé
  8017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8018. ΓöéXCPT_ILLEGAL_INSTRUCTION              ΓöéOn                                   Γöé
  8019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8020. ΓöéXCPT_FLOAT_DENORMAL_OPERAND           ΓöéOn                                   Γöé
  8021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8022. ΓöéXCPT_DIVIDE_BY_ZERO                   ΓöéOn                                   Γöé
  8023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8024. ΓöéXCPT_FLOAT_INEXACT_RESULT             ΓöéOn                                   Γöé
  8025. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8026. ΓöéXCPT_FLOAT_INVALID_OPERATION          ΓöéOn                                   Γöé
  8027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8028. ΓöéXCPT_FLOAT_OVERFLOW                   ΓöéOn                                   Γöé
  8029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8030. ΓöéXCPT_FLOAT_STACK_CHECK                ΓöéOn                                   Γöé
  8031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8032. ΓöéXCPT_FLOAT_UNDERFLOW                  ΓöéOn                                   Γöé
  8033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8034. ΓöéXCPT_INTEGER_DIVIDE_BY_ZERO           ΓöéOn                                   Γöé
  8035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8036. ΓöéXCPT_INTEGER_OVERFLOW                 ΓöéOn                                   Γöé
  8037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8038. ΓöéXCPT_PRIVILEGED_INSTRUCTION           ΓöéOn                                   Γöé
  8039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8040. ΓöéXCPT_IN_PAGE_ERROR                    ΓöéOn                                   Γöé
  8041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8042. ΓöéXCPT_NONCONTINUABLE_EXCEPTION         ΓöéOn                                   Γöé
  8043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8044. ΓöéXCPT_INVALID_DISPOSITION              ΓöéOn                                   Γöé
  8045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8046. ΓöéXCPT_INVALID_LOCK_SEQUENCE            ΓöéOn                                   Γöé
  8047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8048. ΓöéXCPT_ARRAY_BOUNDS_EXCEEDED            ΓöéOn                                   Γöé
  8049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8050. ΓöéXCPT_B1NPX_ERRATA_02                  ΓöéOn                                   Γöé
  8051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8052. ΓöéXCPT_BAD_STACK                        ΓöéOn                                   Γöé
  8053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8054. ΓöéXCPT_GUARD_PAGE_VIOLATION             ΓöéOff                                  Γöé
  8055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8056. ΓöéXCPT_UNABLE_TO_GROW_STACK             ΓöéOff                                  Γöé
  8057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8058. ΓöéXCPT_PROCESS_TERMINATE                ΓöéOff                                  Γöé
  8059. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8060. ΓöéXCPT_ASYNC_PROCESS_TERMINATE          ΓöéOff                                  Γöé
  8061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8062. ΓöéXCPT_UNWIND                           ΓöéOff                                  Γöé
  8063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8064. ΓöéXCPT_INVALID_UNWIND_TARGET            ΓöéOff                                  Γöé
  8065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8066. ΓöéXCPT_SIGNAL                           ΓöéOff                                  Γöé
  8067. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8068. ΓöéXCPT_C++                              ΓöéOff                                  Γöé
  8069. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8070.  
  8071.  
  8072. ΓòÉΓòÉΓòÉ 4.14.2.7.2.5. Save Debugger Window Positions ΓòÉΓòÉΓòÉ
  8073.  
  8074. Select Options->Debugger Settings->Save debugger window positions to save the 
  8075. position and size of each debugger window that is currently open, so that these 
  8076. settings are used the next time you start the debugger. 
  8077.  
  8078.  
  8079. ΓòÉΓòÉΓòÉ 4.14.2.7.2.6. Global Font Change ΓòÉΓòÉΓòÉ
  8080.  
  8081. Select Debugger Settings->Global font change to change the font in all debugger 
  8082. windows. (The font you choose affects all debugger windows except Source 
  8083. windows.) 
  8084.  
  8085.  
  8086. ΓòÉΓòÉΓòÉ 4.14.2.7.2.7. Enable Window Cascading ΓòÉΓòÉΓòÉ
  8087.  
  8088. Select Debugger Settings->Enable window cascading to display newly opened 
  8089. debugger windows offset to the right of and below previous windows, so that you 
  8090. can see the titles of previous windows. 
  8091.  
  8092. If this choice is disabled, successive windows will overlay earlier ones. 
  8093.  
  8094.  
  8095. ΓòÉΓòÉΓòÉ 4.14.2.7.2.8. PM Debugging Mode (OS/2 Only) ΓòÉΓòÉΓòÉ
  8096.  
  8097. Note: Available on OS/2 local debugging only. 
  8098.  
  8099. Use the PM Debugging Mode dialog to set the debugging mode to asynchronous or 
  8100. synchronous, and to control the interaction between the program windows and PM, 
  8101. while the application has stopped executing. 
  8102.  
  8103.      Debugging Mode group box 
  8104.  
  8105.         -  Synchronous radio button 
  8106.  
  8107.         -  Asynchronous radio button 
  8108.  
  8109.      Program Windows group box 
  8110.  
  8111.         -  No painting 
  8112.  
  8113.         -  Color invalid areas 
  8114.  
  8115.         -  Restore 
  8116.  
  8117.         -  Repaint 
  8118.  
  8119.      Invalid Area Color 
  8120.  
  8121.  Related Information 
  8122.  
  8123.  Procedures 
  8124.  Debug PM Applications 
  8125.  
  8126.  
  8127. ΓòÉΓòÉΓòÉ 4.14.2.7.2.9. Synchronous ΓòÉΓòÉΓòÉ
  8128.  
  8129. Synchronous radio button in PM debugging mode dialog 
  8130.  
  8131. Note: This section applies to OS/2 only. 
  8132.  
  8133. When the debugger is operating in synchronous mode, the messages that are 
  8134. passed between PM applications are answered by their target applications in the 
  8135. order that they were created. The messages that are passed within the debugger 
  8136. take priority over any other messages that are passed in the system. When the 
  8137. program being debugged is stopped and the debugger is in synchronous mode, 
  8138. other PM applications are locked, leaving the debugger free to operate. In 
  8139. synchronous mode, you will not be able to use any other PM applications that 
  8140. are running. 
  8141.  
  8142.  
  8143. ΓòÉΓòÉΓòÉ 4.14.2.7.2.10. Asynchronous ΓòÉΓòÉΓòÉ
  8144.  
  8145. Asynchronous radio button in PM debugging mode dialog 
  8146.  
  8147. Note: This section applies to OS/2 only. 
  8148.  
  8149. When the debugger is operating in asynchronous mode and the program you are 
  8150. debugging is stopped, the debugger responds immediately to messages that have 
  8151. been sent to the program being debugged on this program's behalf. The debugger 
  8152. answers the messages with a simple default response, freeing up other processes 
  8153. to operate while the debugger has control. When you are running the debugger in 
  8154. asynchronous mode, other PM applications running in the system are not blocked 
  8155. when the program being debugged stops. 
  8156.  
  8157. Caution: Do not operate the debugger in asynchronous mode if the PM application 
  8158. that you are debugging requires the appropriate response to its messages. For 
  8159. example, a dynamic data exchange (DDE) message would require the appropriate 
  8160. response. 
  8161.  
  8162.  
  8163. ΓòÉΓòÉΓòÉ 4.14.2.7.2.11. Color Invalid Areas ΓòÉΓòÉΓòÉ
  8164.  
  8165. Color invalid areas radio button in PM debugging mode dialog 
  8166.  
  8167. The Color invalid areas option works only in asynchronous mode. This option 
  8168. paints the invalid areas in a solid fill color. You can change the color by 
  8169. selecting a different one from the Invalid area color combination box. 
  8170.  
  8171.  
  8172. ΓòÉΓòÉΓòÉ 4.14.2.7.2.12. Invalid Area Color ΓòÉΓòÉΓòÉ
  8173.  
  8174. Invalid area color selection list in PM debugging mode dialog 
  8175.  
  8176. Select the color that is to be used to repaint the invalid area of an 
  8177. application window. Depending on the original color of the application window, 
  8178. certain colors will be more appropriate for repainting. The color you choose is 
  8179. used when you select the Color invalid areas, Restore, or Repaint options. 
  8180.  
  8181.  
  8182. ΓòÉΓòÉΓòÉ 4.14.2.7.2.13. No Painting ΓòÉΓòÉΓòÉ
  8183.  
  8184. No painting radio button in PM debugging mode dialog 
  8185.  
  8186. None of the invalid areas of the window are repainted. 
  8187.  
  8188.  
  8189. ΓòÉΓòÉΓòÉ 4.14.2.7.2.14. Repaint ΓòÉΓòÉΓòÉ
  8190.  
  8191. Repaint radio button in PM debugging mode dialog 
  8192.  
  8193. The Repaint option restores the application window with the last available 
  8194. image. The image you can regain consists of the last available image when a 
  8195. step or run command ended, minus any parts of the window that were covered when 
  8196. that command ended. The parts of the window that were covered are filled with 
  8197. the solid color you chose from the Invalid area color combination box. The 
  8198. Repaint option differs from the Restore option. It interrupts the normal 
  8199. debugging process of the window as follows: 
  8200.  
  8201.      The program windows will not receive any screen interaction messages 
  8202.       while the application is stopped. For example, the application will not 
  8203.       receive any of the WM_MOUSEMOVE or WM_PAINT messages that were generated 
  8204.       while the application was stopped. 
  8205.  
  8206.      An extra WM_PAINT message is generated for the program windows when 
  8207.       execution resumes.
  8208.  
  8209.       Note: The program windows might not process the WM_PAINT message 
  8210.       depending on where the breakpoints are set or on which step or run 
  8211.       command was selected. 
  8212.  
  8213.  
  8214. ΓòÉΓòÉΓòÉ 4.14.2.7.2.15. Restore ΓòÉΓòÉΓòÉ
  8215.  
  8216. Restore radio button in PM debugging mode dialog 
  8217.  
  8218. The Restore option works only in asynchronous mode. It restores the application 
  8219. window with the last available image of the window. The image that you can 
  8220. regain consists of the last available image when a step or run command ended, 
  8221. minus any parts of the window that were covered when that command ended. The 
  8222. parts of the window that were covered are filled with the solid color you chose 
  8223. from the Invalid area color combination box. 
  8224.  
  8225.  
  8226. ΓòÉΓòÉΓòÉ 4.14.2.7.3. Windows Menu ΓòÉΓòÉΓòÉ
  8227.  
  8228. The Windows menu lists the currently open debugger windows, including Source 
  8229. windows, monitors, the Breakpoints List window, and the Session Control window. 
  8230. To switch to a different window, select this menu from any window where the 
  8231. option is available, and click on the window you want to go to. 
  8232.  
  8233. When you minimize the debugger, some of its windows may not be on the list of 
  8234. windows displayed by the operating system. To access a minimized window not on 
  8235. the window list, select the Session Control window, then use the Windows menu 
  8236. to access the window you want. 
  8237.  
  8238.  
  8239. ΓòÉΓòÉΓòÉ 4.14.2.7.4. Help ΓòÉΓòÉΓòÉ
  8240.  
  8241. The Help menu provides help for the current window and for other help on the 
  8242. debugger.  The following choices are available: 
  8243.  
  8244.      Help index -- displays a list of index entries within the help file. 
  8245.  
  8246.      General help -- displays high-level help for the current window. 
  8247.  
  8248.      Using help -- displays help on how to access and use help features of the 
  8249.       debugger. 
  8250.  
  8251.      How do I -- displays task-oriented help for common debugger tasks. 
  8252.  
  8253.      Product information -- displays the logo screen for the debugger. 
  8254.  
  8255.  If you want to search for a string within a help file, click on Search from 
  8256.  the help window, enter the search string in the entry field, select All 
  8257.  sections, and click on Search. 
  8258.  
  8259.  
  8260. ΓòÉΓòÉΓòÉ 4.14.3. Step Into ΓòÉΓòÉΓòÉ
  8261.  
  8262. Button:  Shortcut key: [I] Menu: Run->Step into (from Source window) 
  8263.  
  8264. The Step Into command executes the current line in the program. If the current 
  8265. line is a call, execution halts at the first statement in the called function, 
  8266. or, if debug information is not available for that function, at the first 
  8267. disassembly instruction in the called function. 
  8268.  
  8269.  
  8270. ΓòÉΓòÉΓòÉ 4.14.4. Step Over ΓòÉΓòÉΓòÉ
  8271.  
  8272. Button:  Shortcut key: [O] Menu: Run->Step over (from Source window) 
  8273.  
  8274. The Step Over command executes the current line in the program. If the current 
  8275. line is a call, execution stops at the line following the call. 
  8276.  
  8277. If you step over a function that contains a breakpoint, execution stops at the 
  8278. breakpoint. 
  8279.  
  8280.  
  8281. ΓòÉΓòÉΓòÉ 4.14.5. Step Debug ΓòÉΓòÉΓòÉ
  8282.  
  8283. Button:  Shortcut key: [D] Menu: Run->Step debug (from Source window) 
  8284.  
  8285. The Step Debug command executes the current line in the program. If the current 
  8286. line is a call, and debug information is available for any function called 
  8287. before the return to the current function, execution halts at the first 
  8288. statement for which debug information is available. If no debug information is 
  8289. available, execution halts after the call. 
  8290.  
  8291. For example, if A calls B and A is compiled without debug information, while B 
  8292. is compiled with debug information, after a Step Debug from a call to A, 
  8293. execution will stop at the first executable statement of B. 
  8294.  
  8295. C++ only: If the current line contains a complex call (for example 
  8296. p->memberFunc1()->memberFunc2().memberFunc3(func1(), func2())), the debugger 
  8297. examines each call (and any calls beneath it) for functions containing debug 
  8298. information, and steps into the first such function.The order in which it 
  8299. examines the calls is based on the order of the calls in the assembly code, 
  8300. which is not necessarily the order in which the calls appear in the source 
  8301. code. If you want to do a step debug into a particular function with debug 
  8302. information in a complex call, switch to mixed view, select the assembly code 
  8303. line containing the call to the function you want to debug, do a run to 
  8304. location, and then do a Step Debug into the function. 
  8305.  
  8306. Note: Because of the more complex analysis the debugger must do to check for 
  8307. debuggable code during a Step Debug command, the performance of Step Debug may 
  8308. be slower than that of the Step Over command. Certain high-level COBOL 
  8309. statements, such as the Report Writer's GENERATE may be particularly slow using 
  8310. Step Debug. In such cases you can achieve much improved performance by using 
  8311. Run to location from the line containing the next executable statement. 
  8312.  
  8313.  
  8314. ΓòÉΓòÉΓòÉ 4.14.6. Step Return ΓòÉΓòÉΓòÉ
  8315.  
  8316. Button:  Shortcut key: [T] Menu: Run->Step return (from Source window) 
  8317.  
  8318. The Step Return command executes the code up to and including the return 
  8319. statement of the current function. Execution halts at the line following the 
  8320. call to the current function. 
  8321.  
  8322.  
  8323. ΓòÉΓòÉΓòÉ 4.14.7. Run ΓòÉΓòÉΓòÉ
  8324.  
  8325. Button:  Shortcut key: [R] from Source/Session Control windows, [Ctrl+R] from 
  8326. other windows Menu: Run->Run (from Source/Session Control windows) 
  8327.  
  8328. Run executes the program. The debugger starts executing where it last stopped 
  8329. (for example, at a breakpoint) or, if you have not yet run the program in this 
  8330. session, at the beginning of the program. When you select Run, execution 
  8331. continues until one of the following occurs: 
  8332.  
  8333.      You select Halt 
  8334.  
  8335.      The debugger encounters a breakpoint 
  8336.  
  8337.      An exception is encountered that is not handled 
  8338.  
  8339.      The program terminates 
  8340.  
  8341.      You close the debugger 
  8342.  
  8343.  Related Information 
  8344.  
  8345.  Procedures 
  8346.  Run a Program 
  8347.  
  8348.  
  8349. ΓòÉΓòÉΓòÉ 4.14.8. Halt ΓòÉΓòÉΓòÉ
  8350.  
  8351. Button:  Shortcut key: [SysRq] Menu: Run->Halt (from Source/Session Control 
  8352. windows) 
  8353.  
  8354. Halt, which is available only while the program is running, stops execution 
  8355. immediately. The Source window is updated with the current line set to the next 
  8356. line to be executed.  If you issued the halt while the debugger was executing a 
  8357. section of code without debug information, the Source window displays the 
  8358. current context in disassembly mode. Otherwise it displays the current context 
  8359. in the most recently used view (source, mixed, or disassembly). 
  8360.  
  8361.  
  8362. ΓòÉΓòÉΓòÉ 4.14.9. Jump to Location ΓòÉΓòÉΓòÉ
  8363.  
  8364. Shortcut key: [N] Menu: Run->Jump to location (from Source/Session Control 
  8365. windows) 
  8366.  
  8367. Jump to location makes the currently highlighted line in the Source window the 
  8368. current line, without executing any code. You can view an example in C++ COBOL 
  8369. or PL/I to see how Jump to location works. 
  8370.  
  8371. Caution: When you jump to a location, you may alter the flow of your program in 
  8372. ways that make it difficult to continue debugging later in the same session: 
  8373.  
  8374.      The stack can become corrupted if you jump to a location outside the 
  8375.       current function. 
  8376.  
  8377.      Some compilers optimize register usage in ways that can corrupt variables 
  8378.       or program flow when you use Jump to Location. For example, if the 
  8379.       compiler keeps track of register contents and can determine that a 
  8380.       register contains the value 1 at the start of a statement that 
  8381.       initializes an integer variable to 1, it may simply copy that register's 
  8382.       contents to the variable. If you step over the statement that involved 
  8383.       setting the register to 1, the variable may not contain the expected 
  8384.       contents. 
  8385.  
  8386.  After you have done the debugging for which you needed to alter the program 
  8387.  flow, you may want to restart your program, to ensure that program flow is not 
  8388.  arbitrarily or unexpectedly altered by code you jumped over. 
  8389.  
  8390.  
  8391. ΓòÉΓòÉΓòÉ 4.14.10. Run to Location ΓòÉΓòÉΓòÉ
  8392.  
  8393. Shortcut key: [L] Menu: Run->Run to location (from Source/Session Control 
  8394. windows) 
  8395.  
  8396. Run to location executes the program up to the currently highlighted line in 
  8397. the Source window. The debugger starts executing where it last stopped (for 
  8398. example, after a breakpoint) or, if you have not yet run the program in this 
  8399. session, at the beginning of the program. When you select Run to location, 
  8400. execution continues until one of the following occurs: 
  8401.  
  8402.      Execution reaches the location (the line) you selected in the Source 
  8403.       window 
  8404.  
  8405.      You select Halt 
  8406.  
  8407.      The debugger encounters a breakpoint 
  8408.  
  8409.      An exception is encountered that is not handled 
  8410.  
  8411.      The program terminates 
  8412.  
  8413.      You close the debugger 
  8414.  
  8415.  
  8416. ΓòÉΓòÉΓòÉ 4.14.11. Session Control ΓòÉΓòÉΓòÉ
  8417.  
  8418. Button:  Menu: Windows->Session Control Keystroke: Control-B 
  8419.  
  8420. Use this button, menu selection, or shortcut key to raise the Session Control 
  8421. window. 
  8422.  
  8423.  
  8424. ΓòÉΓòÉΓòÉ 4.14.12. Local Variables ΓòÉΓòÉΓòÉ
  8425.  
  8426. Menu: Monitors->Local variables Keystroke: Ctrl+V 
  8427.  
  8428. Opens or raises a Local Variables window, which displays the names and contents 
  8429. of variables that are in scope within the current thread or function. 
  8430.  
  8431.  
  8432. ΓòÉΓòÉΓòÉ 4.14.13. Delete ΓòÉΓòÉΓòÉ
  8433.  
  8434. Select Edit->Delete from a Local Variables monitor, or Delete from a monitor 
  8435. popup menu, to delete the selected expressions from the monitor. 
  8436.  
  8437. To delete all expressions, select Edit->Select all, then Edit->Delete. 
  8438.  
  8439.  
  8440. ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
  8441.  
  8442.  
  8443. ΓòÉΓòÉΓòÉ <hidden> Session Control Button ΓòÉΓòÉΓòÉ
  8444.  
  8445.  
  8446. ΓòÉΓòÉΓòÉ <hidden> Delete Button ΓòÉΓòÉΓòÉ
  8447.  
  8448.  
  8449. ΓòÉΓòÉΓòÉ <hidden> Delete All Button ΓòÉΓòÉΓòÉ
  8450.  
  8451.  
  8452. ΓòÉΓòÉΓòÉ <hidden> Session Control Window ΓòÉΓòÉΓòÉ
  8453.  
  8454.  
  8455. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  8456.  
  8457.  
  8458. ΓòÉΓòÉΓòÉ <hidden> Open New Source ΓòÉΓòÉΓòÉ
  8459.  
  8460.  
  8461. ΓòÉΓòÉΓòÉ <hidden> Where is Execution Point ΓòÉΓòÉΓòÉ
  8462.  
  8463.  
  8464. ΓòÉΓòÉΓòÉ <hidden> Startup ΓòÉΓòÉΓòÉ
  8465.  
  8466.  
  8467. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  8468.  
  8469.  
  8470. ΓòÉΓòÉΓòÉ <hidden> Find Function Dialog ΓòÉΓòÉΓòÉ
  8471.  
  8472.  
  8473. ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
  8474.  
  8475.  
  8476. ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
  8477.  
  8478.  
  8479. ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
  8480.  
  8481.  
  8482. ΓòÉΓòÉΓòÉ <hidden> Set Address ΓòÉΓòÉΓòÉ
  8483.  
  8484.  
  8485. ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
  8486.  
  8487.  
  8488. ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
  8489.  
  8490.  
  8491. ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
  8492.  
  8493.  
  8494. ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
  8495.  
  8496.  
  8497. ΓòÉΓòÉΓòÉ <hidden> Monitors Menu ΓòÉΓòÉΓòÉ
  8498.  
  8499.  
  8500. ΓòÉΓòÉΓòÉ <hidden> Call Stack Window ΓòÉΓòÉΓòÉ
  8501.  
  8502.  
  8503. ΓòÉΓòÉΓòÉ <hidden> Registers Monitor ΓòÉΓòÉΓòÉ
  8504.  
  8505.  
  8506. ΓòÉΓòÉΓòÉ <hidden> Storage Monitor ΓòÉΓòÉΓòÉ
  8507.  
  8508.  
  8509. ΓòÉΓòÉΓòÉ <hidden> Local Variables Monitor ΓòÉΓòÉΓòÉ
  8510.  
  8511.  
  8512. ΓòÉΓòÉΓòÉ <hidden> Run Menu ΓòÉΓòÉΓòÉ
  8513.  
  8514.  
  8515. ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
  8516.  
  8517.  
  8518. ΓòÉΓòÉΓòÉ <hidden> Halt ΓòÉΓòÉΓòÉ
  8519.  
  8520.  
  8521. ΓòÉΓòÉΓòÉ <hidden> Restart ΓòÉΓòÉΓòÉ
  8522.  
  8523.  
  8524. ΓòÉΓòÉΓòÉ <hidden> Hide Debugger on Run ΓòÉΓòÉΓòÉ
  8525.  
  8526.  
  8527. ΓòÉΓòÉΓòÉ <hidden> Check Heap When Stopping ΓòÉΓòÉΓòÉ
  8528.  
  8529.  
  8530. ΓòÉΓòÉΓòÉ <hidden> Thread Enabled ΓòÉΓòÉΓòÉ
  8531.  
  8532.  
  8533. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8534.  
  8535.  
  8536. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8537.  
  8538.  
  8539. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8540.  
  8541.  
  8542. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8543.  
  8544.  
  8545. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8546.  
  8547.  
  8548. ΓòÉΓòÉΓòÉ <hidden> Debugger Settings ΓòÉΓòÉΓòÉ
  8549.  
  8550.  
  8551. ΓòÉΓòÉΓòÉ <hidden> Debugger Properties Dialog ΓòÉΓòÉΓòÉ
  8552.  
  8553.  
  8554. ΓòÉΓòÉΓòÉ <hidden> Monitor Properties Dialog ΓòÉΓòÉΓòÉ
  8555.  
  8556.  
  8557. ΓòÉΓòÉΓòÉ <hidden> PM Debugging Mode (OS/2 Only) ΓòÉΓòÉΓòÉ
  8558.  
  8559.  
  8560. ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
  8561.  
  8562.  
  8563. ΓòÉΓòÉΓòÉ <hidden> Exception Filtering ΓòÉΓòÉΓòÉ
  8564.  
  8565.  
  8566. ΓòÉΓòÉΓòÉ <hidden> Save Debugger Window Positions ΓòÉΓòÉΓòÉ
  8567.  
  8568.  
  8569. ΓòÉΓòÉΓòÉ <hidden> Global Font Change ΓòÉΓòÉΓòÉ
  8570.  
  8571.  
  8572. ΓòÉΓòÉΓòÉ <hidden> Enable Window Cascading ΓòÉΓòÉΓòÉ
  8573.  
  8574.  
  8575. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8576.  
  8577.  
  8578. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8579.  
  8580.  
  8581. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8582.  
  8583.  
  8584. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8585.  
  8586.  
  8587. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  8588.  
  8589.  
  8590. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8591.  
  8592.  
  8593. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8594.  
  8595.  
  8596. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8597.  
  8598.  
  8599. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8600.  
  8601.  
  8602. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8603.  
  8604.  
  8605. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8606.  
  8607.  
  8608. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8609.  
  8610.  
  8611. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8612.  
  8613.  
  8614. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8615.  
  8616.  
  8617. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8618.  
  8619.  
  8620. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8621.  
  8622.  
  8623. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8624.  
  8625.  
  8626. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8627.  
  8628.  
  8629. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8630.  
  8631.  
  8632. ΓòÉΓòÉΓòÉ <hidden> Threads/Components Popup Menu ΓòÉΓòÉΓòÉ
  8633.  
  8634.  
  8635. ΓòÉΓòÉΓòÉ <hidden> Source Window ΓòÉΓòÉΓòÉ
  8636.  
  8637.  
  8638. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  8639.  
  8640.  
  8641. ΓòÉΓòÉΓòÉ <hidden> Open New Source ΓòÉΓòÉΓòÉ
  8642.  
  8643.  
  8644. ΓòÉΓòÉΓòÉ <hidden> Where is Execution Point ΓòÉΓòÉΓòÉ
  8645.  
  8646.  
  8647. ΓòÉΓòÉΓòÉ <hidden> Startup ΓòÉΓòÉΓòÉ
  8648.  
  8649.  
  8650. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  8651.  
  8652.  
  8653. ΓòÉΓòÉΓòÉ <hidden> Find Function Dialog ΓòÉΓòÉΓòÉ
  8654.  
  8655.  
  8656. ΓòÉΓòÉΓòÉ <hidden> View Menu ΓòÉΓòÉΓòÉ
  8657.  
  8658.  
  8659. ΓòÉΓòÉΓòÉ <hidden> Find ΓòÉΓòÉΓòÉ
  8660.  
  8661.  
  8662. ΓòÉΓòÉΓòÉ <hidden> Find Next ΓòÉΓòÉΓòÉ
  8663.  
  8664.  
  8665. ΓòÉΓòÉΓòÉ <hidden> Scroll to Line Number ΓòÉΓòÉΓòÉ
  8666.  
  8667.  
  8668. ΓòÉΓòÉΓòÉ <hidden> Select Include ΓòÉΓòÉΓòÉ
  8669.  
  8670.  
  8671. ΓòÉΓòÉΓòÉ <hidden> Change Text File ΓòÉΓòÉΓòÉ
  8672.  
  8673.  
  8674. ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
  8675.  
  8676.  
  8677. ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
  8678.  
  8679.  
  8680. ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
  8681.  
  8682.  
  8683. ΓòÉΓòÉΓòÉ <hidden> Set Address ΓòÉΓòÉΓòÉ
  8684.  
  8685.  
  8686. ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
  8687.  
  8688.  
  8689. ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
  8690.  
  8691.  
  8692. ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
  8693.  
  8694.  
  8695. ΓòÉΓòÉΓòÉ <hidden> Toggle at Current Line ΓòÉΓòÉΓòÉ
  8696.  
  8697.  
  8698. ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
  8699.  
  8700.  
  8701. ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  8702.  
  8703.  
  8704. ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  8705.  
  8706.  
  8707. ΓòÉΓòÉΓòÉ <hidden> Monitors Menu ΓòÉΓòÉΓòÉ
  8708.  
  8709.  
  8710. ΓòÉΓòÉΓòÉ <hidden> Monitor Expression Dialog ΓòÉΓòÉΓòÉ
  8711.  
  8712.  
  8713. ΓòÉΓòÉΓòÉ <hidden> Call Stack Window ΓòÉΓòÉΓòÉ
  8714.  
  8715.  
  8716. ΓòÉΓòÉΓòÉ <hidden> Registers Monitor ΓòÉΓòÉΓòÉ
  8717.  
  8718.  
  8719. ΓòÉΓòÉΓòÉ <hidden> Storage Monitor ΓòÉΓòÉΓòÉ
  8720.  
  8721.  
  8722. ΓòÉΓòÉΓòÉ <hidden> Local Variables Monitor ΓòÉΓòÉΓòÉ
  8723.  
  8724.  
  8725. ΓòÉΓòÉΓòÉ <hidden> Run Menu ΓòÉΓòÉΓòÉ
  8726.  
  8727.  
  8728. ΓòÉΓòÉΓòÉ <hidden> Step Over ΓòÉΓòÉΓòÉ
  8729.  
  8730.  
  8731. ΓòÉΓòÉΓòÉ <hidden> Step Into ΓòÉΓòÉΓòÉ
  8732.  
  8733.  
  8734. ΓòÉΓòÉΓòÉ <hidden> Step Debug ΓòÉΓòÉΓòÉ
  8735.  
  8736.  
  8737. ΓòÉΓòÉΓòÉ <hidden> Step Return ΓòÉΓòÉΓòÉ
  8738.  
  8739.  
  8740. ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
  8741.  
  8742.  
  8743. ΓòÉΓòÉΓòÉ <hidden> Halt ΓòÉΓòÉΓòÉ
  8744.  
  8745.  
  8746. ΓòÉΓòÉΓòÉ <hidden> Restart ΓòÉΓòÉΓòÉ
  8747.  
  8748.  
  8749. ΓòÉΓòÉΓòÉ <hidden> Run to Location ΓòÉΓòÉΓòÉ
  8750.  
  8751.  
  8752. ΓòÉΓòÉΓòÉ <hidden> Jump to Location ΓòÉΓòÉΓòÉ
  8753.  
  8754.  
  8755. ΓòÉΓòÉΓòÉ <hidden> Hide Debugger on Run ΓòÉΓòÉΓòÉ
  8756.  
  8757.  
  8758. ΓòÉΓòÉΓòÉ <hidden> Check Heap When Stopping ΓòÉΓòÉΓòÉ
  8759.  
  8760.  
  8761. ΓòÉΓòÉΓòÉ <hidden> Thread Enabled ΓòÉΓòÉΓòÉ
  8762.  
  8763.  
  8764. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8765.  
  8766.  
  8767. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8768.  
  8769.  
  8770. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8771.  
  8772.  
  8773. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8774.  
  8775.  
  8776. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8777.  
  8778.  
  8779. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  8780.  
  8781.  
  8782. ΓòÉΓòÉΓòÉ <hidden> Debugger Settings ΓòÉΓòÉΓòÉ
  8783.  
  8784.  
  8785. ΓòÉΓòÉΓòÉ <hidden> Debugger Properties Dialog ΓòÉΓòÉΓòÉ
  8786.  
  8787.  
  8788. ΓòÉΓòÉΓòÉ <hidden> Monitor Properties Dialog ΓòÉΓòÉΓòÉ
  8789.  
  8790.  
  8791. ΓòÉΓòÉΓòÉ <hidden> PM Debugging Mode (OS/2 Only) ΓòÉΓòÉΓòÉ
  8792.  
  8793.  
  8794. ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
  8795.  
  8796.  
  8797. ΓòÉΓòÉΓòÉ <hidden> Exception Filtering ΓòÉΓòÉΓòÉ
  8798.  
  8799.  
  8800. ΓòÉΓòÉΓòÉ <hidden> Save Debugger Window Positions ΓòÉΓòÉΓòÉ
  8801.  
  8802.  
  8803. ΓòÉΓòÉΓòÉ <hidden> Global Font Change ΓòÉΓòÉΓòÉ
  8804.  
  8805.  
  8806. ΓòÉΓòÉΓòÉ <hidden> Enable Window Cascading ΓòÉΓòÉΓòÉ
  8807.  
  8808.  
  8809. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8810.  
  8811.  
  8812. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8813.  
  8814.  
  8815. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8816.  
  8817.  
  8818. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  8819.  
  8820.  
  8821. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  8822.  
  8823.  
  8824. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8825.  
  8826.  
  8827. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8828.  
  8829.  
  8830. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8831.  
  8832.  
  8833. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8834.  
  8835.  
  8836. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8837.  
  8838.  
  8839. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8840.  
  8841.  
  8842. ΓòÉΓòÉΓòÉ <hidden> Source ΓòÉΓòÉΓòÉ
  8843.  
  8844.  
  8845. ΓòÉΓòÉΓòÉ <hidden> Disassembly ΓòÉΓòÉΓòÉ
  8846.  
  8847.  
  8848. ΓòÉΓòÉΓòÉ <hidden> Mixed ΓòÉΓòÉΓòÉ
  8849.  
  8850.  
  8851. ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  8852.  
  8853.  
  8854. ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  8855.  
  8856.  
  8857. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8858.  
  8859.  
  8860. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8861.  
  8862.  
  8863. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8864.  
  8865.  
  8866. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8867.  
  8868.  
  8869. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8870.  
  8871.  
  8872. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8873.  
  8874.  
  8875. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8876.  
  8877.  
  8878. ΓòÉΓòÉΓòÉ <hidden> Code Area Popup Menu ΓòÉΓòÉΓòÉ
  8879.  
  8880.  
  8881. ΓòÉΓòÉΓòÉ <hidden> Breakpoints List Window ΓòÉΓòÉΓòÉ
  8882.  
  8883.  
  8884. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  8885.  
  8886.  
  8887. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  8888.  
  8889.  
  8890. ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
  8891.  
  8892.  
  8893. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  8894.  
  8895.  
  8896. ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
  8897.  
  8898.  
  8899. ΓòÉΓòÉΓòÉ <hidden> Modify ΓòÉΓòÉΓòÉ
  8900.  
  8901.  
  8902. ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
  8903.  
  8904.  
  8905. ΓòÉΓòÉΓòÉ <hidden> Disable All ΓòÉΓòÉΓòÉ
  8906.  
  8907.  
  8908. ΓòÉΓòÉΓòÉ <hidden> Enable All ΓòÉΓòÉΓòÉ
  8909.  
  8910.  
  8911. ΓòÉΓòÉΓòÉ <hidden> Set Menu ΓòÉΓòÉΓòÉ
  8912.  
  8913.  
  8914. ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
  8915.  
  8916.  
  8917. ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
  8918.  
  8919.  
  8920. ΓòÉΓòÉΓòÉ <hidden> Set Address ΓòÉΓòÉΓòÉ
  8921.  
  8922.  
  8923. ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
  8924.  
  8925.  
  8926. ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
  8927.  
  8928.  
  8929. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8930.  
  8931.  
  8932. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8933.  
  8934.  
  8935. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  8936.  
  8937.  
  8938. ΓòÉΓòÉΓòÉ <hidden> Sort ΓòÉΓòÉΓòÉ
  8939.  
  8940.  
  8941. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8942.  
  8943.  
  8944. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  8945.  
  8946.  
  8947. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8948.  
  8949.  
  8950. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8951.  
  8952.  
  8953. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8954.  
  8955.  
  8956. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8957.  
  8958.  
  8959. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8960.  
  8961.  
  8962. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  8963.  
  8964.  
  8965. ΓòÉΓòÉΓòÉ <hidden> View ΓòÉΓòÉΓòÉ
  8966.  
  8967.  
  8968. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  8969.  
  8970.  
  8971. ΓòÉΓòÉΓòÉ <hidden> Modify ΓòÉΓòÉΓòÉ
  8972.  
  8973.  
  8974. ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
  8975.  
  8976.  
  8977. ΓòÉΓòÉΓòÉ <hidden> Call Stack Window ΓòÉΓòÉΓòÉ
  8978.  
  8979.  
  8980. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  8981.  
  8982.  
  8983. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  8984.  
  8985.  
  8986. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8987.  
  8988.  
  8989. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8990.  
  8991.  
  8992. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  8993.  
  8994.  
  8995. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  8996.  
  8997.  
  8998. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  8999.  
  9000.  
  9001. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9002.  
  9003.  
  9004. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9005.  
  9006.  
  9007. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9008.  
  9009.  
  9010. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9011.  
  9012.  
  9013. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9014.  
  9015.  
  9016. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9017.  
  9018.  
  9019. ΓòÉΓòÉΓòÉ <hidden> View Menu ΓòÉΓòÉΓòÉ
  9020.  
  9021.  
  9022. ΓòÉΓòÉΓòÉ <hidden> Private Monitor ΓòÉΓòÉΓòÉ
  9023.  
  9024.  
  9025. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  9026.  
  9027.  
  9028. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  9029.  
  9030.  
  9031. ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
  9032.  
  9033.  
  9034. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  9035.  
  9036.  
  9037. ΓòÉΓòÉΓòÉ <hidden> Delete All ΓòÉΓòÉΓòÉ
  9038.  
  9039.  
  9040. ΓòÉΓòÉΓòÉ <hidden> Select All ΓòÉΓòÉΓòÉ
  9041.  
  9042.  
  9043. ΓòÉΓòÉΓòÉ <hidden> Deselect All ΓòÉΓòÉΓòÉ
  9044.  
  9045.  
  9046. ΓòÉΓòÉΓòÉ <hidden> Enable ΓòÉΓòÉΓòÉ
  9047.  
  9048.  
  9049. ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
  9050.  
  9051.  
  9052. ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
  9053.  
  9054.  
  9055. ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
  9056.  
  9057.  
  9058. ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
  9059.  
  9060.  
  9061. ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
  9062.  
  9063.  
  9064. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9065.  
  9066.  
  9067. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9068.  
  9069.  
  9070. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9071.  
  9072.  
  9073. ΓòÉΓòÉΓòÉ <hidden> Show Context ΓòÉΓòÉΓòÉ
  9074.  
  9075.  
  9076. ΓòÉΓòÉΓòÉ <hidden> Show Enablement ΓòÉΓòÉΓòÉ
  9077.  
  9078.  
  9079. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9080.  
  9081.  
  9082. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9083.  
  9084.  
  9085. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9086.  
  9087.  
  9088. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9089.  
  9090.  
  9091. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9092.  
  9093.  
  9094. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9095.  
  9096.  
  9097. ΓòÉΓòÉΓòÉ <hidden> Program Monitor ΓòÉΓòÉΓòÉ
  9098.  
  9099.  
  9100. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  9101.  
  9102.  
  9103. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  9104.  
  9105.  
  9106. ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
  9107.  
  9108.  
  9109. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  9110.  
  9111.  
  9112. ΓòÉΓòÉΓòÉ <hidden> Delete All ΓòÉΓòÉΓòÉ
  9113.  
  9114.  
  9115. ΓòÉΓòÉΓòÉ <hidden> Select All ΓòÉΓòÉΓòÉ
  9116.  
  9117.  
  9118. ΓòÉΓòÉΓòÉ <hidden> Deselect All ΓòÉΓòÉΓòÉ
  9119.  
  9120.  
  9121. ΓòÉΓòÉΓòÉ <hidden> Enable ΓòÉΓòÉΓòÉ
  9122.  
  9123.  
  9124. ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
  9125.  
  9126.  
  9127. ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
  9128.  
  9129.  
  9130. ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
  9131.  
  9132.  
  9133. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9134.  
  9135.  
  9136. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9137.  
  9138.  
  9139. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9140.  
  9141.  
  9142. ΓòÉΓòÉΓòÉ <hidden> Show Context ΓòÉΓòÉΓòÉ
  9143.  
  9144.  
  9145. ΓòÉΓòÉΓòÉ <hidden> Show Enablement ΓòÉΓòÉΓòÉ
  9146.  
  9147.  
  9148. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  9149.  
  9150.  
  9151. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9152.  
  9153.  
  9154. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9155.  
  9156.  
  9157. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9158.  
  9159.  
  9160. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9161.  
  9162.  
  9163. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9164.  
  9165.  
  9166. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9167.  
  9168.  
  9169. ΓòÉΓòÉΓòÉ <hidden> Local Variables Monitor ΓòÉΓòÉΓòÉ
  9170.  
  9171.  
  9172. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  9173.  
  9174.  
  9175. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  9176.  
  9177.  
  9178. ΓòÉΓòÉΓòÉ <hidden> Edit Menu ΓòÉΓòÉΓòÉ
  9179.  
  9180.  
  9181. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  9182.  
  9183.  
  9184. ΓòÉΓòÉΓòÉ <hidden> Select All ΓòÉΓòÉΓòÉ
  9185.  
  9186.  
  9187. ΓòÉΓòÉΓòÉ <hidden> Deselect All ΓòÉΓòÉΓòÉ
  9188.  
  9189.  
  9190. ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
  9191.  
  9192.  
  9193. ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
  9194.  
  9195.  
  9196. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9197.  
  9198.  
  9199. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9200.  
  9201.  
  9202. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9203.  
  9204.  
  9205. ΓòÉΓòÉΓòÉ <hidden> Show Context ΓòÉΓòÉΓòÉ
  9206.  
  9207.  
  9208. ΓòÉΓòÉΓòÉ <hidden> Show Enablement ΓòÉΓòÉΓòÉ
  9209.  
  9210.  
  9211. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  9212.  
  9213.  
  9214. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9215.  
  9216.  
  9217. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9218.  
  9219.  
  9220. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9221.  
  9222.  
  9223. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9224.  
  9225.  
  9226. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9227.  
  9228.  
  9229. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9230.  
  9231.  
  9232. ΓòÉΓòÉΓòÉ <hidden> Popup Monitor ΓòÉΓòÉΓòÉ
  9233.  
  9234.  
  9235. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  9236.  
  9237.  
  9238. ΓòÉΓòÉΓòÉ <hidden> Disable ΓòÉΓòÉΓòÉ
  9239.  
  9240.  
  9241. ΓòÉΓòÉΓòÉ <hidden> Edit Contents ΓòÉΓòÉΓòÉ
  9242.  
  9243.  
  9244. ΓòÉΓòÉΓòÉ <hidden> Dereference ΓòÉΓòÉΓòÉ
  9245.  
  9246.  
  9247. ΓòÉΓòÉΓòÉ <hidden> Representation, Next Representation ΓòÉΓòÉΓòÉ
  9248.  
  9249.  
  9250. ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
  9251.  
  9252.  
  9253. ΓòÉΓòÉΓòÉ <hidden> Registers Monitor ΓòÉΓòÉΓòÉ
  9254.  
  9255.  
  9256. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  9257.  
  9258.  
  9259. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  9260.  
  9261.  
  9262. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9263.  
  9264.  
  9265. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9266.  
  9267.  
  9268. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9269.  
  9270.  
  9271. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9272.  
  9273.  
  9274. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  9275.  
  9276.  
  9277. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9278.  
  9279.  
  9280. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9281.  
  9282.  
  9283. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9284.  
  9285.  
  9286. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9287.  
  9288.  
  9289. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9290.  
  9291.  
  9292. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9293.  
  9294.  
  9295. ΓòÉΓòÉΓòÉ <hidden> Storage Monitor ΓòÉΓòÉΓòÉ
  9296.  
  9297.  
  9298. ΓòÉΓòÉΓòÉ <hidden> File Menu ΓòÉΓòÉΓòÉ
  9299.  
  9300.  
  9301. ΓòÉΓòÉΓòÉ <hidden> Close Debugger ΓòÉΓòÉΓòÉ
  9302.  
  9303.  
  9304. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9305.  
  9306.  
  9307. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9308.  
  9309.  
  9310. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9311.  
  9312.  
  9313. ΓòÉΓòÉΓòÉ <hidden> Monitor Expression in Storage ΓòÉΓòÉΓòÉ
  9314.  
  9315.  
  9316. ΓòÉΓòÉΓòÉ <hidden> Options Menu ΓòÉΓòÉΓòÉ
  9317.  
  9318.  
  9319. ΓòÉΓòÉΓòÉ <hidden> Windows Menu ΓòÉΓòÉΓòÉ
  9320.  
  9321.  
  9322. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9323.  
  9324.  
  9325. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9326.  
  9327.  
  9328. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9329.  
  9330.  
  9331. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9332.  
  9333.  
  9334. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9335.  
  9336.  
  9337. ΓòÉΓòÉΓòÉ <hidden> Help ΓòÉΓòÉΓòÉ
  9338.  
  9339.  
  9340. ΓòÉΓòÉΓòÉ <hidden> Postmortem Information Dialog ΓòÉΓòÉΓòÉ
  9341.  
  9342.  
  9343. ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
  9344.  
  9345.  
  9346. ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
  9347.  
  9348.  
  9349. ΓòÉΓòÉΓòÉ <hidden> Shortcut Keys ΓòÉΓòÉΓòÉ
  9350.  
  9351.  
  9352. ΓòÉΓòÉΓòÉ <hidden> Set Line ΓòÉΓòÉΓòÉ
  9353.  
  9354.  
  9355. ΓòÉΓòÉΓòÉ <hidden> Set Function ΓòÉΓòÉΓòÉ
  9356.  
  9357.  
  9358. ΓòÉΓòÉΓòÉ <hidden> Set Address ΓòÉΓòÉΓòÉ
  9359.  
  9360.  
  9361. ΓòÉΓòÉΓòÉ <hidden> Set Storage Change ΓòÉΓòÉΓòÉ
  9362.  
  9363.  
  9364. ΓòÉΓòÉΓòÉ <hidden> Set Load Occurrence ΓòÉΓòÉΓòÉ
  9365.  
  9366.  
  9367. ΓòÉΓòÉΓòÉ <hidden> Breakpoints Menu ΓòÉΓòÉΓòÉ
  9368.  
  9369.  
  9370. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9371.  
  9372.  
  9373. ΓòÉΓòÉΓòÉ <hidden> Default Data Representation ΓòÉΓòÉΓòÉ
  9374.  
  9375.  
  9376. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9377.  
  9378.  
  9379. ΓòÉΓòÉΓòÉ <hidden> Exception Filtering Dialog ΓòÉΓòÉΓòÉ
  9380.  
  9381.  
  9382. ΓòÉΓòÉΓòÉ <hidden> Exception Dialog ΓòÉΓòÉΓòÉ
  9383.  
  9384.  
  9385. ΓòÉΓòÉΓòÉ <hidden> Find Function Dialog ΓòÉΓòÉΓòÉ
  9386.  
  9387.  
  9388. ΓòÉΓòÉΓòÉ <hidden> Monitor Expression Dialog ΓòÉΓòÉΓòÉ
  9389.  
  9390.  
  9391. ΓòÉΓòÉΓòÉ <hidden> Monitor Properties Dialog ΓòÉΓòÉΓòÉ
  9392.  
  9393.  
  9394. ΓòÉΓòÉΓòÉ <hidden> Open New Source Dialog ΓòÉΓòÉΓòÉ
  9395.  
  9396.  
  9397. ΓòÉΓòÉΓòÉ <hidden> Overloaded Dialog ΓòÉΓòÉΓòÉ
  9398.  
  9399.  
  9400. ΓòÉΓòÉΓòÉ <hidden> Overloaded Dialog ΓòÉΓòÉΓòÉ
  9401.  
  9402.  
  9403. ΓòÉΓòÉΓòÉ <hidden> PM Debugging Mode (OS/2 Only) ΓòÉΓòÉΓòÉ
  9404.  
  9405.  
  9406. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  9407.  
  9408.  
  9409. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  9410.  
  9411.  
  9412. ΓòÉΓòÉΓòÉ <hidden> Process List (Windows NT and Windows 95 Only) ΓòÉΓòÉΓòÉ
  9413.  
  9414.  
  9415. ΓòÉΓòÉΓòÉ <hidden> Program Profiles ΓòÉΓòÉΓòÉ
  9416.  
  9417.  
  9418. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9419.  
  9420.  
  9421. ΓòÉΓòÉΓòÉ <hidden> Change Text File ΓòÉΓòÉΓòÉ
  9422.  
  9423.  
  9424. ΓòÉΓòÉΓòÉ <hidden> Window Settings ΓòÉΓòÉΓòÉ
  9425.  
  9426.  
  9427. ΓòÉΓòÉΓòÉ <hidden> Source Filename Dialog ΓòÉΓòÉΓòÉ
  9428.  
  9429.  
  9430. ΓòÉΓòÉΓòÉ <hidden> Debugger Properties Dialog ΓòÉΓòÉΓòÉ
  9431.  
  9432.  
  9433. ΓòÉΓòÉΓòÉ <hidden> Scroll to Line Number ΓòÉΓòÉΓòÉ
  9434.  
  9435.  
  9436. ΓòÉΓòÉΓòÉ <hidden> Find ΓòÉΓòÉΓòÉ
  9437.  
  9438.  
  9439. ΓòÉΓòÉΓòÉ <hidden> Select Include ΓòÉΓòÉΓòÉ
  9440.  
  9441.  
  9442. ΓòÉΓòÉΓòÉ <hidden> Monitor Expression in Storage ΓòÉΓòÉΓòÉ
  9443.  
  9444.  
  9445. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9446.  
  9447.  
  9448. ΓòÉΓòÉΓòÉ <hidden> Display Style ΓòÉΓòÉΓòÉ
  9449.  
  9450.  
  9451. ΓòÉΓòÉΓòÉ <hidden> Startup Dialog ΓòÉΓòÉΓòÉ
  9452.  
  9453.  
  9454. ΓòÉΓòÉΓòÉ <hidden> Other Elements ΓòÉΓòÉΓòÉ
  9455.  
  9456.  
  9457. ΓòÉΓòÉΓòÉ <hidden> Delete ΓòÉΓòÉΓòÉ
  9458.  
  9459.  
  9460. ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  9461.  
  9462.  
  9463. ΓòÉΓòÉΓòÉ <hidden> Prefix Area Popup Menu ΓòÉΓòÉΓòÉ
  9464.  
  9465.  
  9466. ΓòÉΓòÉΓòÉ <hidden> Run ΓòÉΓòÉΓòÉ
  9467.  
  9468.  
  9469. ΓòÉΓòÉΓòÉ <hidden> Step Into ΓòÉΓòÉΓòÉ
  9470.  
  9471.  
  9472. ΓòÉΓòÉΓòÉ <hidden> Step Over ΓòÉΓòÉΓòÉ
  9473.  
  9474.  
  9475. ΓòÉΓòÉΓòÉ <hidden> Step Debug ΓòÉΓòÉΓòÉ
  9476.  
  9477.  
  9478. ΓòÉΓòÉΓòÉ <hidden> Step Return ΓòÉΓòÉΓòÉ
  9479.  
  9480.  
  9481. ΓòÉΓòÉΓòÉ <hidden> Call Stack Button ΓòÉΓòÉΓòÉ
  9482.  
  9483.  
  9484. ΓòÉΓòÉΓòÉ <hidden> Registers Button ΓòÉΓòÉΓòÉ
  9485.  
  9486.  
  9487. ΓòÉΓòÉΓòÉ <hidden> Storage Button ΓòÉΓòÉΓòÉ
  9488.  
  9489.  
  9490. ΓòÉΓòÉΓòÉ <hidden> Session Control Button ΓòÉΓòÉΓòÉ
  9491.  
  9492.  
  9493. ΓòÉΓòÉΓòÉ <hidden> Monitor Expression Button ΓòÉΓòÉΓòÉ
  9494.  
  9495.  
  9496. ΓòÉΓòÉΓòÉ <hidden> Breakpoints Button ΓòÉΓòÉΓòÉ
  9497.  
  9498.  
  9499. ΓòÉΓòÉΓòÉ <hidden> Growth Direction Push button ΓòÉΓòÉΓòÉ
  9500.  
  9501.  
  9502. ΓòÉΓòÉΓòÉ <hidden> Delete Button ΓòÉΓòÉΓòÉ
  9503.  
  9504.  
  9505. ΓòÉΓòÉΓòÉ <hidden> Delete all ΓòÉΓòÉΓòÉ
  9506.  
  9507.