Debug Manual
Table Of Contents
- What’s New in This Manual
- About This Manual
- 1 Introduction
- Execution Modes on TNS/R Systems
- What User Access Is Required for Debugging
- How to Make a Process Enter Debug
- How to Select Debug as the Debugger
- Why a Process Enters Debug
- How to Determine Process State on a Trap or Signal
- Ending a Debug Session
- What Appears in the Debug Header Message
- How to Use Debug
- How Debug Breakpoints Work
- 2 Using Debug on TNS/R Processors
- 3 Debug Command Overview
- 4 Debug Commands
- Command Summary
- A Command
- AMAP Command
- B Command
- BASE Command
- BM Command
- C Command
- CM Command
- D Command
- DJ Command
- DN Command
- EX[IT] Command
- F[ILES] Command
- FC Command
- FN Command
- FNL Command
- FREEZE Command
- HALT Command
- H[ELP] Command
- I Command
- IH Command (TNS/R Native and OSS Processes)
- INSPECT Command
- LMAP Command
- M Command
- MH Command (TNS/R Native and OSS Processes)
- P[AUSE] Command
- PMAP Command (Accelerated Programs)
- PRV Command
- R Command
- S[TOP] Command
- T Command
- V Command
- VQ Command
- VQA Command
- = Command
- ? Command
- A Error Messages
- B ASCII Character Set
- C Command Syntax Summary
- Register Syntax
- Expression Syntax
- Address Syntax
- A Command
- AMAP Command
- B Command
- BASE Command
- BM Command
- C Command
- CM Command
- D Command
- DJ Command
- DN Command
- EX[IT] Command
- F[ILES] Command
- FC Command
- FN Command
- FNL Command
- FREEZE Command
- HALT Command
- H[ELP] Command
- I Command
- IH Command
- INSPECT Command
- LMAP Command
- M Command
- MH Command
- Output-Device Syntax
- P[AUSE] Command
- PMAP Command
- PRV Command
- R Command
- S[TOP] Command
- T Command
- V Command
- VQ Command
- VQA Command
- = Command
- ? Command
- D Session Boundaries
- E Correspondence Between Debug and Inspect Commands
- F Sample Debug Sessions
- Glossary
- Index

Debug Commands
Debug Manual—421921-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}