Inspect Manual
Using Inspect With Accelerated Programs on TNS/R
Systems
Inspect Manual—429164-006
16-11
Data Breakpoints
main-flag would have changed in line #13970. The actual place where the memory
access occurred is somewhere between the reported (approximate) location, line
#13970, and the next exact point (note that line #13980 is deleted, so the next exact
point is line #13990).
Therefore, in this case the actual memory access occurred somewhere during
execution of lines #13970 or #13980. Looking at the source, it becomes obvious that
the actual memory access of main-flag occurred on line #13980.
The following illustrate a number of anomalies that can occur when the variable that
triggers a data breakpoint is accessed again during the four cycle delay.
This pseudocode illustrates several of these anomalies:
Data breakpoints
A breakpoint is set on the data item X prior to reaching line #110. When the
program reaches #110, the data breakpoint cycle will be triggered. When the
program stops four cycles later, the current location might be line #130 with a
report that the data breakpoint took place at line #110. Examining X might show 2
or 3 rather than the 1 stored at line #110.
Code breakpoints and data breakpoints
If a code breakpoint is at the same location that accesses memory on which a data
breakpoint is set, the code breakpoint is reported first.
Using the same pseudocode as before and the same data breakpoint on X,
consider the results of putting a breakpoint at line #120. When the program
reaches line #110 the data breakpoint cycle will start; however, it will not complete
before the code breakpoint at line #120 is encountered. This will give the
appearance that the data breakpoint did not occur even though an examination of
the data shows the value has been stored. Attempting to STEP or RESUME from
this point will release the data breakpoint cycle and the data breakpoint will
eventually be reported.
Stepping
Using the same pseudocode shown above, a data breakpoint is set on X prior to
line #110. Stepping a line at a time starting at #110 might not report that
breakpoint occurred at #110 until you reach line #120 or #130.
Note. The anomalies discussed below are unlikely to occur unless simple assignment
statements are used in succession.
#110 X :=1
#120 X :=2
#130 X :=3