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