C and C++ SoftBench User's Guide

Using SoftBench Debugger
Interrupting a Running Program
Chapter 7172
Interrupting a Running Program
When the PC Location is "Running…", your program has control, and you
cannot interact with the debugger. You may want to interrupt your
program so you can regain control of the debugger.
Instances when you might want to interrupt a running program include:
Your program hangs in some internal loop.
Your program did not arrive at breakpoints as planned.
Your program is waiting in an input statement (such as scanf), and
you want to set a breakpoint, or Continue Out after you enter the data.
It appears that something is going very wrong with some internal
state.
In these cases and many more, the PC Location shows "Running…" and
displays a small "clock" animation. You can interact with the program
only under the program's control. SoftBench Debugger queues any
commands (except commands that restart, kill, or unload your program)
until your program returns control to the debugger. Selecting Interrupt
Program
discards any queuedcommands and returns control to SoftBench
Debugger.
If you interrupt your program while it executes code that was compiled
with the debug options on, you can continue working just as if you had
encountered a breakpoint at that location. A PC arrow appears in the
Annotation Margin and the source for the code is displayed. At this point
the PC Location shows a valid location and you can enter debugger
commands.
Interrupting in System or Non-debuggable Routines
If you interrupt the program while it executes some system-supplied
routine (kernel code), or any other routine that was compiled without
debug options on, the PC Location may consist of a "virtual" address.
SoftBench Debugger clears the Editable Source Area to indicate that no
source is available. You cannot examine local variables or step through
statements. You can only step by assembly instructions, and examine
other procedures on the call stack.
You can run the nondebuggable routine until it reaches the point where