Programming Guide : 16. Debugging Your Application : How Debugging an Application Works : Using the SK_BREAK Key to Stop Code Execution
 
Share this page                  
Using the SK_BREAK Key to Stop Code Execution
OpenROAD Workbench provides a highly productive interactive development environment (IDE). A compelling feature of the product is the ability to make visual changes without modifying source code, immediately followed by testing to see the effect of the visual change. Workbench also boosts productivity through the interactive cycle that lets you make static or dynamic source code changes with a subsequent test run from within the IDE to verify that the changes works as intended.
Unfortunately, it is also possible in this interactive development environment to introduce loops that never terminate. In such situations, to regain control, press the key associated with SK_BREAK. This interrupts the running application by inserting an implicit breakpoint to stop the application. This returns control of the IDE to you, leaving the application in a state ready to execute the next statement. Usually, the break is immediate unless the current 4GL instruction is waiting for a long-running database query, 3GL request, or call system statement to complete. On most keyboards, the SK_BREAK speed key defaults to the Pause/Break key.
If you are using the OpenROAD IDE debugger to debug your application, whether or not you have included any breakpoints in your application code, pressing Pause/Break will immediately halt execution of 4GL statements. When you press this key, the program stops executing and control returns to the debugger or, if you are testing in the IDE outside of the debugger, debugging will automatically start, placing control at the next 4GL source statement in the execution sequence.
OpenROAD's SK_BREAK speed key defaults to the virtual key VK_PAUSE. As previously mentioned, on most keyboards, this is the Pause/Break key, but some keyboards use a different key combination, for example, Fn-Insert. If you want SK_BREAK to use another key, you must map the assignment of SK_BREAK to the virtual key that represents the different key. For more information, see the appendix "Speed Key Mapping" in the Workbench User Guide.
For more information about using SK_BREAK during runtime, see Using the SK_BREAK Key to Output the Currently Executing 4GL Stack (see Using the SK_BREAK Key to Output the Currently Executing 4GL Stack.