Debug Manual

Table Of Contents
Debug Commands
Debug Manual421921-003
4-26
Set Conditional Memory-Access Breakpoint
and control is passed to Debug in the normal way. If the triggering code is
privileged but the breakpoint was not, the process continues to run until it exits to
unprivileged code. At that point, Debug is entered and evaluates the condition. The
condition might be different at that time, if the condition variable was modified by
the code executed in the meantime. (This issue is not a concern if the condition
variable is the same as the location being watched for the breakpoint or if it lies in
the same memory page.)
A read-access memory-access breakpoint will not occur in an accelerated program
if the Accelerator has optimized the read from memory. This occurs when the
Accelerator keeps the value in a register.
If a global memory access breakpoint, to break on write access, is planted in priv
mode, and a code breakpoint is then planted at the same address as the memory
access breakpoint, trying to install (write) the code breakpoint will trigger the
memory access breakpoint that was set previously. Since a priv Memory Access
Breakpoint is taken immediately, this causes the program to drop into Lobug seen
as halt %6005. A privileged user can resume out of Lobug.
Examples
215,01,00012-BM L2,W
215,01,00012-BM Q (2.1000)<<1,R W
215,01,00012-BM UC.1, L+3, W
215,01,00012-BM UL.3, 4+23, R
Set Conditional Memory-Access Breakpoint
The BM command can set a conditional memory-access breakpoint. A conditional
memory-access breakpoint causes the process to enter the debug state when both the
breakpoint location is accessed in the specified manner and a specified variable
matches a predetermined condition. The conditional form of the BM command is:
address
is the address where the breakpoint is to occur. For more information, see Address
Syntax on page 3-12.
BM address , access
{, {test-address | register }[& mask] op constant[, ALL ]}
{ [, ALL ] {test-address | register } [& mask]op constant}