The following discussion assumes that the current Debug mode is CM (prompt is: %cmdebug > ).
When a CM breakpoint is set at a CM address of a segment that
has been translated, Debug actually sets two breakpoints
simultaneously:
A CM breakpoint at the specified CM address in the emulated
object code, in case the code runs emulated.
An NM breakpoint at CMTONMNODE (CM address), that is, at the closest
corresponding previous node in the NM translated code.
For example, with the following command, the two breakpoints marked
as [1] are set simultaneously:
%cmdebug > B 12.4
Original CM Translated
Object Code Object Code
CM Instructions NM Instructions
Seg.Off Sid.Off
+-------------+ +-------------+
%12.0 N | PROC+%0 | $1c.34b0 N | PROC+%0 |
%12.1 | PROC+%1 | $1c.34b4 | |
%12.2 N | PROC+%2 | $1c.34b8 | |
%12.3 | PROC+%3 | $1c.34bc | |
%12.4 [1] | PROC+%4 | $1c.34c0 [1] N | PROC+%2 |
%12.5 | PROC+%5 | $1c.34c4 | |
%12.7 N | PROC+%6 | $1c.34c8 | |
%12.10 | PROC+%7 | $1c.34cc | |
%12.11 [2] | PROC+%10 | $1c.34d0 | |
%12.12 | PROC+%11 | $1c.34d4 [2] N | PROC+%6 |
%12.13 [3] | PROC+%12 | $1c.34d8 | |
%12.14 N | PROC+%13 | $1c.34dc | |
%12.15 | PROC+%14 | $1c.34e0 | |
%12.16 | PROC+%15 | $1c.34e4 N | PROC+%13 |
+-------------+ +-------------+
|
Note that multiple CM address breakpoints may map to the same NM previous
node breakpoint. For example:
brkpt # 2 maps to NM $1c.34d4
brkpt # 3 maps to NM $1c.34d4 also
Only one NM breakpoint is needed at $1c.34d4.