Inspect Manual
Using Inspect With Accelerated Programs on TNS/R
Systems
Inspect Manual—429164-006
16-5
Debugging Boundaries
Data display restrictions
The accelerator improves program performance by keeping the values of
frequently used variables in TNS/R system registers. The debugger does not have
information indicating when variables are stored in these registers. Such
optimizations may therefore result in displayed memory values being out of date,
because a more recent copy is stored in memory.
Debugging Boundaries
Inspect provides special support to aid in debugging the optimized code generated by
the accelerator. Most source-level debugging capabilities have been preserved and
boundaries for debugging have been clearly defined.
Register-Exact Points
Register-exact points are locations in an accelerated program at which the values in
both memory and the TNS register stack are the same as they would be if the program
were executing on a TNS processor. No optimizations cross register-exact points.
Complex statements might contain several such points: at each function call,
privileged instruction, and embedded assignment. Register-exact points are a subset
of memory-exact points.
By default, the accelerator defines register-exact points only where necessary; for
example, following procedure calls. Register-exact points are the only points at which
an accelerated program makes transitions to and from executing TNS instructions.
Memory-Exact Point
Memory-exact points are locations in an accelerated program at which the values in
memory (but not necessarily in the register stack) are the same as they would be if the
program were running on a TNS processor. Modifying memory at these points might
not achieve the desired results because memory might have already been loaded in
registers. Most source statement boundaries are memory-exact points. Note that
register-exact points are a subset of memory-exact points.
Non-Exact Points
Non-exact points are locations in an accelerated program that are not memory-exact
points. Most code locations in a accelerated program are non-exact points. At non-
exact points, the TNS program state is not consistent, displayed memory may be out of
date, and the reported current location is only approximate. Attempting to modify
memory at a non-exact point may result in the data being overwritten by a subsequent
store operation.
Note. If you are debugging at the TNS machine level, debug programs before
accelerating for the most accurate representation of the TNS machine state.