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

Introduction
Debug Manual—421921-003
1-3
Invoking Debug From TACL for a Process
PROCESS_LAUNCH_ Procedure
You can run the debugger (Inspect or Debug) on a new process by passing the debug
option bits to the PROCESS_LAUNCH_ procedure as a field in a structure, as
illustrated in this example:
<initialize structure PARMS>
. .
PARMS.NAME_OPTIONS := 2; ! Requests a system-assigned name.
PARMS.DEBUG_OPTIONS.<12> := 1; ! Debug at first instruction.
PARMS.DEBUG_OPTIONS.<14> := 1; ! Use debugger set in next bit.
PARMS.DEBUG_OPTIONS.<15> := 0; ! Selects Debug as the debugger.
ERROR := PROCESS_LAUNCH_ ( PARMS, ERROR_DETAIL );
Invoking Debug From TACL for a Process
Run a program that you want to debug through the command interpreter, in this case
the HP Tandem Advanced Command Language (TACL). While the program is
executing, press the BREAK key to wake up the TACL process; the program continues
executing. TACL returns to the command-input mode. At this point, either from the
original terminal or at another terminal, find the processor number and process
identification number (PIN) of the process (the executing program you want to debug)
by using the TACL command STATUS:
STATUS *, TERM ! from the same terminal
STATUS *, USER ! from another terminal
Then enter this command indicating the process you want to debug:
DEBUG | DEBUGNOW
specifies that the Debug facility is to start debugging the selected process. If you
do not specify a process, Debug starts debugging the process most recently
started by the TACL process if that process still exists.
DEBUG causes the specified process to enter the debug state at the next
instruction executing in unprivileged state. If the process is executing in privileged
state, it will enter debug when it next returns to unprivileged execution.
DEBUGNOW causes the specified process to enter the debug state at the next
instruction, which might be in the privileged state. DEBUGNOW can be invoked
only by the local super ID (255, 255).
Standard security requirements are applied to the user of DEBUG. A process
executing an ordinary (unlicensed) program can be put into debug state by the
user that created it, by the supervisor of that group, or by the super ID. The user
placing the process into debug must be at least as local as the one creating the
process. A process running from a program that requires licensing (one that
{ DEBUG | DEBUGNOW } [ cpu,pin | process-name ]
[,TERM [[\sys-name.]$terminal-name .[#qualifier ]]]