═══ 1. Notices ═══ References in this online information to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM licensed program in this publication is not intended to state or imply that only IBM's licensed program may be used. Any functionally equivalent product, program or service that does not infringe any of IBM's intellectual property rights may be used instead of the IBM product, program, or service. Evaluation and verification of operation in conjunction with other products, except those expressly designated by IBM, is the user's responsibility. IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Commercial Relations, IBM Corporation, Purchase, NY 10577. This publication could contain technical inaccuracies or typographical errors. ═══ 1.1. Trademarks and Service Marks ═══ The following terms, denoted by an asterisk (*) in this online documentation, are trademarks of the IBM Corporation in the United States and/or other countries: o IBM o OS/2 o Presentation Manager ═══ 2. Glossary ═══ Double-click on any term for a definition: o Asynchronous o Automatic variable o Breakpoint o Component o Context o Debug data o Debuggee o Desktop o Desktop-object o Disable o Enable o Event breakpoint o Executable files o Executable statement o Functions o Image o Local variable o Location breakpoint o Non-debuggee o Object files o Overloaded o Parent-child relationship o Prefix area o Process o Recursion level o Restart information o Session o Shortcut keys o Stopping thread o Storage o Synchronous o Tag word o Thread. o Post messages. o Send messages. o Profile information. o Z-order. ═══ 2.1. Context ═══ Context is the information relating to an expression or variable when it is valid. The information consists of the source file, line number, and thread. ═══ 2.2. Profile information ═══ Profile information This information does not pertain to the specific application being debugged. ═══ 2.3. Post Messages ═══ Messages created through WinPostMsg or WinPostMsgQueu. The calls place the message on the Message Queue of the receiver. The message is posted on the Message Queue. The calls return immediately not waiting for the receiver to return. ═══ 2.4. Send Messages ═══ Messages created through WinSendMsg call. The WinSendMsg function call does not complete until the message has been processed by the window procedure whose return value is returned. If the window receiving the message belongs to the same thread, the window function is called immediately as a subroutine. If the window is of another thread or process, the operating system switches to the appropriate thread then enters the necessary window procedure recursively. The message is not placed in the queue of the destination thread. ═══ 2.5. Parent-Child Relationship . ═══ Parent-child relationship defines the appearance of a window when it is drawn on the screen. A child window is drawn relative to its parent window. No part of a child window ever appears outside the borders of its parent window. ═══ 2.6. Image ═══ Image is a graphical representation of a program's windows in three dimensions (x, y, and z). A window is represented on a plane (x and y), using its size and position. Window planes in the image are perpendicular to the z-axis and positioned in z-order. A window at the top of z-order has the largest z coordinate and is the top window. ═══ 2.7. Z-Order ═══ Z-order is the order of overlapping windows. Every window, in addition to having a screen position, has a z-order position. This viewing order is oriented along an imaginary axis, the z-axis, extending outward from the screen. A window at the bottom of the z-order is overlapped by all sibling windows. ═══ 2.8. Debuggee ═══ Debuggee is the application that is being debugged. ═══ 2.9. Non-Debuggee ═══ Non-debuggee is an application that is not being debugged. ═══ 2.10. Debuggee Window ═══ Debuggee window is a window built by the application being debugged. Every debuggee window is a descendent of the desktop or desktop-object window. ═══ 2.11. Non-debuggee Window ═══ Non-debuggee window is a window not built by the application being debugged. Every non-debuggee window is a descendent of the desktop or desktop-object window. ═══ 2.12. Desktop window ═══ Desktop window is a window automatically created by OS/2 when it starts a PM interface session. The desktop window serves as a base (bottom-most) window for the windows which can be displayed. Whether a descendent window is actually seen depends on the window visibility, its position and size, and overlapping windows. The desktop window paints the background color of the screen. ═══ 2.13. Desktop-Object Window ═══ Desktop-object window is a window automatically created by OS/2 when it starts a PM interface session. The desktop-object window serves as a base (bottom-most) window for the windows that can not be displayed. This is irrespective for the window visibility, its position and size, and overlapping windows. Any descendents of the desktop-object windows are called object windows. Object windows provide services to other windows. ═══ 2.14. Functions ═══ A Function is a block of statements executed by a function call. Synonymous with procedures. ═══ 2.15. Overloaded ═══ An overloaded function occurs when there is more than one function with the same name. ═══ 2.16. Executable statement ═══ An executable statement is a statement where you can stop the execution of your program by setting breakpoints. These statements are displayed in blue. ═══ 2.17. Enable ═══ Enable allows a thread to execute. ═══ 2.18. Disable ═══ Disable prevents a thread to from executing. ═══ 2.19. Executable files ═══ Executable files are the EXE or DLL files. ═══ 2.20. Debug data ═══ Debug data is the symbolic and line number information contained in the executable file. ═══ 2.21. Object Files ═══ Object files are the object (OBJ) files. ═══ 2.22. Process ═══ Process is the collection of one or more threads and their associated system resources, such as storage, open files, and devices. ═══ 2.23. Restart information ═══ Restart information is used to restore the debugger windows and breakpoints when debugging a program more than once. It is stored separately for each program debugged. The file extension for the files that contain this information is @2R. Note: Only information for executable files and preloaded DLLs relating to the primary thread is restored. ═══ 2.24. Session ═══ Session is the collection of one or more processes associated with a virtual console such as keyboard, video display, or mouse. ═══ 2.25. Shortcut keys ═══ Shortcut keys are the keyboard keys that you use to invoke the menu choices. ═══ 2.26. Asynchronous ═══ When the debugger is operating in asynchronous mode and the debuggee is stopped, message handling is stopped. All processing of PM messages is suspended except for the debugger which will continue to operate. All PM messages are sent to the debugger, which answers the messages with a simple generic response. Thus, debuggee messages are lost. When you are running the debugger in asynchronous mode, other PM applications running in the system do not halt when the debugger stops. ═══ 2.27. Automatic variable ═══ A variable that is allocated during the invocation of the function containing the variable is called an automatic variable. Every time a function is invoked, a new copy of the variable is placed in storage. ═══ 2.28. Local variable ═══ A local variable is a variable that is specific to a function. The debugger displays the following types of local variables: o Static o Automatic o Parameters. ═══ 2.29. Breakpoint ═══ A breakpoint is a defined location or condition in a program that, when it is met, stops the execution of the program. ═══ 2.30. Event breakpoint ═══ An event breakpoint is one of the following: o A load occurrence breakpoint o A change address breakpoint. ═══ 2.31. Stopping thread ═══ A stopping thread is the thread that caused the program being debugged to stop. ═══ 2.32. Location breakpoint ═══ A location breakpoint is one of the following: o A line breakpoint o An address breakpoint o A function breakpoint. ═══ 2.33. Prefix area ═══ Prefix area is the area within the program view windows where line numbers or address numbers are located. ═══ 2.34. Component ═══ Components are the executable files, source files or object files, and the functions that comprise a program. ═══ 2.35. Recursion level ═══ The number that represents the level of recursion of a function, where the number 0 represents the first invocation. A recursive function is a function that calls itself. ═══ 2.36. Storage ═══ The storage is the computer memory space in use during the execution of a program. ═══ 2.37. Synchronous ═══ When the debugger is operating in synchronous mode and the debuggee is stopped, message handling is stopped. All processing of PM messages is suspended except for the debugger which will continue to operate. The order of all messages is maintained, except for the debugger. No messages are lost. ═══ 2.38. Tag word ═══ The contents of a tag word tell a programmer which registers are in use at a specific time. ═══ 2.39. Thread ═══ A thread is the basic OS/2 unit of execution. A thread gives a program its context, including registers, stack, and processor mode. Multiple threads can be running at the same time, and any particular thread can start another thread. ═══ 3. Debug Session Control Window ═══ The Debug Session Control window is the control window of the debugger and is displayed during the entire debugging session. This window contains the threads and components for the program you are debugging. The Threads box contains the threads and the state of the threads that have been started by your program. The following states are possible for the threads listed in the Threads box: o Enabled and runnable o Disabled and runnable o Critical and runnable o Suspended and runnable o Enabled and blocked o Disabled and blocked o Critical and blocked o Suspended and blocked. To view the state of a thread, click on the plus icon to the left of the thread. You may enable or disable the thread highlighted in the Threads list by toggling the Enabled choice from the Run menu. When a check mark is displayed, threads are enabled and the debugger allows the highlighted thread to be executed. When the check mark is not displayed, threads are disabled and are not executed. You can also double-click on Enabled to change the thread status to Disabled. The Components box shows the executable files that are associated with the program you are debugging. To display a list of object files contained within an executable file, click on the plus icon to the left of the executable file name. To open a program view of an object file, double-click on the object file name. To display a list of functions for a specific object file, click on the plus icon to the left of the object file name. To open a program view to a specific function, double-click on the function name. You can view any component by double-clicking on the name of the component displayed in the Components box, or by highlighting the component and selecting a view from the View cascading choice from the File menu. You specify which components are displayed in the Components list by selecting Options  Window Settings  Only components with debug data. If this choice is enabled, only components compiled and linked with debug data are listed. Otherwise, all components are listed. You can also access any debugger window that is already open and hidden or minimized by selecting the menu choice that displays that window from the Windows menu. Menu Bar Summary File Start or end the debugging session and control the program views. Breakpoints Set and manipulate breakpoints in your programs. Windows Select other windows to be displayed. Run Execute the program, halt execution, or enable/disable threads. Options Access various utility action windows where you can set debugger options. These debugger options control the various debugger windows. Help You have access to several kinds of help information that compliment the online help information that you can get for the debugger. Press F1 or select the Help push button. ═══ 3.1. File Menu ═══ Select choices from the File menu of the Debug Session Control window to start programs, find the current line, replace your current program file with a program file from another location or with a different name, restart the current debugging session, restart a previous debugging session for this program, and end the debugging session. Menu Summary View Select one of the three program view windows. Locate function Open a program view window to a particular function. Open new source Display a new source file. Where Open a program view containing the next line to be executed. Startup Start the program you want to debug after terminating the current program. Restart Restart the current debugging session. Close debug End the debugging session. ═══ 3.1.1. View Cascading Choice ═══ Select the View cascading choice to open a view of your program. You can view the program as: o Source o Disassembly o Mixed. The selected view is displayed in a new window. Program views are thread-specific. Executable lines are displayed in blue and non-executable lines are displayed in black. Any lines that are highlighted in the existing view are also highlighted in the new view and any breakpoints highlighted in the prefix area of the existing view are also shown in the new view. If you select a view that is already open, that view is focused and moved in front of the other windows. ═══ 3.1.2. Where Choice ═══ Select the Where choice to locate the next line to be executed in the thread. ═══ 3.1.3. Startup Choice ═══ Select the Startup choice to start a program for debugging. You can select Startup to finish debugging the program you are currently debugging and to start another program for debugging. When you select Startup, the Startup Information action window appears. ═══ 3.1.4. Restart Choice ═══ Select the Restart choice to terminate the current program and start the debugging session using restart information. ═══ 3.1.5. Source Filename Action Window ═══ The Source Filename action window appears when you try to open a component for which you have debug data, but the debugger cannot locate the source code. To use the Source Filename action window: 1. If the source code is located in another directory on the system, type in the path name and select OK. 2. If you do not have the source code for this component, select Cancel. The Disassembly view is opened for this component. ═══ 3.2. Startup Information Action Window ═══ Use the Startup Information action window to specify the program you want to start for this debugging session. 1. Select a program for debugging by using one of the following methods: o Type the name of the program you want to start in the Program entry field. (If you type the name, it must be the full path name of the file). o Open the Program list by selecting the arrow then selecting a program name. (The programs listed are those for which restart information has been saved). o Select the File List push button and select a program from the Select Program action window. 2. Type any parameters you want to pass to your program in the Parameters entry field. Separate multiple parameters with a space. Note: All DLLs used by your program must be in directories specified in your LIBPATH. 3. Select one of the push buttons to continue. Program Type the name of the program you want to start for your debugging session. You do not need to include the file name extension when you type the program name. Parameters If the program accepts parameters, type the parameters that you want to pass to the program you are starting. Use restart information Select the Use restart information check box to start the debugging session with Note: Restart information is saved with a time stamp. A time stamp check is done before the program is started with restart information. Debug program initialization Select Debug program initialization to halt execution of the application before any initialization routines have been executed. This allows you to debug any DLL initialization routines. Save session settings Select the Save session settings check box to save action window settings that you saved for the next debugging session. ═══ 3.2.1. Push Buttons ═══ OK Select OK to accept the information you have entered and close this action window. Cancel Select Cancel to close this action window. Help Select Help to display help information that tells you how to use this action window. ═══ 3.2.2. Time Stamp Check ═══ Information that is restart information includes the time stamps on the executable files that make up the application. When you select to start a program with restart information, the debugger compares the time stamps in the executable program file (and the pre-loaded dynamic link libraries) with the time stamp on the restart information. If these time stamps do not match, a message box is displayed. Select Yes from the message box to start the program with restart information, select No to load the program without the restart information, or select Cancel to cancel the startup process and return to the Debug Session Control window. If the source has been changed but not compiled, breakpoints might be invalid or appear on the wrong line. ═══ 3.3. Breakpoints Menu ═══ Select choices from the Breakpoints menu to set breakpoints to stop the execution of your program at any point. You can set as many breakpoints as you want. Breakpoints can be set from the Debug Session Control window or from the program view windows. When you set a breakpoint in one view of your program, it is reflected in the other appropriate views. There are five types of breakpoints that can be set. The breakpoints can be customized using the various breakpoint action windows. Menu Summary Line Set a line breakpoint to stop the execution of your program at a specific line number. Function Set a function breakpoint to stop the execution of your program after a specific function is called. Address Set an address breakpoint to stop the execution of your program at specific address. Change address Set a change address breakpoint to stop the execution of your program when contents of memory at a given address changes. Load occurrence Set a load occurrence breakpoint to stop the execution of your program after a DLL is loaded. List List the breakpoints that have been set. Delete all Delete all the breakpoints that have been set. You can also set simple line breakpoints. Double-click on one of the following for the procedure you use to set or clear simple line breakpoints: o Setting simple line breakpoints o Clearing simple line breakpoints. ═══ 3.3.1. Line Choice ═══ Select the Line choice to stop the execution of your program at the line number you select. When you select Line, the Line Breakpoint action window is displayed. You can also set simple line breakpoints. Double-click on one of the following for the procedure you use to set or clear simple line breakpoints: o Setting simple line breakpoints o Clearing simple line breakpoints. ═══ 4. Setting Breakpoints ═══ Use the Setting Breakpoints action window to select the type of breakpoint you want to set in your program. The tabs at the bottom of the notebook represent the five different types of breakpoints. For detailed information on how to set a breakpoint, double-click on one of the following: Line Allows you to set a line breakpoint that stops the execution of your program at a line number. Function Allows you to set a function breakpoint that stops the execution of your program after the function that you specify is called. Address Allows you to set an address breakpoint that stops the execution of your program at an address. Change Allows you to set a change address breakpoint that stops the execution of your program after the contents of memory at a given address changes. Load Allows you to set a load occurrence breakpoint that stops the execution of your program after the DLL that you specify is loaded. List Allows you to see a list of all the breakpoints that have been set. You can also set simple line breakpoints. Double-click on one of the following for the procedure you use to set or clear simple line breakpoints: o Setting simple line breakpoints o Clearing simple line breakpoints. ═══ 4.1. Setting a Line Breakpoint ═══ Use the Line action window to set a line breakpoint. For a description of types you can enter in the action window, double-click on one of the following topics: o Executable o Source o File o Line number o Expression o Thread o Every o From o To Select the appropriate push button to continue. ═══ 4.1.1. Push Buttons ═══ OK Select OK to accept the information you have entered and to close this action window. Set Select Set to set a breakpoint. Default Select Default to change to the default settings. Cancel Select Cancel to close this action window. Help Select Help to display help information that tells you how to use this action window. ═══ 4.1.2. Push Buttons ═══ OK Select OK to accept the information you have entered and to close this action window. Set Select Set to set the breakpoints. Cancel Select Cancel to close this action window. Default Select Default to change to the default settings. File List Select File List to view a list of the files that you can select. Help Select Help to display help information that tells you how to use this action window. ═══ 4.1.3. Setting Simple Line Breakpoints ═══ To set a simple line breakpoint in all threads, double-click in the prefix area of an executable statement in the: o Source view, to set the breakpoint at a specific statement o Disassembly view, to set the breakpoint at a specific machine instruction o Mixed view, to set the breakpoint at a specific machine instruction. (The lines of source code displayed in the Mixed view are treated as comment lines only.) The prefix area turns red indicating that the breakpoint has been set. ═══ 4.1.4. Clearing Simple Line Breakpoints ═══ To remove a simple line breakpoint in all threads, double-click in a red prefix area of the Source, Disassembly, or Mixed program view windows. The color changes indicating that the breakpoint has been cleared. If the prefix area turns grey instead, double-click again to make sure the breakpoint is cleared. ═══ 4.1.5. Executable ═══ If you are setting a breakpoint, select a component from the Executable list: 1. Open the Executable list by selecting the arrow with your mouse. 2. Highlight the executable where you want to set the breakpoint. OR 3. Type the name of the executable in the entry field. ═══ 4.1.6. Source ═══ If you are setting a line breakpoint, select a component from the Source list: 1. Open the Source list by selecting the arrow with your mouse. 2. Highlight the source where you want to set the breakpoint. OR 3. Type the name of the source in the entry field. ═══ 4.1.7. Line Number ═══ To set a line breakpoint, type the line number in the line number entry field. The breakpoint will be set on the line number you selected. ═══ 4.1.8. Address Choice ═══ Select the Address choice to stop the execution of your program at the address you select. When you select Address, the Address Breakpoint action window is displayed. ═══ 4.2. Setting an Address Breakpoint ═══ Use the Address action window to set an address breakpoint. Type in the address that represents the location in your program where you want to set the breakpoint. Note: The address can be either segmented or flat format. To set an address breakpoint for the address 000A1FCC, you would type the following in the Address (hex) entry field. A1FCC For a description of types of data you can enter in the action window, double-click on one of the following topics: o Expression o Thread o Every o From o To Click on the appropriate push button to continue. ═══ 4.2.1. Function Choice ═══ Select the Function choice to stop the execution of your program after the function that you specify is called. When you select Function, the Function Breakpoint action window is displayed. ═══ 4.3. Setting a Function Breakpoint ═══ Use the Function action window to set a function breakpoint. Type the name of the function. If a function is overloaded, then a window is displayed with a list of all the overloaded function names. Select one of the functions from the list. For a description of types of data you can enter in the action window, double-click on one of the following topics: o Executable o Source o Function o Expression o Thread o Every o From o To. All executables Enable this option if you want to search all the executable files for the function. Note: To search for a function in a particular executable file, disable this option and type in the name of the executable file in the Executable entry field and the name of the source file in the Source entry field Debug data only Enable this option if you want to search only the object files that contain debug data. Case Sensitive Enable this option if you want to search for the string exactly as typed. Disable this option if you want to search for both uppercase and lowercase characters. Function Example: To set a function breakpoint for the function my_func, you would type the following in the Function entry field. my_func Note: You cannot set a function breakpoint to a function name that was defined using the define preprocessor directive. Click on the appropriate push button to continue. ═══ 4.3.1. Load Occurrence Choice ═══ Select the Load Occurrence choice to stop the execution of your program after the DLL that you specify is loaded. When you select Load Occurrence, the Load Occurrence Breakpoint action window is displayed. ═══ 4.4. Setting a Load Occurrence Breakpoint ═══ To set a load occurrence breakpoint, type the name of the DLL. Execution stops when the DLL is loaded. Load Occurrence Example: You would type the following in the DLL file name entry field to set a load occurrence breakpoint when MY.DLL is loaded: MY.DLL For a description of types of data you can enter in the action window, double-click on one of the following topics: o Thread o Every o From o To Click on the appropriate push button to continue. ═══ 4.4.1. Change Address Choice ═══ Select the Change address choice to stop the execution of your program after the contents of memory at a given address changes. When you select Change address, the Change Address Breakpoint action window is displayed. ═══ 4.5. Setting a Change Address Breakpoint ═══ To set a change address breakpoint, type a hexadecimal address and select the range of bytes. The range of bytes can be one of the numbers:1, 2, or 4. The 2-byte range must be aligned on a word boundary and the 4-byte range must be aligned on a doubleword boundary. Execution stops when the specified range of memory changes. Change - Address Example: You would type the following in the Address (hex) entry field to set a change - address breakpoint starting at address 000A1FCC. A1FCC Warning: If you set a change address breakpoint that is on the stack, you should remove the breakpoint prior to leaving the routine associated with the breakpoint. Otherwise, when you return from the routine, the routine's stack frame will be removed from the stack leaving the breakpoint intact. Any other routine that gets loaded on the stack will then contain the breakpoint. For a description of types of data you can enter in the action window, double-click on one of the following topics: o Thread o Every o From o To Click on the appropriate push button to continue. ═══ 4.5.1. File ═══ If the source you selected has include files with executable statements, then the File list displays all the file names that contain executable lines. 1. Open the File list by selecting the arrow with your mouse. 2. Highlight the file where you want to set the breakpoint. OR 3. Type the name of the file in the entry field. ═══ 4.5.2. Function ═══ Type in the name of the function where you want to set the breakpoint or select a function from the Function list: 1. Open the Function list by selecting the arrow with your mouse. 2. Highlight the function you want to set the breakpoint. OR 3. Type the name of the function in the entry field. ═══ 4.5.3. Expression ═══ If you are setting an address, function, or line breakpoint, you can also type in an expression. The execution of the program stops only if this condition tests true. For example, you could type the following: (i==1) || (j==k) && (k!=5) Note: Variables in a conditional expression associated with a Function breakpoint are limited to any static or global variables that are known to the called function when the function is called. Local variables and automatic variables cannot be used. The maximum length of the condition is 256 characters. ═══ 4.5.4. Thread ═══ To select a thread ID from the Thread list: 1. Open the Thread list by selecting the arrow with your mouse. 2. Highlight the thread where you want to set the breakpoint. Select Every, the default, to set a breakpoint in all of the active threads in your program. The Every choice is thread independent. Select one of the individual threads to set a breakpoint in one thread only. Threads are added to the Thread list as new threads are activated. ═══ 4.5.5. Every ═══ This field is used for location breakpoints only. Type in a whole integer number to indicate how often the breakpoint should be activated within the From and To range. ═══ 4.5.6. From ═══ This field is used for location breakpoints only. Type in a whole integer number to start activating the breakpoint the nth time the location is encountered. ═══ 4.5.7. To ═══ This field is used for location breakpoints only. Type in a whole integer number to stop activating the breakpoint after the nth time the location is encountered. ═══ 4.5.8. Push Buttons ═══ OK Select OK to set the breakpoint and close this action window. Cancel Select Cancel to close this action window. Help Select Help to display help information that tells you how to use this action window. Default Select Default to change the current window information to the debugger defaults. ═══ 4.5.9. List Choice ═══ Select the List choice to list the breakpoints that you have set. When you select List, the List Breakpoint action window is displayed. ═══ 4.5.10. Delete All Choice ═══ Select the Delete all choice to delete all the breakpoints that you have set. When you select Delete all, an information box is displayed for verification that you want to delete all the breakpoints. ═══ 4.6. List Action Window ═══ Use the List action window to display a list of the breakpoints that have been set. The following information is also provided for each breakpoint. o The enablement state o The type of breakpoint o The position of the breakpoint o The conditions under which the breakpoint is activated. Push Buttons Summary OK Select OK to accept the information you have entered and close this action window. Delete Remove the highlighted breakpoint. Delete all Remove all of the breakpoints displayed in the action window. Sort Sort the breakpoints by different categories. Disable/Enable Disable or enable the highlighted breakpoint. Modify Modify the existing breakpoints. Help Displays the online help for this action window. ═══ 4.6.1. Modify ═══ Use the Modify push button to change the breakpoints that have been set in your program. To modify a breakpoint: 1. Highlight the breakpoint you want to change. 2. Select the Modify push button. The page of notebook is turned to the appropriate type of breakpoint. 3. The entry fields contain the information pertaining to that breakpoint. Make your changes to the entry fields. 4. Select OK to accept the changes and close the action window. If you want to make other changes, select Set to accept the changes and keep the action window open. ═══ 4.6.2. Sort Action Window ═══ Use the Sort action window to sort the breakpoints that have been set in your program. Breakpoints can be sorted according to the following categories: o Type o Executable o Source o File o Function o Line number o Address o Status o Thread o Condition o From o To o Every. Select the category you want and click on the appropriate push button to continue. ═══ 4.7. Windows Menu ═══ Select choices from the Windows menu to view other debugger windows. Menu Summary Local variables Display the local variables for the program's current function. Registers Monitor registers and flags for a particular component or thread. Stack Monitor the call chain stack for a particular thread. Program monitor Create or focus the Program Monitor window. Storage Monitor the storage in your program. Window Analysis Display the windows of the program in a three dimensional view. Message queue monitor Display the PM messages associated with a PM application. Inheritance Display the class hierarchy of a C++ program. ═══ 4.8. Run Menu ═══ Select choices from the Run menu to execute your program, halt execution, or enable or disable threads. When you select a choice from the Run menu, the mouse pointer changes to a clock icon to indicate that the application is running and might require input to continue to the next breakpoint or termination of the program. Menu Summary Thread enabled Enable or disable threads. Run Execute the program from the current line until a breakpoint is encountered or the program terminates. Halt Interrupt the program you are debugging. ═══ 4.8.1. Thread Enabled Choice ═══ Select the Thread enabled choice so that the thread that is highlighted in the Threads box is executed when the program runs. When threads are enabled, a √ symbol appears beside the Thread enabled choice. When threads are not enabled, a √ symbol is not displayed and the highlighted thread is not executed when the program runs. ═══ 4.8.2. Storage Conditional Choice ═══ Select the Storage conditional choice to display the contents of storage used by your program. You can choose to open a new storage window, or you can locate a storage window that is already open by clicking on the arrow. New Open a new storage window. storage address Locate a storage window that is already open. ═══ 4.8.3. New Choice ═══ Select the New choice to open a new storage window. ═══ 4.8.4. Storage Address Choice ═══ Select the storage address choice to open an existing storage window. ═══ 4.8.5. Using the Storage Window ═══ You can scroll through storage using the up or down arrow keys and the PageUp or PageDown keys. To update the storage contents, type over the contents displayed in the Storage window. The display is updated when an elapsed time of one second occurs after the last keystroke has been entered. The contents of all affected windows are updated for each character changed in the Storage window. To specify a new address location, type over the address field displayed in the Storage window. When an elapsed time of one second occurs after the last keystroke has been entered, the window scrolls to the appropriate storage location. ═══ 4.8.6. Storage Data Displayed ═══ The following information can be displayed in the Storage window: o Fields for the displayed addresses. You can select one of the following memory models for the addresses that are displayed: - 16:16 (segmented) memory addresses - Flat memory model addresses - Both segmented and flat memory model addresses. o Fields for the data storage contents. The number of fields displayed and their display characteristics depend on the storage style you select. Storage can be displayed as hex, integer, float, or ASCII. o Titles for the displayed addresses and storage content fields. ═══ 4.8.7. Registers Choice ═══ Select the Registers choice to display the processor and math coprocessor registers. ═══ 4.8.8. Stack Choice ═══ Select the Stack choice to list the active functions or procedures for a particular thread. One call stack exists for each thread. The Stack window displays the call stack information for a given thread. The functions are displayed in the order that they were called. The Stack window contains a line of data for each function call. Each line contains the function name of the procedure or function followed by the data you select in the Display Style action window. You can display the following information for call stack items: o Entry number o Function o Source o Recursion level. ═══ 4.8.9. Local Variables Choice ═══ Select the Local variables choice to display the local variables (static, automatic, and parameters) for the current function. The local variables are displayed in the Local Variable Monitor window. ═══ 4.9. Options Menu ═══ Select choices from the Options menu to control the debugger windows. Menu Summary Window settings Control how the items in the Debug Session Control window are displayed. Session settings Display action windows to control the debugger windows. Profile Change the location of the debugger restart information. file and save or delete restart information for programs that you have debugged. ═══ 4.9.1. Window Settings Choice ═══ Select choices from the Window settings choice to modify the characteristics of the Debug Session Control window. Menu Summary Only components with debug data Display components that contain debug data. Sort threads Sort the threads in the numerical order. Sort components Sort the components in alphabetical order. Titles on Enable or disable the titles from being displayed in the window. Fonts Select the font you want to use for the text displayed in the active window. ═══ 4.9.2. Only Components with Debug Data ═══ You can specify which components are displayed in the Components box. If this option is enabled, a √ symbol appears beside the Only components with debug data menu choice and only components containing debug information are listed. If it is not, all components are listed. ═══ 4.9.3. Session Settings Cascading Choice ═══ Select choices from the Session settings cascading choice to set various debugger options that control how the debugger windows are displayed. These settings affect the behavior of the debugger and remain in effect for the duration of the debugging session. Menu Summary Source window properties Select the view that is to be displayed when the debugger starts and how to process the views. Monitor properties Select the settings for the variable monitor windows. PM debugging mode Set parameters that control how the debugger handles messages passed within the debugger and between other PM applications. Default data representation Select how you want your data displayed in monitor windows. Animation rate Specify the rate at which you can automatically execute lines of code in your program. Initial window placement Select the initial position and size of the debugger windows. ═══ 4.9.4. Sort Threads ═══ You can specify to sort the threads in numerical order from the Threads box. If this option is enabled, a √ symbol appears beside the sort threads choice and threads are sorted numerically. ═══ 4.9.5. Sort Components ═══ You can specify to sort the components in alphabetical order from the Components box. If this option is enabled, a √ symbol appears beside the Sort components choice and components are sorted alphabetically. ═══ 4.9.6. Titles On ═══ You can specify to display the titles or to turn the titles off in the Debug Session Control window. The titles are Threads and Components. If this option is enabled, a √ symbol appears beside the Titles on choice and titles are displayed. ═══ 4.9.7. PM Debugging Mode Choice ═══ The PM Debugging Mode choice allows to set the debugging mode to asynchronous or synchronous, and control the interaction between the program windows and PM, while the application has stopped executing. When you select PM debugging mode, the PM Debugging Mode action window is displayed. ═══ 4.9.8. Asynchronous ═══ When the debugger is operating in asynchronous mode and the program you are debugging is stopped, the debugger immediately responds to messages that have been sent to the program being debugged on this program's behalf. The debugger answers the messages with a simple default response, freeing up other processes to operate while the debugger has control. When you are running the debugger in asynchronous mode, other PM applications running in the system are not blocked when the program being debugged stops. Warning: Do not operate the debugger in asynchronous mode if the PM application that you are debugging requires the appropriate response to its messages. For example, a dynamic data exchange (DDE) message would require the appropriate response. ═══ 4.9.9. Synchronous ═══ When the debugger is operating in synchronous mode, the messages that are passed between PM applications are answered by their target applications in the order that they were created. The messages that are passed within the debugger take priority over any other messages that are passed in the system. When the program being debugged is stopped and the debugger is in synchronous mode, other PM applications are locked, leaving the debugger free to operate. In synchronous mode, you will not be able to use any other PM applications that are running. ═══ 4.9.10. Default Data Representation Choice ═══ When you select Default data representation, a cascaded menu is displayed with language choices. This lets you change the default representation for a data type in the language that you select. ═══ 4.9.11. System Choice ═══ Select the System choice to change the default representation of the math coprocessor registers. This choice is language independent. When you select the System choice, the Default Representation action window is displayed. ═══ 4.9.12. Language Choices ═══ Select a language to change the default representation of the selected data type. For example, you can change the default representation for an integer in the C language from decimal to hexadecimal. When you select the System choice, the Default Representation action window is displayed. ═══ 4.10. Default Representation Action Window ═══ Use the Default Representation action window to select the default data representation. Select the appropriate radio button(s) for the data type you want. Select the appropriate push button to continue. ═══ 4.11. Animation Rate Action Window ═══ When you select Animate from the Run menu, the debugger automatically does Step over commands to execute your statements one line at a time. The animation rate specifies the rate at which the debugger is automatically executed. To change the speed at which single lines of code are automatically executed: 1. Set the speed of execution by positioning the slider between the slow and fast limits or by entering a number in the entry field. The numbers (1 to 20) are for reference purposes only. The true speed of animation depends on the: o Processor speed o Number of open windows o The types of instructions being stepped over. 2. Select the Save session settings check box to save action window settings that you saved for the next debugging session. check box to save your selection for the next debugging session. 3. Select the appropriate push button to continue. To stop the animation, select SysRq (Alt + Print Screen). ═══ 4.11.1. PM Debugging Mode Action Window ═══ Use the PM Debugging Mode action window to set the debugging mode to asynchronous or synchronous, and control the interaction between the program windows and PM, while the application has stopped executing. The PM system is a message-based system. As program events are encountered by PM programs, the programs communicate with each other by passing messages and by receiving user input through input messages. When a PM program encounters an enabled breakpoint, the input queue can become blocked and dependent program events, or processes, can also become blocked as a result. For example, the input queue can become blocked when your program is halted at a breakpoint that has been triggered by an input event. The debugger provides two modes of operation by which PM messages can be processed while the debugger has control. These two modes are: o Synchronous o Asynchronous. After you have selected the parameters you want from this action window, click on the appropriate push buttons. Mode Select the PM Debugging mode you want: either Synchronous or Asynchronous. Invalid area color Select the color that is to be used to repaint the invalid area of an application window. Depending on the original color of the application window, certain colors will be more appropriate for repainting. The color you choose is used when you select the Color invalid areas, Restore, or Repaint options. No repainting None of the invalid areas of the window are repainted. Color invalid areas The Color invalid areas option works only in asynchronous mode. This option paints the invalid areas in a solid fill color. The color can be changed by selecting a different color from the Invalid area color combination box. Restore The Restore option works only in asynchronous mode. This option restores the application window with the last available image of the window. The image that you can regain consists of the last available image when a step or run command ended, minus any parts of the window that were covered when the step or run command ended. The parts of the window that were covered are filled with the solid color you chose from the Invalid area color combination box. Repaint Restores that application window with the last available image. The image that you can regain consists of the last available image when a step or run command ended minus any parts of the window that were covered when the step or run command ended. The parts of the window that were covered are filled with the solid color you chose from the Invalid area color combination box. The Repaint option differs from the Restore option. It interrupts the normal debugging process of the window as follows: o The program windows will not receive any screen interaction messages while the application is stopped. For example, the application will not receive any of the WM_MOUSEMOVE or WM_PAINT messages that were generated while the application was stopped. o An extra WM_PAINT message is generated for the program windows when execution resumes. Note: The program windows might not process the WM_PAINT message depending on where the breakpoints are set or on which step or run command was selected. Save settings Select Save settings to save your selections for the next debugging session. ═══ 4.11.2. Debug Session Control Choice ═══ Select the Debug session control choice to display the Debug Session Control window. ═══ 4.12. Help Menu ═══ Select choices from the Help menu to complement the online help information that you can get for the debugger when you press F1 or select the Help push button. Menu Summary Help index An alphabetical index of all available debugger help topics. General help Help information for the active window. Using help How to use the IBM C/C++ Debugger help facility. ═══ 4.13. Help Menu ═══ Select choices from the Help menu to complement the online help information that you can get for the debugger when you press F1 or select the Help push button. Menu Summary Help index An alphabetical index of all available debugger help topics. General help Help information for the active window. Using help How to use the IBM C/C++ Debugger help facility. Tutorial Display the debugger tutorial. ═══ 4.13.1. Using help ═══ Select the Using help choice to display online help information about the OS/2 help facility. ═══ 4.13.2. General help ═══ Select the General help choice to display online help for the active debugger window. The online help panel displayed is the same panel that is displayed when you place your cursor inside the window and press F1. ═══ 4.13.3. Tutorial ═══ Select the Tutorial choice to display the online tutorial. This tutorial guides you through many of the debugger functions, including the new C++ features. ═══ 4.13.4. Shortcut Keys ═══ This help panel lists the shortcut keys you use to invoke debugger choices. When two key names are joined by a plus sign (+), use these two keys together. Hold down the first key and press the second key. The following shortcut keys are available for the program view windows (Source/Disassembly/Mixed): Step over O Step into I Step debug D Step return T Run R Run to location L Jump to location N Animate A Halt SysRq ═══ 4.13.5. Help index ═══ Select the Index choice display an alphabetical list of index topics for the debugger. Use the Search choice provided with the online help facility to locate topics in the index. ═══ 5. Program View Windows ═══ The program view windows display a view of the program you are debugging. The types of program view windows that are displayed are as follows: o Source o Disassembly o Mixed These program views differ in the way they display the program code. Although only one program view is initially displayed, you can display additional program views at any time. Each view is displayed in its own window. Executable statements are displayed in blue. Comments and other non-executable lines are displayed in black. You can set breakpoints or execute your program only on executable lines. Source The Source window displays the source code for the component you have selected. It displays the source file as it was originally written. The prefix area of each line displays the line number. When you start the debugger, the Source window is displayed if the source file is available. If it is not, the Source Filename action window is displayed. (You can change the new view priority order of the views using the Source Window Properties action window, which determines which view is displayed.) Disassembly The Disassembly window displays your program as assembler instructions without symbolic information. The prefix area of each line displays the address of the instruction. Mixed The Mixed window displays each source statement followed by the assembler instructions that the particular source statement generates. The Mixed window is displayed as follows: o Each source line is prefixed with its line number as in the Source window. o Each disassembled line is prefixed with an address as in the Disassembly view. o Source comment lines are included in the display. o The lines of source code are treated as comments within the lines of disassembly code. You can only set breakpoints or execute your program on lines of disassembly code. o The Mixed view cannot be opened if the source code is not available. The Source, Disassembly, and Mixed windows offer the same menu choices, except that: o The Variable menu is not available in the Disassembly program view window. o The Change source file choice is not available from the File  View menu of the Disassembly program view window. Basic tasks from the program view windows include: Set line breakpoints Double-click on the prefix area of any line to set a simple line breakpoint. For more information, see Setting Breakpoints. Single Step your program Press mouse button two to single step your program. This performs a step over command. See below for information on the different step commands. Monitor and modify variables Double-click the mouse on any variable name in your program to display that variable in a monitor window. Drag the mouse over an expression, and then double-click on the highlighted expression, to display the expression in a monitor window. Select Local Variables from the Windows menu to display a monitor window of all the Local Variables in your program. The four monitors for variables and expressions are: o Program Monitor o Private Monitor o Data Popup o Local Variables Monitor See also Monitor Properties for how to change which monitor is used to display variables and expressions. Menu Bar Summary File Start and end the debugger and control the program views. Edit Edit text and search for strings in the text. Breakpoints Set and manipulate breakpoints in your program. Variable Display the contents of program variables and expressions. Windows Select other windows for viewing. Run Execute your program in several ways. Options Change the parameters that control how your program is displayed and executed. Help Online help information that compliments the information you get when you press F1 or select the Help push button. Title Bar Buttons Summary The following buttons have been provided in the title bar of the program view windows for easier access to frequently used functions: Step over executes the current (highlighted) line in the program, but does not enter any called function. Step into executes the current (highlighted) line in the program and enters any called program or function. Step debug executes the current (highlighted) line in the program. The debugger steps over any function for which debug information is not available (for example, library and system routines), and steps into any function for which debugging information is available. Step return automatically executes the lines of code up to, and including, the return statement of the current function. Run runs the program, executing all enabled threads. Control returns to the debugger when: o The program terminates o Execution stops at an enabled breakpoint. View changes the current view to one of the other views, depending on the view priority. Stack displays the Stack window. Register displays the Register window. Program Monitor displays the Program Monitor window. Storage displays a new Storage window. Debug Session Control displays the Debug Session Control window. ═══ 5.1. File Menu ═══ Select choices from the File menu of the program view windows to start programs, find the current line, replace your current program file with a program file from another location or with a different name, restart the current debugging session, restart a previous debugging session for this program, and end the debugging session. Menu Summary View Select one of the three program view windows (Source, Disassembly, or Mixed). Locate function Open a program view window to a particular function. Open new source Display a new source file. Where Open a program view containing the next line to be executed. Startup Start the program you want to debug after terminating the current program. Restart Restart the current debugging session. Close debug Close the debugging session. ═══ 5.1.1. View Cascading Choice ═══ Select the View cascading choice to select a different view of your program or change the current window to a notebook format. Each type of view can be opened only once for a program component; program views are thread-specific. Any lines that are highlighted in the existing view are also highlighted in the new view, and any breakpoints highlighted in the prefix area of the existing view are also shown in the new view. You can view the program as: o Source o Disassembly o Mixed. Note: The Source and Mixed views can be displayed in a notebook format if they have include files that contain executable statements. You can enable or disable the Notebook option by toggling the enabled choice in the Notebook option box. When the check mark is displayed, it is enabled and the views will be displayed in notebook format. When the check mark is not displayed, it is disabled. The default is to have the option enabled. The Change source file choice lets you replace the source you are currently debugging with the source code in another location or with a different name. ═══ 5.1.2. Notebook Choice ═══ Enable the Notebook choice to display the program view windows in notebook format. Note: If you have include files in your program, the Notebook choice is enabled by default. You can enable or disable the Notebook option by selecting the Notebook choice. When it is enabled, a √ symbol is displayed. If it is disabled, a √ symbol is not displayed. The Source and Mixed views can be displayed in a notebook format. The Disassembly view cannot be displayed in a notebook format. ═══ 5.1.3. Source Choice ═══ Select the Source choice to display the source code for your program. The initial Source window displays the source code for the object that contains the main function to the program being debugged. If it is available, the Source window appears with the Debug Session Control window when the debugging session is started. Otherwise, the Disassembly view appears. You can change the order of program views that are opened by setting the source window properties in the Source Window Properties action window.) ═══ 5.1.4. Disassembly Choice ═══ Select the Disassembly choice to display the assembler instructions for your program, without symbolic information. The menu choices available in the Disassembly window are the same as for the Source window except that the Variable menu and the Change source file choice in the File menu are not available. You can change the order of program views that are opened by setting the source window properties in the Source Window Properties action window.) ═══ 5.1.5. Mixed Choice ═══ Select the Mixed choice to display each source statement followed by the assembler instructions that the particular source statement generates. You can change the order of program view windows that are opened by setting the source window properties in the Source Window Properties action window.) The Mixed view works as follows: o Each source line is prefixed with its line number as in the Source window. o Each disassembled line is prefixed with an address as in the Disassembly view. o Source comment lines are included in the display. o The lines of source code are treated as comments within the lines of disassembly code. The execution of the program and breakpoints only relate to the lines of disassembly code. o The Mixed view cannot be opened if the source code is not available. ═══ 5.1.6. Inheritance Choice ═══ Select the Inheritance choice to view the class hierarchy of a C++ program. ═══ 5.1.7. Locate Function Choice ═══ Select the Locate function choice to open a program view window to a particular function. When you select Locate function, the Locate Function action window is displayed. ═══ 5.2. Locate Function Action Window ═══ Use the Locate Function action window to open a program view window to a particular function. To use the Locate Function action window: 1. Type the name of the function you want to search for in the Function entry field. 2. Click on the appropriate push button to continue. All executables Enable this option if you want to search all the executable files for the function. The debugger searches each object file for global functions that match the function name specified. If a global function is found in an object file, the object file is searched for that static function. Note: To search for a function in a specific executable file, disable this option and type the name of the executable file in the Executable entry field and type the name of the source file in the Source entry field. Debug data only Enable this option if you want to search only the object files that contain debugging information. Case Sensitive Enable this option if you want to search for the string exactly as typed. Disable this option if you want to search for both uppercase and lowercase characters. ═══ 5.3. Overloaded Action Window ═══ Use the Overloaded action window to select the appropriate function. This window is displayed when a you have an overloaded function. To use the Overloaded action window: 1. Select the name of the function you want from the list. 2. Click on the appropriate push button to continue. Signature Displays the function name and any parameters that the function may have. ═══ 5.3.1. Open New Source Choice ═══ Select the Open new source choice to open a new source file. When you select Open new source, the Open New Source action window is displayed. ═══ 5.4. Open New Source Action Window ═══ Use the Open New Source window to open a new source file. To use the Open new source action window: 1. Type the name of the executable file in the Executable entry field. The source files for the executable file will be displayed in the Source entry field. 2. Select the object file you want to open the source for from the Source entry field. For example, if you want to look for the source used to compile A123.OBJ, enter A123. 3. Click on the appropriate push button to continue. All executables Enable this option if you want to search all the executable files. Disable this option if you want to search only one executable file. Debug data only Enable this option if you want to search only the source files that contain debug information. ═══ 5.4.1. Where Choice ═══ Select the Where choice to locate the next line to be executed in the thread. ═══ 5.4.2. Change Source File Choice ═══ Select the Change source file choice to specify the file name to use as the source in the current view. This is useful if the debugger found the incorrect source file for your program, so that you can specify the use of a different source file from a different directory. For information about how the debugger searches for source files, refer to understanding the search information. ═══ 5.4.3. Understanding the Search Path ═══ The search path tells the debugger where to find the source file used in the Source and Mixed windows. The debugger searches for the source files in the following order: 1. The path where the object file was compiled. 2. The path where the executable file is located. 3. The path defined by the PMDPATH environment variable, if specified. 4. The current path. 5. The path defined in the INCLUDE environment variable. Using the Environment Variables The debugger uses two environment variables: PMDPATH and PMDOVERRIDE. To set the PMDPATH environment variable, do the following: Set PMDPATH=path;path where path is the location of your source files. To override the normal search order, use the PMDOVERRIDE environment variable: Set PMDOVERRIDE=path;path where path is the location of your source files. If the source file is not found in the defined override path, the debugger uses the normal search order. For information about how the debugger searches for source files, refer to understanding the search information. When you select the Change source file choice, the Change Source File action window is displayed. ═══ 5.4.4. Restart Choice ═══ Select the Restart choice to terminate the current program and start the debugging session using restart information. ═══ 5.4.5. Close Debug Choice ═══ Select the Close debug choice to close your current debugging session. The Close Debug message box prompts you to confirm that you want to end the debugging session. ═══ 5.5. Edit Menu ═══ Select choices from the Edit menu to search for strings of text or for the next occurrence of a string. Menu Summary Copy Copy text into the clipboard. Search Search for strings of text in the active program view. Find next Find the next occurrence of a string. ═══ 5.5.1. Search Choice ═══ Select the Search choice to search for a string of text in the active program view. You can search for simple text strings that do not use wildcards. When you select Search, the Search action window appears, prompting you for the text string you want to find. If you are searching in the same program component, the default text string is the string you entered the last time you completed the Search choice for this component. ═══ 5.5.2. Find Next Choice ═══ Select the Find next choice to search for the next occurrence of a string of text. The last text string that was typed in the Search action window for this component is used. ═══ 5.6. Search Action Window ═══ To use the Search action window to search for a text string: 1. Type the text string you want to search for in the Enter Search String entry field. 2. Click on the appropriate push button to continue. Enter Search String Type the text string you want to search for. The search string can have: o Both alphabetic and numeric characters o A maximum of 251 characters o Both uppercase and lowercase characters. Case Sensitive Enable this option if you want to search for the string exactly as typed. Disable this option if you want to search for both uppercase and lowercase characters. ═══ 5.6.1. Change Source File Action Window ═══ Use the Change Source File action window from the File  View cascading choice in the program view window to replace the path name or file name of the program you are debugging with a new path name or file name. This specifies a new file name to use as the source in the current view. This is useful if the debugger found the incorrect source file for your program, so that you can specify the use of a different source file from a different directory. For information about how the debugger searches for source files, see understanding the search information. To replace the file name: 1. Type the new path name or file name in the New File entry field. 2. Click on the appropriate push button to continue. New File The path name and file name of the program you want to replace with the program you are currently debugging. ═══ 5.6.2. Push Buttons ═══ OK Click on OK to accept the information you have entered and to close this action window. Apply Click on Apply to substitute the file and leave this action window open. Cancel Click on Cancel to close this action window. File List Click on File List to view a list of the files that you can select. Help Click on Help to display help information that tells you how to use this action window. ═══ 5.7. Variable Menu ═══ Select choices from the Variable menu to display the variables and expressions. You can select the variables or expressions you want to display: o Using the mouse o Using the mouse and the Monitor Expression action window o Using the keyboard. You must select an expression with: o A valid operand type o A valid operator o A valid typecasting operation 1. Bit fields are supported for C/C++ compiled code only. You can display and update bit fields, but you cannot use them in expressions. 2. You cannot look at variables that have been defined using the define preprocessor directive. For more information about manipulating the variable monitors, double-click on Using the data popup and monitor windows. Menu Summary Popup expression Monitors the highlighted variable or expression in a data popup window. Add to private monitor Adds the highlighted variable or expression to the Private Monitor window. Add to program monitor Adds the highlighted variable or expression to the Program Monitor window. Monitor expression Type the name of the variable or expression you want to monitor. ═══ 5.7.1. Popup Expression Choice ═══ Select the Popup expression choice to monitor the highlighted variable or expression in a data popup window. ═══ 5.7.2. Add to Private Monitor Choice ═══ Select the Add to private monitor choice to add the highlighted variable or expression to the Private Monitor window. To use the Add to private monitor choice: 1. Highlight the variable or expression you want to monitor by clicking on the variable or dragging the mouse across the variable or expression while holding down mouse button one. 2. Select the Add to private monitor choice. The variable or expression you highlighted is added to the Private Monitor window. ═══ 5.7.3. Add to Program Monitor Choice ═══ Select the Add to program monitor choice to add the highlighted variable or expression to the Program Monitor window. To use the Add to program monitor choice: 1. Highlight the variable or expression you want to monitor by clicking on the variable or dragging the mouse across the variable or expression while holding down mouse button one. 2. Select the Add to program monitor choice. The variable or expression you highlighted is added to the Program Monitor window. ═══ 5.7.4. Monitor Expression Choice ═══ Select the Monitor expression choice if you want to use the keyboard to type a variable or any expression you want to monitor. When you select Monitor expression, the Monitor Expression action window is displayed. ═══ 5.7.5. Selecting Variables with the Mouse ═══ To select a variable or expression for display using the mouse, use one of the following methods: o Point to any character within the variable name and double-click mouse button one. o Highlight the variable name or expression by dragging the mouse while holding down mouse button one, and then double-click mouse button one anywhere within the name. o Highlight the variable name or expression and select Add to program monitor or Add to private monitor from the Variable menu. ═══ 5.7.6. Selecting Variables with the Mouse and Monitor Expression ═══ To monitor a variable or an expression using the mouse and the Monitor Expression action window, use one of the following methods: For a single variable name: 1. Highlight the variable name using either of the following methods: o Point to the variable name and click mouse button one. o Highlight the variable by placing the mouse pointer on the beginning of the variable and dragging the mouse across the entire variable while pressing mouse button one. 2. Select Monitor expression from the Variable menu. The Monitor Expression action window appears, and the highlighted variable name is placed in the Expression entry field. For an expression: 1. Highlight the expression by placing the mouse pointer on the beginning of the expression and dragging the mouse across the entire expression while pressing mouse button one. 2. Select Monitor expression from the Variable menu. The Monitor Expression action window appears, and the highlighted expression name is placed in the Expression entry field. Select the appropriate push button to continue. ═══ 5.7.7. Selecting Variables with the Keyboard ═══ To monitor a variable or expression using the keyboard: 1. Select Monitor expression from the Variable menu. The Monitor Expression action window appears. 2. Type the name of the variable or expression in the Expression entry field. 3. If you want to change the defaults that control how a variable or expression is displayed in a monitor or data popup window: a. Select Monitor Properties push button to display the Monitor Properties action window. b. Select OK to close the Monitor Properties action window. 4. Select OK to close the Monitor Expression action window. ═══ 5.7.8. Using the Variable Monitors ═══ After you have selected a variable or expression for monitoring, you can: o Use the data manipulation icons o Use the keyboard to move around a monitor o Enable or disable monitors o Display context o Change the value of a variable o Change the representation of a variable or expression. ═══ 5.7.9. Keyboard Sequences ═══ You can use various combinations of keys to move around the monitor windows. The key combinations you can use and the function they provide are: Action Key Sequence Alt+ Move to the next monitor Alt+ Move to the previous monitor Tab Move to the next monitor component. (The cursor moves in a circular fashion from component to component. The monitor, itself, is included in the circular path.) BackTab Move to the previous monitor component Alt+ Dereference a highlighted pointer Enter Open or close data structures (structures or arrays) Alt+PageUp, Alt+PageDown Scroll through the monitor ═══ 5.7.10. Enabling and Disabling Monitors ═══ You can enable or disable monitors. In the enabled state, when the debugger stops, the displayed value in the monitor is changed to reflect the actual value in storage. A disabled monitor suspends this updating, and reflects the value the debugged program held when the monitor was disabled. When a monitor is disabled, the data entry field is greyed and you cannot change the value displayed. When a disabled monitor is enabled, the current program values are displayed. ═══ 5.7.11. Displaying Context ═══ Monitors display the data value in their context. The context consists of: o Source o File o line o Thread. ═══ 5.7.12. Changing the Value of a Variable ═══ You can change the value of a variable or expression that is displayed in a monitor. To change the value: 1. Select the variable or expression with your mouse or the Tab key. 2. Type in the new value. 3. Press Enter (or select another part of the debugger). ═══ 5.7.13. Changing the Representation ═══ To change the representation: 1. Select the expression. 2. Select an alternate representation from the Options  Representation choice. The new representation takes effect immediately. You change the representation of the value displayed in a monitor to: o Hexadecimal o Decimal o String o Character o Floating-point o Hexadecimal pointer o Decimal pointer o Array. Note: The representation you can select varies with the data type being displayed. ═══ 5.7.14. Supported Expression Operands ═══ You can monitor an expression that uses the following types of operands only: Variable A variable Constant The constant can be one of the following types: o A fixed or floating-point constant Note: The largest floating-point constant is 1.8E308. The smallest floating-point number supported is 2.23E-308. o A string constant (enclosed in " ") o A character constant (enclosed in ' ') o Segment:Offset address specification (0000:0000) When you are specifying a segment offset address for monitoring in a variable monitor window, specify the offset address in the format 0x0000:0x0000. Register One of the following register names: AX, BX, CX, DX, SP, BP, SI, DI, AL, BL, CL, DL, AH, BH, CH, DH, EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI, EIP, CS, DS, ES, FS, GS, SS, EFLAGS. One of the following floating-point register names: ST0 through ST7, FPCW, FPSW, FPTW, FPEIP, FPCS, FPEDP, FPDS. In the case of conflicting names, the program variable names take precedence over the register names. For conversions that are done automatically when the registers appear in mixed-mode expressions, general purpose registers are treated as unsigned arithmetic items with a length appropriate to the register. For example, EAX is 32-bits, AX is 16-bits, and AL is 8-bits. If you monitor an enumerated variable, a comment is displayed to the right of the value. If the value of the variable matches one of the enumerated types, the comment will contain the name of the first enumerated type that matches the variable's value. If the length of the enumerated name will not fit in the monitor, the contents are displayed as an empty field. The comment (empty or not) lets you distinquish between a valid enumerated value and an invalid value. An invalid value will not have a comment to the right of the value. You can not update an enumerated variable by entering an enumerated type. You must enter a value or expression. If the value is a valid enumerated value, the comment to the right of the value will be updated. Bit fields are supported for C/C++ compiled code only. You can display and update bit fields, but you cannot use them in expressions. You cannot look at variables that have been defined using the define preprocessor directive. ═══ 5.7.15. Supported Expression Operators ═══ You can monitor an expression that uses the following types of operators only: Operator Coded as Complement -a Bitwise negate ~a Logical negation !a Dereference *a Address of &a Multiply a * b Divide a / b Modulo a % b Add a + b Subtract a - b Shift left a << b Shift right a >> b Less than a < b Greater than a > b Less than or equal to a <= b Greater than or equal to a >= b Equal a == b Not equal a != b Bitwise AND a & b Bitwise OR a | b Bitwise exclusive OR a к b Logical AND a && b Logical OR a || b Structure element a.b Array element a[b] Subfield select a->b Segment: Offset address specification When you are specifying a segment offset address for monitoring in a variable monitor window, specify the offset address in the format 0x0000:0x0000. Cast (dt)(exp), where dt is one of the supported data types, and exp is an expression that evaluates to one of these data types. ═══ 5.7.16. Supported Data Types ═══ You can monitor an expression that uses the following typecasting operations only: o 8-bit signed byte o 8-bit unsigned byte o 16-bit signed integer o 16-bit unsigned integer o 32-bit signed integer o 32-bit unsigned integer o 32-bit floating-point o 64-bit floating-point o 80-bit floating-point o Pointers o User-defined types. ═══ 5.8. Monitor Expression Action Window ═══ Use this action window to type in the expression that you want to monitor. This action window lists the following contextual information: o The component you are in o The view of the program that is active o The line of the source code active (highlighted) o The thread you are in. The expression language supported by the debugger is a subset of the C/C++ language. You can monitor only expressions with: o A supported operand type o A supported operator o A supported typecasting operation. To specify an expression to be monitored: 1. Type the name of the variable or expression you want to monitor. 2. Select the appropriate push button. 3. The expression is displayed in the fashion specified in the Monitor Properties action window. ═══ 5.9. Windows Menu ═══ Select choices from the Windows menu to display other debugger windows. Menu Summary Local variables Display the local variables for the program's current line. Registers Monitor registers and flags for a particular thread. Stack Monitor the call chain stack for a particular thread. Private monitor Display the Private Monitor window. Program monitor Display the Program Monitor window. Storage Monitor the storage that a program is using. Window analysis View graphical and textual information of program windows and observe the relationships between windows. Message queue monitor Select the PM messages that you want displayed. Inheritance Look at classes of C++ programs. Command Log Display the Command Log window. Command Line Display the Command Line window. Debug session control Displays the Debug Session Control window. ═══ 5.9.1. Message Queue Monitor Choice ═══ Select the Message queue monitor choice to display the Message Queue Monitor window which displays the PM messages for PM applications. ═══ 5.9.2. Window Analysis Choice ═══ Select the Window analysis choice to help you understand PM application windows. It presents both graphical and textual information of debugged windows and lets you observe the relationships between windows. Note: To display the Window Analysis window, you must stop your program. ═══ 5.10. Run Menu ═══ Select choices from the Run menu to control the execution of your program. You can choose from several ways to step through your program, or you can execute your program until a breakpoint is encountered or your program is terminated. You can access any of the choices in the Run menu by using the shortcut keys. These keys are also listed in the Run menu. In the case of the Step over command, you can use the mouse. When you select a choice from the Run menu, the mouse pointer changes to a clock icon to indicate that the application is running and might require input to continue to the next breakpoint or termination of the program. Menu Summary Thread enabled Enable or disable threads. Step over Execute the current line in your program. If the current line is a call, execution is halted when the call is completed. Step into Execute the current line in your program. If the current line is a call, execution is halted at the first statement in the called function. Step debug Execute the current line in the program. The debuggers steps over any function for which debugging information is not available and steps into any function for which debugging information is available. Step return Step through the current function until the return is executed. Run Execute the program from the current line until a breakpoint is encountered or the program terminates. Run to location Execute your program from the current line up to the line that is highlighted with gray in the prefix area. Jump to location Change the current line in the program without executing the code between the present current line and the new current line. Animate Automatically repeat Step over commands. Halt Interrupt the program you are debugging. ═══ 5.10.1. Thread Enabled Choice ═══ Select the Thread enabled. choice so that the thread associated with the program view is allowed to execute when the program runs. When a thread is enabled, a √ symbol appears beside the Thread enabled. choice. When a thread is not enabled, a √ symbol is not displayed and the highlighted thread is not executed. ═══ 5.10.2. Step Debug Choice ═══ Select the Step debug choice to execute the current line in the program. The debugger steps over any function for which debug data. is not available, (for example, library and system functions) and steps into any function for which debugging information is available. ═══ 5.10.3. Step Into Choice ═══ Select the Step into choice to execute the current line in the program, If the current line is a call, execution is halted at the first statement in the called function. ═══ 5.10.4. Step Over Choice ═══ Select the Step over choice to execute the current line of the program. If the current line is a call, execution is halted when the call is completed. You can also access the Step over function by placing the mouse cursor in a program view window and single-clicking mouse button two to execute one line. All enabled threads will be allowed to continue execute. Note: The debugger stops in a called function if it encounters a breakpoint. ═══ 5.10.5. Step Return Choice ═══ Select the Step return choice to automatically execute the lines of code up to, and including, the return statement of the current function (unless a breakpoint is encountered). ═══ 5.10.6. Run Choice ═══ Select the Run choice to execute the program, including all enabled threads, from the current line until a breakpoint is encountered or the program is terminated. ═══ 5.10.7. Run to Location Choice ═══ You can execute your program from the current line up to the line that is highlighted with gray in the prefix area. To use the Run to location choice: 1. Single-click in the prefix area of the line you want to become the current line. The prefix area turns gray. 2. Select the Run to location choice. The program is executed up to the line that you marked. The Run to location choice stops only on executable lines. If a highlighted line is not executable, the run is not performed. ═══ 5.10.8. Jump to Location Choice ═══ You can change the current line in your program without executing the lines between the present current line and the new current line. To use the Jump to location choice: 1. Single-click in the prefix area of the line you want to become the current line. The prefix area turns gray. 2. Select the Jump to location choice. The current line is changed and the lines between are not executed. The Jump to location choice stops only on executable lines. If a highlighted line is not executable, the run is not performed. Note: Jumping out of the current function may corrupt the stack pointer and cause your program to produce unpredictable results. ═══ 5.10.9. Halt Choice ═══ Select the Halt choice to interrupt the program that you are debugging. You can also access this choice by pressing SysRq (Alt+PrintScreen). ═══ 5.10.10. Animate Choice ═══ When you select Animate, the debugger automatically performs Step over commands. As the program runs, the position of the current line changes and the monitors are updated. To stop the animation, press SysRq (Alt + Print Screen). ═══ 5.11. Options Menu ═══ Select choices from the Options menu to control the debugger windows. Menu Summary Fonts Select the font you want to use for the text displayed in the active window. Session settings Set various debugger options. Profile Select the location where you want the debugger restart information file placed. Debug session control Display the Debug Session Control window. ═══ 5.11.1. Monitor Properties Choice ═══ Select the Monitor Properties choice to select the settings for monitoring variables or expressions. When you select the Monitor properties choice, the Monitor Properties action window is displayed. ═══ 5.11.2. Monitor Properties Action Window ═══ Use the Monitor Properties action window to select the settings for monitoring variables or expressions. You can set the following options: . o Whether or not the context for variables or expressions is displayed in the variable monitor windows. o The window into which the variable or expression being monitored is placed. o Whether or not the displayed contents of the variable or expression are updated as the state of the program changes. o For data popup windows, the duration of time that the monitor windows are displayed. After you have selected the settings you want from this action window, click on one of the push buttons to continue. For a description of the option settings that you can select from this action window, double-click on one of the following topics: o Show context o Monitor location o Enabled o Duration ═══ 5.11.3. Show context ═══ Select the Show context check box to display the context for variables or expressions when they are selected for monitoring. ═══ 5.11.4. Monitor location ═══ Choose one of the following radio buttons to select the type of monitor window that is opened when a variable or expression is selected for monitoring. The selections you can make and the corresponding windows are: Popup Display the variable or expression in a data popup window. Private monitor Display the variable or expression in the Private Monitor window. Program monitor Display the variable or expression in the Program Monitor window. ═══ 5.11.5. Enabled ═══ Select the Enabled check box to update the displayed contents of variables or expressions when they are selected for monitoring. ═══ 5.11.6. Duration ═══ If you select Popup from under the Monitor location group heading, select one of the following radio buttons to select the length of time that the data popup window will stay displayed: Step/run The monitor window closes when the next step command or Run is executed. New source The monitor window closes when execution stops in a new source. Permanent The monitor window stays open for the remainder of the debugging session. ═══ 5.11.7. Initial Window Placement Choice ═══ Select the Initial window placement choice to set the position and size of the debugger windows when they are first created. When you select Initial window placement, the Initial Window Placement action window is displayed. ═══ 5.11.8. Profile Cascading Choice ═══ Select the Profile cascading choice to specify the location in which you want the debugger restart information file and session settings placed, or to delete restart information. Menu Summary Change location Allows you to change the location of the files that hold the debugger settings. Delete restart information Allows you to delete restart information for a program that you have debugged. ═══ 5.11.9. Change Location Choice ═══ Select the Change location choice to specify the location in which you want the profile information file placed. The debugger restart information file contains your selections for most of the debugger options and information. You choose whether or not you want your selections saved for the next debugging session by selecting Save settings at the time you make your selections in an option action window. When you select the Change location choice, the Change Location action window appears displayed. ═══ 5.11.10. Save Restart Information Choice ═══ Select the Save restart information choice to save the restart information for a program that you have previously debugged. When you select Save restart information, the Save Restart Information action window is displayed. ═══ 5.11.11. Save Restart Action Window ═══ Use the Save Restart Information action window to save the restart information for the program that you are currently debugging. To save restart information: 1. Select the path names of the programs whose restart information you want to delete. 2. Click on the Delete push button. 3. Click on Cancel to close the Delete Restart Information action window. ═══ 5.11.12. Delete Restart Information Choice ═══ Select the Delete restart information choice to delete restart information for a program that you have previously debugged. When you select Delete restart information, the Delete Restart Information action window is displayed. ═══ 5.11.13. Delete Restart Information Action Window ═══ Use the Delete Restart Information action window to delete the restart information from the debugger restart information file for a program that you have previously debugged. To delete restart information: 1. Select the path names of the programs whose restart information you want to delete. 2. Click on the Delete push button. Note: You can delete restart information to minimize the amount of space your debugger restart information files take up. ═══ 5.11.14. Initial Window Placement Action Window ═══ Use the Initial Window Placement action window to set the position and size of the debugger windows when they are first opened. The following is a list of the windows you can manipulate: o Debug Session Control o Local Variable o Parent and Z-order Tree o Program Monitor o Register o Source, Disassembly, or Mixed o Stack o Storage. o Window Analysis o Window Characteristics o Message Queue Monitor The rectangle area under the Window group heading represents your screen. The Width and Height of the representational screen are shown under the Screen Size group heading. Double-click on one of the following topics to see the procedures for changing the initial opening position and opening size of the windows: o Changing Initial Opening Positions o Changing Initial Opening Sizes Click on one of the push buttons to continue. Window Title List Box Use the window title list to select the title of the window you want to edit. (The titles might not be fully displayed for all of the windows.) Select the arrow to open the window title list. Then, highlight the title of the window you want to edit. The new title is displayed in the window title entry field. Placement Values X The coordinate of the horizontal axis. Y The coordinate of the vertical axis. Width The width of the window, in units. Height The height of the window in units. Click on the Edit Window push button to make the window displayed in the window title entry field, the current window. Screen Size Under the Screen Size group heading are displayed the maximum height and width for a window with coordinates (0,0). Note: The sum of the X coordinate and the Width cannot be greater than the value displayed under the Screen Size group heading. The sum of the Y coordinate and the Height cannot be greater than the value displayed under the Screen Size group heading. ═══ 5.11.15. Changing Initial Opening Positions ═══ You can move any window to a new opening position by dragging it with the mouse. The new X (horizontal axis) and Y (vertical axis) coordinates are displayed after it has been moved. You can also change the opening position of a window by doing the following: 1. Select the window you want to edit in either of the following ways: o With the mouse o By selecting the arrow in the window title entry field to open the window title list, and highlighting the title of the window you want to reposition. The window you have chosen to edit is now displayed in the window title entry field. 2. Click on the Edit push button. 3. Type in the new X (horizontal axis) and Y (vertical axis) coordinates. The position of the window changes as you type in the new coordinates. Note: The sum of the X coordinate and the Width cannot be greater than the value displayed under the Screen Size group heading. The sum of the Y coordinate and the Height cannot be greater than the value displayed under the Screen Size group heading. 4. Click on the appropriate push button to continue. ═══ 5.11.16. Changing Initial Opening Sizes ═══ You can change the opening size of a window by dragging it with the mouse. The new Width and Height are displayed after you have resized it. You can also change the opening size of a window by doing the following: 1. Select the window you want to edit in either of the following ways: o With the mouse o By selecting the arrow in the window title entry field to open the title list, and highlighting the title of the window you want to resize. The window you have chosen to edit is now displayed in the window title entry field. 2. Click on the Edit push button. 3. Type in the new Height and Width values. The size of the window changes as you type in the new values. Note: The sum of the X coordinate and the Width cannot be greater than 640. The sum of the Y coordinate and the Height cannot be greater than 480. 4. Click on the appropriate push button to continue. ═══ 5.11.17. Push Buttons ═══ OK Click on OK to accept the information you have entered and to close this action window. Reset Click on Reset to change the information to the previously saved setting. Default Click on Default to change to the default setting. Cancel Click on Cancel to close this action window. Help Click on Help to display help information that tells you how to use this action window. ═══ 5.11.18. Push Buttons ═══ OK Click on OK to accept the information you have entered and to close this action window. Reset Click on Reset to change the information to the previously saved setting. Cancel Click on Cancel to close this action window. Help Click on Help to display help information that tells you how to use this action window. ═══ 5.11.19. Change Location Action Window ═══ Use the Change Location action window to specify the directory where you want the profile information (session settings and restart information) default options file saved. After you have completed your dialog, click on the appropriate push button. Path Type the full path name of the directory where you want the debugger profile information file stored ═══ 5.11.20. Push Buttons ═══ OK Click on OK to accept the information you have entered and to close this action window. Reset Click on Reset to clear any changes you have made in this dialog session. Default Click on Default to replace the current settings with the debugger default options. Cancel Click on Cancel to close this action window. Help Click on Help to display help information that tells you how to use this action window. ═══ 5.11.21. Fonts Choice ═══ Select the Fonts choice to set the font you want to use for the text that is displayed in the active window. ═══ 5.11.22. Private Monitor Choice ═══ Select the Private monitor choice to display the Private Monitor window. ═══ 5.11.23. Program Monitor Choice ═══ Select the Program monitor choice to display the Program Monitor window. ═══ 5.11.24. Animation Rate Choice ═══ Select the Animation rate choice to set the rate that you will automatically step through your program. When you select Animation rate, the Animation Rate action window is displayed. ═══ 5.11.25. Source Window Properties Choice ═══ Select the Source window properties choice to determine how your threads and source files are initially displayed and how they are handled when they stop or are no longer active. When you select Source window properties, the Source Window Properties action window is displayed. ═══ 5.12. Font Selection Action Window ═══ Use this action window to change the font that is used for the text displayed in the current window. ═══ 5.12.1. Push Buttons ═══ OK Click on OK to accept the information you have entered and to close this action window. Apply Click on Apply to apply the font to the window. The change applies only until you close the action window. Click on OK to select the new font. Reset Click on Reset to change the font back to your earlier selection. Default Click on Default to replace the current font selection with the default font. The default font is System Monospaced 8x8. Cancel Click on Cancel to close this action window. Help Click on Help to display help information that tells you how to use this action window. ═══ 5.13. Source Window Properties Action Window ═══ Use this action window to define: o The program view that is to be displayed when the debugger is started and when a program view is first displayed in the course of debugging. o How to process view windows from which execution has just left. These components and threads can: - Remain displayed - Be turned into an Icon - Be discarded. New view priority When a program view is created, this setting indicates the view that is to be displayed (subject to the availability of the source code). The views that can be displayed are: Source Displays the source code for the thread or component. Disassembly Displays your program as assembler instructions without symbolic information for the thread or component. Mixed Displays a line of source code followed by the assembler instructions for that line of source code. You can change the priority by dragging the view icons with mouse button two to arrange the items in the order you want, and you can use the tab keys to move around to the other parts of the action window. You can also rearrange the view icons using the Alt+Up and Alt+Down arrow keystrokes. You can choose to display the program views in the New view priority as icons or text. Click on the appropriate push button to set the display mode. Old source disposition In the course of debugging, these selections allow you to control the behavior of view windows from which execution has just left. The Old source disposition controls the behavior of view windows within a thread. The dispositions that the views can take are: Keep Leaves open the views that contain the components and threads that you select with Display at stop. Iconize Changes into icons the views that contain the components and threads that you select with Display at stop. Discard Disposes of the views that contain the components and threads that you select with Display at stop. Display at stop You can control how many windows are displayed at one time. The choices are: Only stopping thread Either keeps, iconizes, or discards all views that are not the stopping thread. All threads Keeps, iconizes, or discards the views for old components within each thread. For example, if you select Only stopping thread, the Old source disposition applies to all of the view windows except the current view of the stopping thread. If you select All threads, the Old source disposition applies only to the view windows for the components from which execution has just left within a thread. Source as Notebook You can display your program view in a notebook format if there are include files in the source file. Multiple views You can choose to display more than one program view for a particular source file. The default is not to display multiple views. Title bar buttons You can choose to display or not display the title bar buttons. The default is to display the title bar buttons. Save session settings You can choose to save your selections for the next debugging session. Click on the appropriate push button to complete your dialog. ═══ 6. Inheritance View Window ═══ The Inheritance View window displays a list of classes and a graphical depiction of the C++ class hierarchy. You can also display the class definitions of your program. Menu Bar Summary File Display class details, display overview, or close the debugger. Options Select the font, control how the classes are displayed, find a class, and display the Debug Session Control window. Help You have access to several kinds of help information that compliments the online help information that you can get for the debugger. Press F1 or select the Help push button. ═══ 6.1. File Menu ═══ You can look at class details and select an overview of the class hierarchy. Menu Summary Class details Open the Class Details window for the selected class. Overview Display the Overview window for the class hierarchy. Close Debug Close the debugging session. ═══ 6.1.1. Class Details Choice ═══ Select the Class details choice to get more information about a particular class definition. Select a class from the list, then select the Class details choice. The Class Details action window is displayed. ═══ 6.1.2. Overview Choice ═══ Select the Overview choice to display a scaled-down image of the Inheritance View window. You can zoom in and out on the Inheritance View window. This allows you to enlarge the nodes displaying the text for that node. ═══ 6.2. Overview Window ═══ The Overview window displays a scaled-down image of the Inheritance View window. To change the view of the window: 1. Press and hold down mouse button one, while pointing to any edge of the shaded rectangle in the Overview window. By moving the mouse forward or backward, the rectangle becomes larger or smaller. 2. Release mouse button one and the main window is redrawn to reflect the new view. To change to a different area of the window: 1. Press and hold down mouse button one in the center of the shaded rectangle in the Overview window. Move the rectangle over the part of the graph that you want to view. 2. Release mouse button one and the main window is redrawn to reflect the new view. ═══ 6.3. Options Menu ═══ Select choices from the Options menu to change the parameters that control how the program is displayed and executed. Menu Summary Fonts Select the font you want to use for the text displayed in the active window. Derived to Base Class Tree Display the class list as a tree. When you click on the plus icon, the base classes are displayed for that class. Base Class to Derived Tree Display the class list as a tree. When you click on the plus icon, the derived classes are displayed for that class. Class List Display only a list of the classes. Find class Locate a class. Debug session control Display the Debug Session Control window. ═══ 6.3.1. Find Class Choice ═══ Select Find class to highlight a particular class definition in the Inheritance View window. When you select Find class, the Find Class action window is displayed. ═══ 6.4. Find Class Action Window ═══ Use the Find Class action window to highlight a class in the Inheritance View window. Type the name of the class that you want to locate in the Enter class name entry field and select the appropriate push button. ═══ 6.4.1. Derived to Base Class Tree Choice ═══ Select the Derived to base class tree choice to control how the classes are displayed in the Classes box. When the Derived to base class tree choice is enabled, the classes box is displayed as a hierarchical tree listing the classes alphabetically. When you click on the plus icon, the base classes are displayed for that class. The title of this list includes (D->B) to indicate that the Derived classes can be expanded into their Base classes. ═══ 6.4.2. Base to Derived Class Tree Choice ═══ Select the Base to derived class tree choice to control how the classes are displayed in the Classes box. When the Base to derived class tree choice is enabled, the classes box is displayed as a hierarchical tree listing the classes alphabetically. When you click on the plus icon, the derived classes are displayed for that class. The title of this list includes (B->D) to indicate that the Base classes can be expanded into their Derived classes. ═══ 6.4.3. Class List Choice ═══ Inheritance View window Select the Class list choice to display the list of classes alphabetically in the Classses list. ═══ 6.5. Class Details Window ═══ The Class Details window provides information about a particular class definition. Each page has a vertical split bar that lets you resize the notebook page. To resize the page, press and drag the mouse pointer on the vertical split bar. This window contains a notebook with tabs at the bottom. There are six pages in the notebook and each page contains information about a particular class definition. The name of the notebook page is above the tabs. You can change pages in the notebook by selecting the spin buttons in the bottom-right corner or by selecting the tabs on the bottom of the notebook page. The names of the six notebook pages are as follows: o Data members o Member functions o Base classes o Derived classes o Class friends o Friend functions Menu Bar Summary Options Controls how the window is displayed. Help You have access to several kinds of help information that compliments the online help information that you can get for the debugger. Press F1 or select the Help push button. ═══ 6.5.1. Options Menu ═══ The Options menu choices allow you to select what you want displayed in the Class Details window. Menu Summary Window settings Control how the fields in the Class Details window are displayed. Debug session control Displays the Debug Session Control window. Close debug End the debugging session. ═══ 6.5.2. Window Settings Cascading Choice ═══ The Window Settings cascading choice lets you control the font for the notebook page and choose how you want the fields displayed. Menu Summary Display Style Select which fields are displayed on the notebook page. Fonts Select the font you want to use for the text displayed in the active window. ═══ 6.5.3. Display Style Choice ═══ Select the Display style choice to choose which fields are displayed on the notebook page. When you select Display style, the Window Settings action window is displayed. This action window controls the current notebook page. Note: If you want to change another notebook page, use the spin buttons to move through the notebook pages and then select the Display style choice. ═══ 6.5.4. Window Settings Action Window ═══ Use the Window Settings action window to control which columns or fields are displayed on the notebook page and how you want the information sorted. There are two list boxes in the Window Settings action window: Details to display and Sort by. Details to display: The list box contains the fields from the notebook page. You can select the columns you want displayed on the notebook page. If you do not want a field displayed on the notebook page, click on it. The field is immediately removed from the notebook page and deselected in the list. Sort by: The list box contains the column names or fields from the notebook page. Select how you want the fields sorted on the notebook page. When you select a field name, all the rows are sorted based on the alphabetical order of the selected field. You can choose Defined order from the list box to place the rows in the default order. Hide column titles This check box lets you choose to hide or show the column titles. When a √ is displayed, the titles are hidden. When a √ is not displayed, the titles are shown. Select one of the push buttons to continue. ═══ 7. Exception Window ═══ The Exception action window is displayed whenever an OS/2 exception has occurred. It may have occurred in application or system code. In either case, the debugger displays and highlights the line where the exception occurred in the source window. The three options that are available are: Examine/Retry This option allows the user to investigate the cause of the exception and if desired, retry execution of the line that caused the original fault. Execution will begin with the line that caused the fault and attempt to continue from that point. This is the default action that occurs if you press Enter. Step Exception This action causes the debugger to step into the first registered exception handler (tracked by OS/2). Execution will stop at the first executable line of code in that exception handler. At this point, the user controls what happens next. Run Exception This action causes the debugger to run the normal exception handler(s) that are registered with OS/2 to handle exception conditions. ═══ 8. Window Analysis ═══ Window Analysis gives you an understanding of PM application windows. It presents both graphical and textual information about your application's windows and lets you observe the relationships between windows. It allows you to view a three-dimensional image of your application's windows, characteristics of windows, and parent-child relationships between the windows. Your application creates many windows, directly or indirectly, to perform tasks. All of these windows are children or descendents of desktop and desktop-object windows. Windows created by the application being debugged are referred to as debuggee windows. Window Analysis consists of the following windows: o Window Analysis is the primary window. o Parent and Z-Order Tree is a secondary window. o Window Characteristics is a secondary window. The secondary windows provide information pertaining to the Window Analysis window. When you select an item in any of the three windows, it is reflected in the other two windows. If you close the Window Analysis window, the secondary windows will also close. The Window Analysis presents an image of your debuggee windows. When this image is displayed, you can rotate the image to visually separate the windows, select a window on the image, and look at the detailed information pertaining to that window. The Window Analysis window is represented in a notebook format. The notebook is divided in two sections: desktop and desktop-object. The notebook has major and minor tabs. Major tabs correspond to the two major sections that are located at the bottom of the notebook. Major tab pages define the beginning of major sections and are called primary pages. Pages within major sections are called regular pages. They have minor tabs that are located at the right of the notebook. The images on the desktop and desktop-object primary pages represent children of the desktop window and desktop-object window respectively. The images on the regular pages represent the child of the desktop or desktop-object window as a parent and all its descendents. To display the pages and tabs, you can use the notebook standard keyboard selection technique. Another method of displaying the pages is to double-click on the window on the primary page. You can select any window on a page by clicking on the window. By using the Tab and BackTab keys, you can move the selection from window to another window. When you select an item in the Window Analysis window, it is reflected in the two secondary windows. Each page has a status line that is used to display sizes of a window that is selected on the page. Use the vertical slider or vertical arrows to rotate the page image vertically (around the x-axis). Use the horizontal slider to rotate the image horizontally (around the y-axis). The borders of the windows are drawn as follows: screen solid thick line (only on a primary page) visible window solid thin line invisible window dashed thin line Menu Bar Summary Details View the secondary windows of Window Analysis. Options Control the way that Window Analysis is displayed. Help Online help information that compliments the information you get when you press F1 or select a Help push button. ═══ Desktop ═══ The desktop section is comprised of a primary page and a number of regular pages. The primary page of the desktop section contains the image of the desktop window and debuggee windows that are children of the desktop window. The primary page has a major tab with the name Desktop at the bottom of the notebook. The major tab defines the beginning of the desktop section. The regular page of the desktop section contains the image of the child of the desktop as a parent and all its descendents. The regular page has a minor tab with the image of the desktop window child and its descendents or a text. The minor tabs are at the right of the notebook. Note: The sizes and distribution of windows may cause the image to be displayed as a small dot on the screen, or number of dots positioned according to the z-order. This may occur as a consequence of minimizing the debuggee windows, or if the sizes of windows are zero. ═══ Desktop-Object Windows ═══ The desktop-object section is comprised of a primary page and a number of regular pages. The primary page of the desktop-object section contains the image of debuggee windows that are children of the Desktop-object window. The primary page has a major tab with the name "Desktop-object" at the bottom of the notebook. The major tab defines the beginning of the desktop-object section. ;p. The regular page of the desktop-object section contains the image of the child of the desktop-object as a parent and all its descendents. The regular page has a minor tab with a text on it. The minor tab is at the right of the notebook. The desktop-object part is optional. Note: The sizes and distribution of windows may cause the image to be displayed as a small dot on the screen, or number of dots positioned according to the z-order. This is a consequence of sizes of object windows often being zero. ═══ 8.1. Details Menu ═══ Select choices from the Details menu to view the secondary windows of Window Analysis. Menu Summary Parent and Z-Order tree Display the Parent and Z_Order Tree window to view the relationships between the debuggee window and non-debuggee windows. Window characteristics Display the Window Characteristics window to view characteristics of the window such as class, handle, and so on. Close debug Close the debugging session. ═══ 8.1.1. Parent and Z-Order Tree Choice ═══ Select the Parent and z-order tree choice to show the relationships between the following windows: o debuggee o non-debuggee o debuggee and non-debuggee. Note: Items selected in this window are reflected in the other two windows (Window Analysis and Window Characteristics). When you select Parent and z-order tree, the Parent and Z-Order Tree window is displayed. ═══ 8.1.2. Window Characteristics Choice ═══ Select the Window characteristics choice to view the characteristics of the debuggee windows. Note: Items selected in this window are reflected in the other two windows (Window Analysis and Parent and Z-Order Tree). When you select Window characteristics, the Window Characteristics window is displayed. ═══ 8.2. Options Menu ═══ Select choices from the Options menu to control the display of bitmaps and desktop-object windows and to rotate the image to the center or to the default position. Menu Summary Bitmaps Display the bitmaps on the notebook tabs. Desktop-object windows Display the desktop-object windows in the Window Analysis and Parent and Z-Order Tree windows. Rotate to center Rotate the image on the window to the center position. Rotate to default Rotate the image on the window to the default position. Debug session control Display the Debug Session Control window. ═══ 8.2.1. Bitmaps Choice ═══ Enable the Bitmaps choice to display bitmaps on the tabs of the notebook in the Window Analysis window. When bitmaps are enabled, a bitmap is displayed on the tab if the window is shown on the screen. If the window is hidden, text is displayed on the tab. (For desktop-object section, this is always the case). The text is displayed on the tabs when bitmaps are disabled. The text is the letter "D" (Desktop) or letter "O" (Desktop-object) concatenated with the number of a regular page in the section. ═══ 8.2.2. Desktop-Object Windows Choice ═══ You can enable or disable the the Desktop-object windows choice to include the desktop-object windows in the Window Analysis window. ═══ 8.2.3. Rotate to Center Choice ═══ Select the Rotate to center choice to center the image on the Window Analysis window. ═══ 8.2.4. Rotate to Default Choice ═══ Select the Rotate to default choice to rotate the image to the default position in the Window Analysis window ═══ 8.3. Window Characteristics Window ═══ The Window Characteristics window displays the characteristics of the debuggee windows. The Window Characteristics window is displayed in a table format with each row representing a different debuggee window and each column representing a different characteristic. The rows listed in the Window Characteristics window reflect the debuggee windows on the current page of the Window Analysis window. Note: Items selected in this window are reflected in the other two windows (Window Analysis and Parent and Z-Order Tree). Menu Summary Options Control which characteristics are displayed. Help Online help information that compliments the information you get when you press F1 or select a Help push button. ═══ 8.3.1. Options Menu ═══ Select choices from the Options menu to control the display of windows characteristics, titles in the window, and fonts for the window. Menu Summary Display style Select which window characteristics are displayed. Window controls Turn titles on or off in the Window Characteristics window. Fonts Select the font you want to use for the text displayed in the active window. ═══ 8.3.2. Display Style Choice ═══ Select the Display style choice to choose which window characteristics you want displayed in the Window Characteristics window. When you select Display style, the Display Styles action window is displayed. ═══ 8.3.3. Window Controls Choice ═══ Select the window controls choice to choose whether titles are displayed in the Window Characteristics window. When you select Window controls, the Window Controls action window is displayed. ═══ 8.3.4. Display Style Action Window ═══ Use the Display Style action window to select the characteristics you want displayed in the Window Characteristics window. Visible characteristics Select the characteristics you want displayed in the Window Characteristics window by clicking on the names of the titles. The highlighted names will be displayed in the Window Characteristics window. Save window settings Select this check box to save your selections for the next debugging session. Select one of the push buttons to continue. ═══ Characteristics List ═══ Class Window class of the window Hwnd Window handle in 32-bit hex format Hwnd (16:16) Window handle in 16:16-bit hex format Parent Parent window handle of the window in 32-bit hex format Parent (16:16) Parent window handle of the window in 16:16-bit hex format Owner Owner window handle of the window in 32-bit hex format Owner (16:16) Owner window handle of the window in 16:16-bit hex format X X-coordinate of the position of the window relative to the desktop Y Y-coordinate of the position of the window relative to the desktop Width Width of the window Height Height of the window X' X-coordinate of the position of the window relative to its parent window Y' Y-coordinate of the position of the window relative to its parent window PID Process identification of the window TID Thread identification of the window Text Window text (valid only for windows with the class of WC_BUTTON, WC_STATIC and WC_TITLEBAR) Active Whether the window is the active window Focus Whether the window has the focus Enabled Whether the window is enabled Checked Whether the window is checked (only for windows with a class of WC_BUTTON, WC_STATIC and WC_TITLEBAR) Visible Whether the window has its visibility set on Showing Whether the window is showing Proc Address of the window procedure Proc name Name of the window procedure Thunk proc Address of the thunk procedure of the window Class proc Address of the procedure for the class of the window Model The memory model of the window Msgq The handle of message queue of the window Style The window style settings HHeap The heap handle used by the child window of the window Hwnd focus The window handle of the child window of the window that last had the focus in 32-bit HEX format Hwnd focus (16:16) The window handle of the child window of the window that last had the focus in 16:16-bit hex format User A ULONG value for applications to use at the offset QWL_USER in the windows of some preregistered window classes Defbutton The window handle of the default push button for a dialog in 32-bit hex format Defbutton (16:16) The window handle of the default push button for a dialog in 16:16-bit hex format ID The window identity of the window. The value of the id parameter of the WinCreateWindow function. Flags The frame window flags of the window Result The dialog result parameter, as established by the WinDismissDlg function X Restore X coordinate of the position to which the window is restored Y Restore Y coordinate of the position to which the window is restored CX Restore Width to which the window is restored CY Restore Height to which the window is restored X Minimize X coordinate of the position to which the window is minimized If this value is -1 the window has not been minimized Y Minimize Y coordinate of the position to which the window is minimized If this value is -1 the window has not been minimized Minimized The window is minimized Maximized The window is maximized. ═══ 8.3.5. Window Controls Action Window ═══ Use the Window controls action window to turn the titles on or off in the Window Characteristics window. Display titles Select this box if you want titles to be displayed in the window. Save window settings Select this box if you want to save the selections you have made for the next debugging session. Select the appropriate push button to continue. ═══ 8.4. Parent and Z-Order Tree Window ═══ The Parent and Z-Order Tree window shows the relationship between the following windows: o debuggee o non-debuggee o debuggee and non-debuggee. Note: Items selected in this window are reflected in the other two windows (Window Analysis and Window Characteristics). The non-debuggee windows shown in the Parent and Z-Order Tree window are the desktop and desktop-object windows and their children which are not debuggee windows. Menu Summary Options Control how the items in the Parent and Z-Order Tree window are displayed. Help Online help information that compliments the information you get when you press F1 or select a Help push button. ═══ 8.4.1. Options Menu ═══ Select choices from the Options menu to control the display of the window class and handle and select the fonts. Menu Summary Display style Select to display the window class and window handle. Fonts Select the font you want to use for the text displayed in the active window. ═══ 8.4.2. Display Style Choice ═══ Select the Display style choice to display the window class and window handle in the Parent and Z-Order Tree window. When you select Display style, the Display Style action window is displayed. ═══ 8.4.3. Display Style Action Window ═══ Use the Display Styles action window to select which items you want displayed in the Parent and Z-Order Tree window. Visible Characteristics Select one of these radio button to select the information you want displayed for each window: Window class The registered class of the window. Window handle The handle of the window. Both window handle and class The handle and class of the window will be displayed. Include non-debuggee desktop children Select this box if you want to display all the non-debuggee desktop children. Include non-debuggee desktop-object children Select this check box to display all of the non-debuggee desktop-object children. Note: This choice is only available if you selected Desktop-object windows from the Window Analysis window. Save window settings Select this check box to save your selections for the next debugging session. ═══ 9. Message Queue Monitor Window ═══ The Message Queue Monitor window displays PM messages associated with a PM application. It presents formatted messages in a list as they occur. Using the message queue monitor, you can control: o How the information is displayed for each message. o How message parameters are formatted. o Which messages are monitored. o Which windows have their messages monitored. o Which message queues have their messages monitored. o How the user generated messages are displayed. Menu Bar Summary Monitor Suspend messages, clear messages, resize the columns, and close the debugging session. Options Access various utility action windows where you can set message queue options. These options control how messages are monitored and displayed. Help You have access to several kinds of help information that compliments the online help information that you can get for the debugger. Press F1 or select a Help push button. ═══ 9.1. Monitor Menu ═══ Select choices from the Monitor menu to suspend messages, clear messages, resize the columns, and close the debugging session. Menu Summary Suspend Suspends messages from being added to the Message Queue Monitor window. Clear Delete all the messages that are displayed in the the Message Queue Monitor window. Resize column width Resize the columns in the Message Queue Monitor window. Close Debug Close the debugging session. ═══ 9.1.1. Suspend Choice ═══ Select the Suspend choice to stop any new messages from being added to the Message Queue Monitor window. ═══ 9.1.2. Clear Choice ═══ Select the Clear choice to clear all the messages in the Message Queue Monitor window. ═══ 9.1.3. Resize Column Width Choice ═══ Select the Resize column width choice to recalculate the widths of the columns in the Message Queue Monitor window. Note: This option is available only when the automatic column resizing choice is not selected in the Display Style action window. ═══ 9.2. Options Menu ═══ Select choices from the Options menu to control the monitor window. Menu Summary Monitor messages Select which PM messages you want monitored and displayed. Monitor windows Select which windows have their messages monitored. Monitor queues Select which message queues have their messages monitored. Format parameters Select how PM message parameters are displayed. Define messages Select user-defined messages. Display styles Select the information you want displayed in the Message Queue Monitor window. Fonts Select the font you want to use for the text displayed in the active window. Debug session control Display the Debug Session Control window. ═══ 9.2.1. Monitor Messages Choice ═══ The Monitor messages choice lets you select which PM messages you want monitored. When you select Monitor Messages, the Monitor Messages action window is displayed. ═══ 9.2.2. Monitor Messages Action Window ═══ Use the Monitor Messages action window to specify the messages you want monitored. The Monitor Messages action window consists of the following: Defined Message IDs These are the pre-defined and user-defined messages. Each message is displayed as a name and hex number. You can select multiple messages for monitoring. Sort o Select the Name button to sort the messages alphabetically by name. o Select the ID button to sort the messages numerically by ID. Undefined Messages IDs o Select the Include WM_USER check box to include all undefined messages that are in the range WM_USER and above. o Select the Include non WM_USER check box to include all undefined messages that are in the range less than WM_USER. Include all message IDs Select the Include all message IDs check box to include all messages. When this check box is enabled, the defined and undefined message selections are disabled. Define Messages IDs Select this button and the Define Messages action window is displayed. Monitor o Select the Messages to application check box to monitor messages that are received by an application. o Select the Messages from application check box to monitor messages that are dispatched by an application. o Select the Post messages check box to monitor post messages. o Select the Send messages check box to monitor send messages. Save window settings Select the Save window settings check box to save your selections in profile information. The messages you select to have monitored are saved in restart information. Click on the appropriate push button to continue. ═══ 9.2.3. Monitor Windows Choice ═══ The monitor windows choice lets you select which windows have their messages monitored. When you select Monitor windows, the Monitor Windows action window is displayed. ═══ 9.2.4. Monitor Windows Action Window ═══ Use the Monitor Windows action window to specify the windows you want monitored. You may identify specific windows you want to monitor by using the Window Analysis window. The Monitor Windows action window consists of the following: Windows Each window is displayed with the class and handle. You can select multiple windows for monitoring. Sort o Select the Class button to sort the window names alphabetically. o Select the Hwnd button to sort the window handles in numerical order. o Select the Parent and z-order button to sort the window handles to show the parent and z-order relationship of application windows. Monitor all windows Select the Monitor all windows check box to monitor all the windows. This will disable individual selection. Save window settings Select the Save window settings check box to your selections for the next session. Click on the appropriate push button to continue. ═══ 9.2.5. Monitor Queues Choice ═══ The Monitor queues choice lets you select which message queues are being monitored. When you select Monitor windows, the Monitor Message Queue action window is displayed. ═══ 9.2.6. Monitor Message Queue Action Window ═══ Use the Monitor Message Queue action window to specify the message queues you want monitored. The Monitor Message Queue action window consists of the following: Message Queue This section contains a list of the message queues. You can select multiple queues. Sort o Select the HMQ button to sort the message queues by message queue handles. o Select the TID button to sort the message queues by thread id. Monitor all message queues Select the Monitor all message queues check box to monitor all the message queues. This will disable individual selections. Save window settings Select the Save window settings check box to your selections for the next session. Click on the appropriate push button to continue. ═══ 9.2.7. Format Parameters Choice ═══ The Format parameters choice lets you choose how PM message parameters are displayed. When you select Format parameters, the Format Message Parameters action window is displayed. ═══ 9.2.8. Format Message Parameters Action Window ═══ Use the Format Message Parameters action window to specify how message parameters are displayed. The Format Message Parameters action window consists of the following: Message This section contains a list of the all the defined messages. Sort o Select the Name button to sort the messages alphabetically by name. o Select the ID button to sort the messages numerically by ID. Parameter formatting o MP1 - Message parameter 1 Select the arrow to open the MP1 list. Select the type of formatting you want from the parameter list. The formatting selections are saved in restart information. o MP2 - Message parameter 2 Select the arrow to open the MP2 list. Select the type of formatting you want from the parameter list. The formatting selections are saved in restart information. Save window settings Select the Save window settings check box to your selections for the next session. Click on the appropriate push button to continue. ═══ 9.2.9. Parameter List ═══ The following is a list of paramters that may not be self-explanatory: 32-bit fixed (int, frac) A 32-bit fixed number formatted by separating the integer and fractional parts. 32-bit fixed (decimal rounded) A 32-bit fixed number formatted as a rounded decimal number. WM_CHAR mp1 Parameter formatted as the message parameter 1 for a WMCHAR message. WM_CHAR mp2 Parameter formatted as the message parameter 2 for a WMCHAR message. ═══ 9.2.10. Define Messages Choice ═══ The Define message choice lets you define messages that you want to have displayed in the Message Queue Monitor window. When you select Define message, the Define Messages action window is displayed. ═══ 9.2.11. Define Messages Action Window ═══ Use the Define Messages action window to define messages. Message In the Name entry field, type in the name of the message that you want to define. In the ID entry field, type in the hex number for the message or use the spin button to locate the number of the message. Default parameter formatting o MP1 - Message parameter 1 Select the arrow to open the MP1 list. Select the default type of formatting you want from the parameter list. The formatting selections are saved in restart information. o MP2 - Message parameter 2 Select the arrow to open the MP2 list. Select the default type of formatting you want from the parameter list. The formatting selections are saved in restart information. Message monitored by default Select the Message monitored by default check box if you want to monitor the messages by default. Save window settings Select the Save window settings check box to save the selections you have made for the next debugging session. Click on the appropriate push button to continue. ═══ 9.2.12. Push Buttons ═══ Add Click on Add to add the new message you have defined. Update Click on Update to update a message that previously existed. Delete Click on Delete to delete a message that previously existed. Cancel Click on Cancel to ignore any changes that were made and close this action window. Help Click on Help to display help information that tells you how to use this action window. ═══ 9.2.13. Display Style Choice ═══ Use the Display style choice to select which columns you want to display in the Message Queue Monitor window. When you select Display style, the Display Style action window is displayed. ═══ 9.2.14. Display Style Action Window ═══ Use the Display Style action window to specify which columns you want displayed in the Message Queue Monitor window. The items in this window affect system performance. You may want to experiment with different settings to see what works best for your system. Columns Select the columns you want displayed in the Message Queue Monitor window. These are described in the column list. Messages count The following choices affect system performance: Maximum displayed Select the number of messages you want displayed from the Maximum displayed entry field. You can type in a number or use the spin button to select the number you want. A higher maximum may cause the system to respond faster. However, too high a maximum, may cause the system may respond slower. Note: You may need to experiment with this setting to see what works best for your system. Deleted at one time Select the number of messages you want deleted at one time from the Deleted at one time entry field. You can type in a number or use the spin button to enter the number you want. The more messages deleted at one time will cause the system to respond faster. Unlimited Select Unlimited to have no maximum on the number of messages to be displayed. When you select unlimited, the Maximum displayed and Deleted at one time entry fields are disabled. This choice sets no limit on messages to have displayed and the system may respond slower. Automatic scrolling Select Automatic scrolling if you want the window to automatically scroll forward when the screen is filled with messages. Selecting this will decrease system performance. Automatic column resizing Select Automatic column resizing if you want the columns to automatically resize. Selecting this will decrease system performance. Note: When this check box is selected, the Resize Column Width choice is not available. Display titles Select Display titles if you want titles to be displayed in the window. This does not affect system performance. Save window settings Select the Save window settings check box if you want to save the selections you have made for the next debugging session. Click on the appropriate push button to continue. ═══ 9.2.15. Column List ═══ The following is a list of column titles that are available: Class Window class of the window handle the message is being directed to. Note: Some messages do not have a window handle (for example, WinPostQueueMsg). Hwnd Window handle the message is being directed to. Note: Some messages do not have a window handle (for example, WinPostQueueMsg). Queue Message queue the message is being directed to. Message Message name. Msg ID Message formatted as 32-bit signed integer. Msg-hex Message formatted as 32-bit hex number. MP1 Message parameter 1. MP2 Message parameter 2. Type Indicates whether the message is a post message or a send message. Time Indicates the time stamp of the message was generated. The time stamp is an offset from a starting time. Time style is only for Post messages. Mouse The mouse position when the message was generated. Mouse style is only for Post messages. Options Message removal options. Options style is only for Post messages. Model Message identity. Model style is only for Send messages. Task Whether the message was dispatched between tasks or not. Task style is only for Send messages. From PID Process identity of the process that dispatched the message. From PID style is only for Send messages. From TID Thread identity of the thread that dispatched the message. From TID style is only for Send messages. To PID Process identity of the process that received the message. To TID Thread identity of the thread that received the message. Direction Direction the message relative to the debuggee process. Dispatched - Debuggee process dispatched a message to another process . Received - Debuggee process received a message from another process . Internal - Debuggee process dispatched a message to itself. Processed Whether the debugger processed message on behalf the debuggee. This occurs when the debuggee is stopped. ═══ 10. Storage Window ═══ Use the Storage window to view and update the contents of the storage used by your program. The following storage data is displayed in the Storage window: o Fields for the displayed addresses. You can select one of the following storage models for the addresses that are displayed: - 16:16 (segmented) storage addresses - Flat storage model addresses - Both 16:16 and flat storage model addresses. o Fields for the data storage contents. The number of fields displayed and their display characteristics depend on the storage style you select. Storage can be displayed in various styles. You can display only one storage style at a time. o Titles for the displayed addresses and storage content fields. You can open multiple storage windows to view different storage locations at the same time. When the state of your program changes, the contents of the Storage window is updated to reflect the change. To scroll through memory, use one of the following methods: o Scroll bars o Up and Down cursor keys o PageUp and PageDown keys. The address of the cursor is displayed in the title bar of the Storage window. You can update the contents of storage, or you can view the contents of storage at a new address location. Double-click on one of the following topics to find out how to update the contents of storage or specify a new address location: o Updating storage o Specifying address location. To view a variable in storage: 1. Determine the storage address of a variable by monitoring its address. For example, to find out the address of a variable VAR, select Monitor expression from the Variable menu and type "&VAR" into the Expression entry field. 2. The monitor window that displays this expression will show a pointer with an address. 3. Open a storage window by selecting Storage from the Window menu or selecting the Storage button in the title bar. Type over the address field and enter the address of the variable shown by the pointer in the monitor window. The Storage window will scroll to that address, and the contents of storage at that address will be the value of the variable VAR. 4. If you also put the variable VAR in the monitor window, you can update the variable and watch the storage location change, or update the storage location and watch the variable's value change. Menu Bar Summary Options Set options that control how the storage content and addresses are displayed and display additional storage window control attributes. Help You have access to several kinds of help information that compliment the online help information that you can get for the debugger. Press F1 or select the Help push button. ═══ 10.1. Storage Display Styles ═══ Storage can be displayed in the following address styles: o Flat and 16:16 o Flat only o 16:16 only. Storage can be displayed in the following value styles: o Hexadecimal and character text o Character text o 16-bit integer o 16-bit unsigned integer o 16-bit integer in hexadecimal (byte reversed) o 32-bit integer o 32-bit unsigned integer o 32-bit integer in hexadecimal (byte reversed) o 32-bit floating point o 64-bit floating point o 80-bit floating point o 16-bit near pointers o 16:16-bit far pointers o 32-bit flat pointers. You can also change the number of bytes per line that are displayed. This number varies depending on the content style you have selected. ═══ 10.2. Updating Storage ═══ To update the contents of storage, type over the current contents in the storage field. The contents of storage are updated when an elapsed time of one second occurs after the last keystroke has been entered. ═══ 10.3. Specifying Address Location ═══ To view the storage at a different address, type over the contents of the address field with the new address. You can choose to update either the Flat address field or the 16:16 (segmented) address field. The contents of the address are updated when an elapsed time of one second occurs after the last keystroke has been entered. The Storage window is scrolled to the appropriate address. ═══ 10.4. Options Menu ═══ Select choices from the Options menu to control how the storage contents and addresses are displayed, control the display of the storage window control attributes, and end your debugging session. Menu Summary Window settings Change the storage display format. Debug session control Display the Debug Session Control window. Close debug End your debugging session. ═══ 10.4.1. Window Settings Choice ═══ Select the Window settings cascaded choice to change the context and address style of the Storage window. Menu Summary Content style Select the display format for the storage contents. Address style Select the display format for storage addresses. Window control Control the display of the horizontal scroll bar and the headings in the Storage window. Fonts Change the font used to display text in the Storage window. ═══ 10.4.2. Content Style Choice ═══ Select the Content choice to select the display format for the storage contents. You can select from several storage display styles. When you select the Content choice, the Storage Content Style action window is displayed. ═══ 10.4.3. Address Style Choice ═══ Select the Address choice to display the format of the storage addresses. Storage can be displayed in the following address styles: o Flat and 16:16 o Flat only o 16:16 only. When you select the Address choice, the Storage Address Style action window is displayed. ═══ 10.4.4. Window Controls Choice ═══ Select the Display window controls choice to select the options that control the display of : o Titles in the Storage window o The horizontal scroll bar. When you select the Display window controls, the Storage Window Controls action window is displayed. ═══ 10.4.5. Storage Window Controls Action Window ═══ Use the Storage Window Controls action window to control the display of the horizontal scroll bar and the titles in the Storage window. After you have finished selecting the options from the Storage Window Controls action window, select one of the push buttons. Display Select the following check boxes to control the display of the horizontal scroll bar and the titles in the Storage window: Horizontal scroll bars Select this check box to display the horizontal scroll bar. Titles Select this check box to display the column titles in the Storage window. Save settings Select the Save settings check box to save the selections you make in this action window for the next debugging session. ═══ 10.4.6. Storage Content Style Action Window ═══ Use the Storage Content Style action window to select the parameters that control how the storage contents are displayed. When you are finished, select the appropriate push button. Style You can select from the following storage value styles: o HEX and character o Character o 16-bit integer o 16-bit unsigned integer o 16-bit integers in HEX o 32-bit integer o 32-bit unsigned integer o 32-bit integers in HEX o 32-bit float o 64-bit float o 80-bit float o 16-bit near pointers o 16:16-bit far pointers o 32-bit flat pointers. To select a value style: 1. Select the arrow to open the Style list. 2. Highlight the value style. The value style you highlighted is placed in the Style entry field. Bytes per line You can set the number of bytes per line. The available choices for the number of bytes per line you can display vary with the storage content style you select. To select the number of bytes per line: 1. Select the arrow to open the Bytes per line list. 2. Highlight the number of bytes per line you want to select. The number of bytes per line you highlighted is placed in the Bytes per line entry field. Save settings Select the Save settings check box to save the selections you make in this action window for the next debugging session. ═══ 10.4.7. Storage Address Style Action Window ═══ Use the Storage Address Style action window to set the storage addresses are displayed. When you are finished, select the appropriate push button. Style You can select from the following address styles: o Flat and 16:16 (segmented) o Flat only o 16:16 only. To select an address style: 1. Select the arrow to open the Style list. 2. Highlight the address style. The address style you highlighted is placed in the Style entry field. Save settings Select the Save settings check box to save the selections you make in this action window for the next debugging session. ═══ 10.4.8. Push Buttons ═══ OK Click on OK to accept the information you have entered and to close this action window. Reset Click on Reset to clear any changes you have made in this session. Default Click on Default to replace the current default display style with the debugger default display style. Cancel Click on Cancel to close this action window. Help Click on Help to display Help information that tells you how to use this action window. ═══ 11. Register Window ═══ Use the Register window to view or modify the contents of the registers monitored for your program. One set of processor registers exists for each thread. In the Register window, floating point registers are displayed as floating point decimal numbers. They can be updated with a floating point decimal number or with a hexadecimal string that represents a floating point number. Menu Bar Summary Options Change the font used for the text displayed in the Register window, display other debugger windows, and end your debugging session. Help Provides you with online help information that compliments the online help that you can when you press F1 or select a Help pushbutton. ═══ 11.1. Options Menu ═══ Select the Options menu-bar choice to change the fonts used for the text displayed in the Register window, set debugger options, and end the debugging session. Menu Summary Fonts Change the fonts for the text displayed in the Register window. Where Open a program view containing the next line to be executed. Debug session control Display the Debug Session Control window. Close debug End your debugging session. ═══ 12. Stack Window ═══ The Stack window lists all of the active functions for a particular thread, including PM calls. The functions are displayed in the order that they were called. Each Stack window displays call stack information for one thread only. When the state of the program changes (as you execute the program, or you update displayed data) the Stack window is updated to reflect the current state. You can double-click on any call stack entry to display the source for that entry. The line that calls the next stack entry is highlighted. Menu Bar Summary File Open a program view of your program and end your debugging session. Options Select the font you want to use for the text displayed in the Stack window, select the parameters that control how the items on the stack are displayed. Help Provides you with online help information that compliments the online help you can get when you press F1 or select a Help push button. ═══ 12.1. File Menu ═══ Select the File menu choice to open different views of your program and to end your debugging session. Menu Summary View Open a program view of the highlighted call stack item. Where Open a program view containing the next line to be executed. Close debug End your debugging session. ═══ 12.2. Options Menu ═══ Select the Options menu choice to control how the items on the stack are displayed, and to set various debugger options. Menu Summary Window settings Control how the items on the call stack are displayed. Debug session control Display the Debug Session Control window. ═══ 12.2.1. Window Settings Choice ═══ Select choices from the Window settings cascaded menu to change the font for the Stack window and to select the information that is displayed for the items on the call stack. Menu Summary Display style Control how the items on the stack are displayed. Fonts Select the font you want to use for the text displayed in the Stack window. ═══ 12.2.2. Display Style Choice ═══ Select the Display style cascaded choice to control how the items on the stack are displayed. You can select the type of information you want displayed for all of the stack items and you can choose to display new stack items on the top or the bottom of the stack. When you select the Display style choice, the Display Style action window appears. ═══ 12.3. Display Style Action Window ═══ Use the Display Style action window to control how the items on the stack are displayed. You can select the type of descriptive information you want displayed for all of the call stack items. You can also choose to display new call stack items on the top or the bottom of the stack. To change how stack items are displayed: 1. Select one or more of the check boxes under Items to select the information you want displayed for each stack entry. 2. Select one Growth radio button to display new call stack items at the top of the stack or at the bottom of the stack. 3. Select one of the push buttons to finish your dialog. Items Select one or more of these check boxes to select the information you want displayed for each stack entry: Entry number The entry number represents the position of the call stack item in the list. Entry level 1 is the first function invoked. Function The name of the program or the address of the function call that created the new stack entry. Source The name of the component that contains the function. The name displayed corresponds with a name listed in the Components list box in the Debug Session Control window. Recursion level Recursion level 0 is the first invocation. Growth direction Select a radio button to display new stack items at the top or the bottom of the stack window: Up Displays new stack items at the top of the stack window. Down Displays new stack items at the bottom of the stack window. Save window settings Select the Save window settings check box to save the selections you made in this action window for this debugging sessions. ═══ 13. Local Variables Window ═══ The Local Variables window displays the local variables for the current execution point in a given thread. As execution moves from function to function, the window is updated with the new local variables. For more information about manipulating the variable monitors, double-click on Using the data popup and monitor windows . You can select the variables or expressions you want to display from a window: o Using the mouse o Using the mouse and the Monitor action window o Using the keyboard. You must select an expression with: o A valid operand type o A valid operator o A valid typecasting operation Note: When your program returns from a called function, the data display options you previously selected (for example, representation) are lost. If you want to save these display options, monitor the variable or expression in a Private Monitor window, the Program Monitor window, or a data pop-up window. Menu Bar Summary Edit Edit text and search for strings in the text. Options Control how the contents of variables are displayed, to set the debugger options, and end your debugging session. Help Provides you with online help information that compliments the online help you can get when you press F1 or click on a Help push button. ═══ 13.1. Edit Menu ═══ Select choices from the Edit menu to copy and place items into the clipboard, locate the next line to be executed and close the debugger. Menu Summary Copy Copy text into the clipboard. Paste Places the contents of the clipboard at the current cursor position. Where Open a program view containing the next line to be executed. Close debug Close the debugging session. ═══ 13.1.1. Copy Choice ═══ Select the Copy choice to copy text and place it into the clipboard. To copy the text: o Highlight the text you want to copy and select the Copy choice or press Ctrl+Ins ═══ 13.1.2. Paste ═══ Select the Paste choice to copy from the clipboard into a new location. To paste the text: o Select the location where you want the text to appear and select the Paste choice or press Shift+Ins. ═══ 13.2. Options Menu ═══ Select choices from the Options menu to control how the contents of variables are displayed and to set the debugger options. Menu Summary Fonts Select the font you want to use for the text displayed in the Local Variables Monitor window. Representation Display the contents of a monitored variable in a different format. Select all Select all expressions. Deselect all Deselect all expressions. Delete Delete all the selected expressions. Show context Display the contextual information for all selected expressions. Hide context Prevent the display of contextual information for all selected expressions. Debug session control Displays the Debug Session Control window. ═══ 13.2.1. Representation Cascading Choice ═══ Select the Representation cascading choice to display the contents of the variable in a new representation. The types of representation that are displayed on the menu depend on the data type of the variable you are monitoring. The following are possible representations: Hexadecimal Displays the contents of the monitored variable in hexadecimal notation. Decimal Displays the contents of the monitored variable in decimal notation. String Displays the contents of the monitored variable as a character string. Hexadecimal pointer Displays the contents of the monitored variable as a hexadecimal pointer. Decimal pointer Displays the contents of the monitored variable as a decimal pointer. Array Displays the contents of the monitored variable as an array. Floating point Displays the contents of the monitored variable in floating point notation. Character Displays the contents of the monitored variable in character form. Note: Floating point registers or variables are displayed as either a floating point decimal number or a hexadecimal string. However, they cannot be updated with a hexadecimal string that represents a floating point number. If you need to update a floating point variable with a hexadecimal representation of a floating point number, you must step through the Disassembly view to see when the variable is loaded into a register and change the value in the Register window at that time. ═══ 13.2.2. Representations ═══ Select the Hexadecimal choice to display the contents of a variable that is being monitored in hexadecimal notation. Select the Decimal choice to display the contents of a variable that is being monitored in decimal notation. Select the String choice to display the contents of a monitored variable as a character string. Select the Hexadecimal pointer choice to display the contents of a monitored variable as a hexadecimal pointer. Select the Decimal pointer choice to display the contents of a monitored variable as a decimal pointer. Select the Array choice to display the contents of a monitored variable as an array. Select the Floating point choice to display the contents of a monitored variable in floating point notation. Select the Character choice to display the contents of a monitored variable in the form of a character. ═══ 13.2.3. Select All Choice ═══ Select the Select all choice to select all the expressions in the window. ═══ 13.2.4. Deselect All Choice ═══ Select the Deselect all choice to cancel the selection of all the expressions in the window. ═══ 14. Program Monitor Window ═══ Use the Program Monitor window to collect variables or expressions that want you monitor. This window is not associated with any specific program view window and remains open at all times unless explicitly closed by the user. For more information about manipulating the variable monitors, double-click on Using the data popup and monitor windows You can select the variables or expressions you want to display: o Using the mouse o Using the mouse and the Monitor action window o Using the keyboard. You must select an expression with: o A valid operand type o A valid operator o A valid typecasting operation Menu Bar Summary Edit Copy to the clipboard and paste to the clipboard. Options Modify the style of monitoring and the presentation of variables and expressions Help Provides you with online help information that compliments the online help you can get when you press F1 or select a Help pushbutton. ═══ 14.1. Options Menu ═══ Select choices from the Options menu to change the representation of a variable or expression, delete a variable or expression from the Program Monitor window, control the updating of the displayed contents, display context, and change the font for the text displayed in this window. Menu Summary Fonts Select the font you want to use for the text displayed in the Program Monitor window. Representation Display the contents of a monitored variable or expression in a different representation. Select all Select all expressions. Deselect all Deselects all expressions. Delete all Delete all the expressions. Delete Delete all of the selected data items that are being monitored. Enable Displays the contents of a variable or expression as it is updated. Disable Prevent the displayed contents of a variable or expression from being updated. Show context Display the contextual information for a variable or expression being monitored. Hide context Prevent the contextual information for a monitored variable or expression from being displayed. Debug session control Display the Debug Session Control window. Close debug Close the debugging session. ═══ 14.1.1. Delete Choice ═══ Select the Delete choice to delete variables or expressions that are being monitored from a monitor window. To delete a variable or expression from a monitor window: 1. Select the variable or expression with your mouse. The monitor for the variable or expression is highlighted. 2. Select the Delete choice from the Options menu. ═══ 14.1.2. Delete All Choice ═══ Select the Delete all choice to delete all the variables or expressions that are being monitored from a monitor window. To delete the variables or expressions from a monitor window, select the Delete all choice from the Options menu. ═══ 15. Private Monitor Window ═══ Use the Private Monitor window to collect variables or expressions that you want to monitor. This window is associated with a specific program view window and closes when the associated program view window is closed. For more information about manipulating the variable monitors, double-click on Using the data popup and monitor windows You can select the variables or expressions you want to display from a window: o Using the mouse o Using the mouse and the Monitor action window o Using the keyboard. You must select an expression with: o A valid operand type o A valid operator o A valid typecasting operation Menu Bar Summary Edit Copy to the clipboard and paste to the clipboard. Options Modify the style of monitoring and the presentation of variables and expressions. Help Provides you with online help information that compliments the online help you can get when you press F1 or select a Help push button. ═══ 15.1. Options Menu ═══ Select choices from the Options menu to change the representation of a variable or expression, delete a variable or expression from the Private Monitor window, control the updating of the displayed contents, display context, and change the font for the text displayed in this window. Menu Summary Fonts Select the font you want to use for the text displayed in the Private Monitor window. Representation Display the contents of a monitored variable or expression in a different representation. Select all Select all expressions. Deselect all Deselects all expressions. Delete all Delete all the expressions. Delete Delete a selected data item that is being monitored. Enable Displays the contents of a variable or expression as it is updated. Disable Prevent the displayed contents of a variable or expression from being updated. Show context Display the contextual information for a variable or expression being monitored. Hide context Prevent the contextual information for a monitored variable or expression from being displayed. ═══ 16. Data Popup Window ═══ The Data Popup window displays the variable or expression you select for monitoring. It is associated with a specific program view window and closes when the associated window is closed. For more information about manipulating the variable monitors, double-click on Using the data popup and monitor windows You can select the variables or expressions you want to display: o Using the mouse o Using the mouse and the Monitor action window o Using the keyboard. You must select an expression with: o A valid operand type o A valid operator o A valid typecasting operation Menu Bar Summary Edit Copy to the clipboard and paste to the clipboard. Options Transfer a variable to the Private Monitor or the Program Monitor window, select the length of time a variable is monitored, and control how the contents of the variable are displayed. Help Provides you with online help information that compliments the online help you can get when you press F1 or select a Help push button. ═══ 16.1. Edit Menu ═══ Select choices from the Edit menu to copy and place selected items into the clipboard and locate the next line to be executed. Menu Bar Summary Copy Copy text into the clipboard. Paste Places the contents of the clipboard at the current cursor position. Where Open a program view containing the next line to be executed. ═══ 16.2. Options Menu ═══ Select choices from the Options menu to control how the contents of the monitored variable are displayed, the updating of the displayed contents, the length of time that the Data Popup window remains open, and the window to which you can transfer the variable. Menu Summary Fonts Choose the font for the text displayed in the Data Popup window. Representation Change the representation of the displayed contents. Enabled Control the updating of the displayed contents. Show Context Display the contextual information for a variable. Duration Select when the Data Popup window is dismissed. Transfer to Transfer the variable to the Program Monitor window or the Private Monitor window. ═══ 16.2.1. Enabled Choice ═══ Select the Enabled choice to update the displayed value of the variables or expressions you are monitoring as the state of the program changes. The Enabled choice is selected when √ is displayed. To disable the variable, select the Enabled menu choice again, to remove √. ═══ 16.2.2. Enable Choice ═══ Select the Enable choice to have the displayed contents of a variable or expression updated as the state of the program changes. ═══ 16.2.3. Disable Choice ═══ Select the Disable choice to prevent the displayed contents of a variable or expression from being updated as the state of the program changes. ═══ 16.2.4. Duration Choice ═══ Select the Duration choice to set the conditions under which the Data Popup window is dismissed. Menu Summary Step/run The monitor window closes when the next step command or Run is executed. New source The monitor window closes when a new object file is entered. Permanent The monitor window stays open for the remainder of the debugging session. ═══ 16.2.5. Step/Run Choice ═══ Select the Step/run choice to close the Data Popup window the next time a step command or Run is executed. ═══ 16.2.6. New Source Choice ═══ Select the New source choice to close the Data Popup window when the current line moves to a different part of the program. ═══ 16.2.7. Permanent Choice ═══ Select the Permanent choice to cause the Data Popup window to remain open for the remainder of the debugging session. ═══ 16.2.8. Transfer to Choice ═══ Select the Transfer choice to move the variable or expression you are monitoring to the Private Monitor or Program Monitor window. Any variable or expression can be transferred to either the Private Monitor window or to the Program Monitor window. It does not matter whether the variable or expression is used throughout the program. The Private Monitor window, however, is a secondary window to the program view window for which it was opened. It closes when its associated program view window closes. You should, therefore, monitor local variables in the Private Monitor window, and monitor global variables in the Program Monitor window. Menu Summary Private monitor Move the variable or expression you are monitoring to the Private Monitor window. Program monitor Move the variable or expression you are monitoring to the Program Monitor window. ═══ 16.2.9. Private Monitor Choice ═══ Select the Private monitor choice to move the variable or expression you are monitoring to the Private Monitor window. ═══ 16.2.10. Program Monitor Choice ═══ Select the Program monitor choice to move the variable or expression you are monitoring to the Program Monitor window. ═══ 16.2.11. Data Manipulation Icons ═══ You can select any of the following icons from any monitor window (Program, Private, Data Popup, or Local Variables) to manipulate the data parts of variables: Expands the contracted parts of an array. Expands the contracted parts of a structure. Expands the contracted parts of a class. Contracts the parts of an array, structure or class that has been expanded. Displays the object referenced by a pointer in a new monitor. The four windows to monitor variables and expressions are: o Program Monitor o Private Monitor o Data Popup o Local Variables Monitor ═══ 16.2.12. Show Context Choice ═══ Select the Show context choice to display contextual information for the variables you are monitoring. The following information is displayed: o Source o File o Line o Thread. The Show context choice is selected when √ is displayed. To hide the contextual information, select the Show context choice again to remove √. ═══ 16.2.13. Show Context Choice ═══ Select the Show context choice to display the contextual information for the variable you are monitoring. The following information is displayed: o Source o File o Line o Thread. ═══ 16.2.14. Hide Context Choice ═══ Select the Hide context choice to hide the contextual information for the variable you are monitoring. ═══ ═══ Trademark of IBM ═══ ═══ There are two wait states in the debugger. When the debugger is busy doing something, it displays a clock icon. This icon will disappear when the wait is over (for example, loading a program into the debugger). When your program is running, the debugger displays a clock icon with a rectangle behind it. This may mean that your program is waiting for input. If so, select your application window (if necessary) and provide it with the input it needs.