Debug Manual Abstract This manual describes the Guardian debug facility (Debug) on HP NonStop™ systems. Product Version G07 Supported Release Version Updates (RVUs) This publication supports G06.06 and all subsequent G-series RVUs until otherwise indicated by its replacement publication.
Document History Part Number Product Version Published 132505 G02 May 1997 141852 G06.
Debug Manual Glossary Index What’s New in This Manual xi Manual Information xi New and Changed Information About This Manual xiii Who Should Use This Manual How to Use This Manual xiv Related Reading xv Notation Conventions xvi Examples Figures xi xiii 1.
1. Introduction (continued) Contents 1. Introduction (continued) Example of a Memory-Access Breakpoint 1-15 Debug/Program Execution Environment 1-16 2.
4. Debug Commands Contents 4.
4. Debug Commands (continued) Contents 4. Debug Commands (continued) PMAP Command (Accelerated Programs) PRV Command 4-65 R Command 4-66 S[TOP] Command 4-67 T Command 4-68 V Command 4-71 VQ Command 4-72 VQA Command 4-73 = Command 4-73 ? Command 4-75 4-64 A.
A. Error Messages (continued) Contents A.
A. Error Messages (continued) Contents A.
B. ASCII Character Set Contents B. ASCII Character Set C.
C. Command Syntax Summary (continued) Contents C. Command Syntax Summary (continued) M Command C-9 Modify Variables C-9 Modify Register Contents MH Command C-9 Output-Device Syntax C-9 P[AUSE] Command C-10 PMAP Command C-10 PRV Command C-10 R Command C-10 S[TOP] Command C-11 T Command C-11 V Command C-11 VQ Command C-11 VQA Command C-11 = Command C-12 ? Command C-12 C-9 D. Session Boundaries E. Correspondence Between Debug and Inspect Commands F.
Figures Contents Figures Figure 1-1. Figure 1-2. Figure 1-3. Figure 1-4. Figure 2-1. Figure 2-2. Figure 2-3. Figure D-1. Environment Register (TNS Environment) 1-9 Debugging a Remote Process 1-14 Debug/User Process Diagram 1-16 Debug Displaying and Accepting Data 1-17 Diagram of TNS/R Memory 2-2 How TNS Breakpoints Can Correspond to RISC Breakpoints 2-6 How RISC Breakpoints Correspond to TNS Instructions 2-7 Scope of Debug Commands’ Effects D-2 Tables Table 1-1. Table 2-1. Table 2-2. Table 3-1.
Contents Debug Manual—421921-003 x
What’s New in This Manual Manual Information Debug Manual Abstract This manual describes the Guardian debug facility (Debug) on HP NonStop™ systems. Product Version G07 Supported Release Version Updates (RVUs) This publication supports G06.06 and all subsequent G-series RVUs until otherwise indicated by its replacement publication. Part Number Published 421921-003 January 2006 Document History Part Number Product Version Published 132505 G02 May 1997 141852 G06.
Changes in the G06.21 Manual What’s New in This Manual Changes in the G06.
About This Manual This manual describes the features and use of the Guardian debug facility, Debug. This version of Debug runs on HP NonStop Series/RISC (TNS/R) processors. TNS/R processors are based on reduced instruction-set computing (RISC) technology. This version of the HP NonStop operating system also supports execution of programs written for the HP NonStop Series (TNS) processor environment, although TNS processors are no longer supported.
How to Use This Manual About This Manual How to Use This Manual The organization of this manual: Section Description Section 1, Introduction Introduces and discusses how to make your process enter Debug, what happens once your process enters Debug, and how Debug breakpoints work. Section 2, Using Debug on TNS/R Processors Describes Debug use on TNS/R processors.
Related Reading About This Manual Related Reading While using this manual, you might need to refer to some of the manuals described below. The following paragraphs provide a complete list of the manuals.
Notation Conventions About This Manual • Accelerator Manual provides information regarding programming and running applications on TNS/R processors. These manuals provide more information regarding specific source languages: • • • • • • C/C++ Programmer's Guide COBOL Manual for TNS and TNS/R Programs TAL Programmer’s Guide TAL Reference Manual pTAL Conversion Guide pTAL Reference Manual Notation Conventions Hypertext Links Blue underline is used to indicate a hypertext link within text.
General Syntax Notation About This Manual [ ] Brackets. Brackets enclose optional syntax items. For example: TERM [\system-name.]$terminal-name INT[ERRUPTS] A group of items enclosed in brackets is a list from which you can choose one item or none. The items in the list can be arranged either vertically, with aligned brackets on each side of the list, or horizontally, enclosed in a pair of brackets and separated by vertical lines. For example: FC [ num ] [ -num ] [ text ] K [ X | D ] address { } Braces.
Notation for Messages About This Manual Item Spacing. Spaces shown between items are required unless one of the items is a punctuation symbol such as a parenthesis or a comma. For example: CALL STEPMOM ( process-id ) ; If there is no space between two items, spaces are not permitted. In this example, no spaces are permitted between the period and any other items: $process-name.#su-name Line Spacing.
Notation for Messages About This Manual Bold Text. Bold text in an example indicates user input typed at the terminal. For example: ENTER RUN CODE ?123 CODE RECEIVED: 123.00 The user must press the Return key after typing the input. Nonitalic text. Nonitalic letters, numbers, and punctuation indicate text that is displayed or returned exactly as shown. For example: Backup Up. lowercase italic letters. Lowercase italic letters indicate variable items whose values are displayed or returned.
Notation for Management Programming Interfaces About This Manual % Percent Sign. A percent sign precedes a number that is not in decimal notation. The % notation precedes an octal number. The %B notation precedes a binary number. The %H notation precedes a hexadecimal number.
1 Introduction The Guardian debug facility (Debug) provides a tool for interactively debugging a running process. Using Debug, you can designate certain program code or memory locations as breakpoints. When these breakpoints are executed or accessed in the specified way (read, write, or change), your process enters the debug state.
What User Access Is Required for Debugging Introduction A TNS/R native process is a process that is initiated by executing a native program, which contains native code. A TNS process is a process that is initiated by executing a TNS or accelerated program, which contains TNS or accelerated object code. Debug can be used with either type of process and with any of these execution modes.
Invoking Debug From TACL for a Process Introduction 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: . . PARMS.NAME_OPTIONS := 2; ! PARMS.DEBUG_OPTIONS.<12> := 1; ! PARMS.DEBUG_OPTIONS.<14> := 1; ! PARMS.DEBUG_OPTIONS.<15> := 0; ! ERROR := PROCESS_LAUNCH_ ( PARMS, Requests a system-assigned name.
Calling Debug From a Process Introduction contains CALLABLE or PRIV procedures) can be put into debug state only by the local super ID. If a process is created privileged, it will never run unprivileged, so DEBUG would be ineffective; therefore, DEBUG is rejected for an initially privileged process. Use DEBUGNOW instead. cpu,pin is the processor in which the program to be debugged is executing and its process identification number. process-name is the process name of the program to be debugged.
Entering a Breakpoint in a Process Introduction DEBUG Procedure The DEBUG procedure causes the current process to enter the debug state at the call to Debug. Example: IF < THEN CALL DEBUG; PROCESS_DEBUG_ Procedure The PROCESS_DEBUG_ procedure can cause either the current process or the called process to enter the debug state at the call.
Running Debug From the OSS Shell Introduction setting the breakpoint, resume execution. Debug prompts when the code location is executed or the memory location is accessed: Example of a code breakpoint: 106,06,00125-B 0x700003B0 N: 0x700003B0 106,06,00125-R ! Set RISC breakpoint at 0x700003B0 INS: ADDIU sp,sp,-24 ! Resume execution. DEBUG P=%700003B0, E=%000207 UC.%00-BREAKPOINT- ($PC=0x700003B0) 106,06,00125! Awaiting input in debug state.
Why a Process Enters Debug Introduction 3. When linking the program object file, specify the nld or Binder command SET INSPECT OFF. Note that the command SET SAVEABEND ON also sets INSPECT ON. You might want to ensure that the command SET SAVEABEND OFF is also specified. If the program object file has already been created, you can accomplish the same thing by specifying the nld or Binder commands CHANGE INSPECT OFF and CHANGE SAVEABEND OFF for the file.
How to Determine Process State on a Trap or Signal Introduction Trap Number Trap Condition (page 2 of 2) 4 Process loop-timer timeout 5 D-series limit does not fit into a C-series interface 8 (Under very unusual circumstances, a signal is delivered to a TNS process and appears as a trap 8.) 11 Memory manager read error 12 No memory available 13 Uncorrectable memory error. Note that this error should not occur because the millicode will halt the processor.
How to Determine Process State on a Trap or Signal Introduction Debug Header Message on page 1-10. For more information about space identifiers, see the appropriate server description manual for the processor that you are using. Note. You cannot resume a process that entered Debug either because it received a nondeferrable signal or because a synchronous trap occurred. A signal is nondeferrable if it was generated by the system because the process cannot continue executing the instruction stream.
Ending a Debug Session Introduction Ending a Debug Session Two commands are provided for ending a Debug session: the STOP command and the EXIT command. • • The STOP command stops execution of the current process and deletes it. The EXIT command clears all breakpoints and resumes execution of the current process. What Appears in the Debug Header Message When a process enters Debug, regardless of the reason, Debug opens the home terminal.
Header Message Format Introduction The elements reported in the Debug header message are explained as follows: P-register is the 16-bit octal current value (P register) of the program counter for TNS or accelerated mode. Typically, this is where a breakpoint was specified. 32-bitaddress is the 32-bit hexadecimal current value (PC register) of the program counter for native mode. Typically, this is where a breakpoint was specified.
Header Message Information Introduction sys,cpu,pin [cmd] is the Debug prompt. The value of sys is the node (system) number in decimal (assigned during SYSGEN). The value of cpu is the number, in decimal, of the processor module where the process is executing. The value of pin is the five-digit process identification number, in decimal, of the process. The value of cmd is a Debug command. If the Debug command appears at the prompt, you can press RETURN to continue executing the command.
How to Use Debug Introduction - TRAP #nn The process encountered a trap, number nn, and no trap handler was specified for the process. How to Use Debug Once your process enters Debug, use the commands in Section 4, Debug Commands, to find out what is happening. You use Debug interactively by entering the Debug commands at the process’ home terminal.
Necessary Compiler Listing Introduction Figure 1-2. Debugging a Remote Process Home Terminal \SYSA \SYSB $HT $PRO1 VST0102.vsd Example: RUND \sysb.$vol3.subv4.oprog / NAME $pro1 / To debug remotely, you use the same commands discussed under How to Make a Process Enter Debug on page 1-2.
Introduction Example of a Memory-Access Breakpoint system replaces the instruction in the specified location with a breakpoint instruction and stores the replaced instruction in a breakpoint table. No instructions are moved except when breakpoints are set and cleared. Example of a Memory-Access Breakpoint In addition to code breakpoints, the operating system allows memory-access breakpoints (one for each process).
Debug/Program Execution Environment Introduction Debug/Program Execution Environment Debug executes in a private environment with its own stack; it does not use the environment of the procedure from which it was invoked. Debug does not use any processor registers of the process being debugged, so all registers are available to the user program. Debug runs as part of the original user process executing out of the system code portion of the process, as illustrated in Figure 1-3.
Debug/Program Execution Environment Introduction Figure 1-4. Debug Displaying and Accepting Data 1 Debug DEBUG ... -BREAKPOINT106,06,00125 - System Code User Data 2 Debug System Code 106,06,00125-D 100 User Data 100 3 Debug 000100: %000025 106,06,00125- System Code User Data 25 100 VST0104.
Debug/Program Execution Environment Introduction Debug Manual—421921-003 1- 18
2 Using Debug on TNS/R Processors When debugging on HP NonStop Series/RISC (TNS/R) processors in native mode, Debug provides information about the RISC state of the process so that you can debug at the RISC instruction level when necessary. Program execution in native mode consists entirely of RISC instructions and TNS/R register use. When debugging programs in TNS or accelerated mode, you do not need to know the TNS/R architecture, except for some low-level debugging.
TNS/R Memory Addressing Using Debug on TNS/R Processors Figure 2-1.
Execution Options Using Debug on TNS/R Processors Execution Options Three modes of execution are possible on a TNS/R system: TNS mode, accelerated mode, and native mode. Much of the code in software products supplied by HP for TNS/R systems has been produced by TNS/R native compilers. Users can also use native compilers to produce their own native TNS/R code. For more information, see the C/C++ Programmer's Guide and the pTAL Programmer’s Guide.
Running TNS Program Files Using Debug on TNS/R Processors • • • • In native mode, local variables are sometimes cached in registers. Attempting to modify a local variable or use it for a purpose such as setting a memory-access breakpoint can have unexpected results. In highly optimized native object code, parameter values are sometimes cached in registers, making their exact location unpredictable. The PMAP command is not valid in native mode.
Types of Processes Using Debug on TNS/R Processors Portions executed in TNS execution mode result both from explicit instructions to the Accelerator not to optimize portions of code and from TNS instructions that the Accelerator cannot optimize. Portions executed in accelerated execution mode consist of statements and procedures that were optimized by the Accelerator. Types of Processes A process that is initiated by executing a native program is called a TNS/R native process.
Setting TNS Breakpoints Using Debug on TNS/R Processors instruction would be approximate. Also, multiple RISC breakpoints could map to a single TNS instruction. Breakpoint correspondence is illustrated in the following set of figures. Setting TNS Breakpoints Setting any allowable TNS breakpoint causes a corresponding breakpoint in the RISC code. You set a TNS breakpoint by using a B command that includes a reference to a TNS address (for example, a UC address).
Setting RISC Breakpoints Using Debug on TNS/R Processors Setting RISC Breakpoints A RISC breakpoint is allowed on any valid RISC address. A RISC breakpoint in accelerated code does not cause a corresponding TNS breakpoint to be set even though a corresponding TNS instruction might exist. You set a RISC breakpoint by using a B command that includes the 32-bit address mode.
Considerations for Memory-Access Breakpoints Using Debug on TNS/R Processors • • • • Setting a RISC breakpoint at any valid RISC address is allowed; however, only at register-exact points are both TNS/R memory and registers consistent with the TNS state. Setting a RISC breakpoint does not cause a TNS breakpoint even if there happens to be a corresponding TNS instruction. If you set a RISC breakpoint, it is assumed that you want to debug in the RISC state.
Considerations for Memory-Access Breakpoints Using Debug on TNS/R Processors TNS Example This code sequence will be used to show the results of the interaction between memory-access breakpoints and code breakpoints, in TNS mode: 050,03,00009-i %74,4 %000074: LADR L+004 LLS 01 STOR L+035 LDI +000 The following example shows the program hitting a memory-access breakpoint. The displayed P address is one instruction address past the address of the instruction that caused the memory-access breakpoint.
TNS/R Registers Using Debug on TNS/R Processors that caused the memory-access breakpoint. The memory-access breakpoint was triggered by the store word (SW) instruction at 0x7000043C.
TNS/R Registers Using Debug on TNS/R Processors Alias names for registers $01 through $31 and $F00 through $F09 appear in this list: Register Alias Register Alias $01 $AT $16 $S0 $02 $V0 $17 $S1 $03 $V1 $18 $S2 $04 $A0 $19 $S3 $05 $A1 $20 $S4 $06 $A2 $21 $S5 $07 $A3 $22 $S6 $08 $T0 $23 $S7 $09 $T1 $24 $T8 $10 $T2 $25 $T9 $11 $T3 $26 $K0 $12 $T4 $27 $K1 $13 $T5 $28 $GP $14 $T6 $29 $SP $15 $T7 $30 $S8 or $FP $31 $RA $00 $F00 $F0 $F05 $F5
TNS and TNS/R Register Correspondence Using Debug on TNS/R Processors TNS and TNS/R Register Correspondence TNS/R processors maintain many of the TNS environment hardware and program registers. The location and contents of TNS environment registers might vary depending on the registers involved and the state of the process when Debug was entered. Table 2-1 lists TNS environment registers and corresponding TNS/R implementation. Table 2-1.
TNS and TNS/R Register Correspondence Using Debug on TNS/R Processors Table 2-2. TNS/R Register Use Summary (page 1 of 2) Register Alias $00 Native Execution Mode TNS Execution Mode Accelerated Execution Mode Zero constant Zero constant Zero constant $01 $AT Assembler temporary Temporary Temporary $02, $03 $V0, $V1 Function values Temporary Temporary $04..$07 $A0..$A3 Arguments Temporary Temporary $08..$10 $T0..
TNS and TNS/R Register Correspondence Using Debug on TNS/R Processors Table 2-2. TNS/R Register Use Summary (page 2 of 2) Register Alias Native Execution Mode $23 $S7 Saved variables PX. Extended address in user space of next TNS instruction half word in current TNS code segment R7 $24 $T8 Temporary UC_CSeg. User code segment as an extended 32-bit address UC_Cseg. User code segment as an extended 32-bit address $25 $T9 Temporary ENV. Environment register in stack-marker format ENV.
TNS and TNS/R Register Correspondence Using Debug on TNS/R Processors The bits and the decoding for the $FCR31 register are as follows: Bit Meaning <7> FS: 0 or 1 When the FS bit is set, denormalized results are flushed to 0. <8> C: 0 or 1 The C bit is set to 1 if the condition is true, and the bit is cleared to 0 if the condition is false. <14:19>: CAUSE The CAUSE bits reflect the results of the most recently executed instruction.
Using Debug on TNS/R Processors TNS and TNS/R Register Correspondence Debug Manual—421921-003 2- 16
3 Debug Command Overview This section introduces all of the Debug commands (by functional groups), explains the structure of the commands, and shows the primary relationships between the commands.
Breakpoint Commands Debug Command Overview Table 3-1. Breakpoint Commands Command Meaning Function Description B Break Set unconditional code breakpoint The process enters the debug state when the breakpoint location is executed. Set conditional code breakpoint Depending on the value of a specified variable, the process enters the debug state. The variable is checked when the breakpoint location is executed.
Display Commands Debug Command Overview Display Commands The display commands are listed and described in Table 3-2 on page 3-3. In addition to these commands, the B command (a code breakpoint command) also displays all code and memory-access breakpoints for the process being debugged. Table 3-2. Display Commands (page 1 of 2) Command Meaning Function Description A ASCII Display data in ASCII Displays the contents of specified variables in ASCII representation.
Modify Commands Debug Command Overview Table 3-2. Display Commands (page 2 of 2) Command Meaning Function Description PMAP Print code map Display corresponding blocks of TNS and RISC code Displays the contents of specified memory as TNS code and corresponding RISC code for accelerated programs. T Trace Trace stack markers Displays key attributes of the process’s stack frames (procedure activations), up to ten at a time.
Environment Commands Debug Command Overview Environment Commands The environment commands are listed in Table 3-4. Table 3-4. Debug Environment Commands Command Meaning Function Description BASE Numeric base Set numeric base Sets numeric base for input to Debug, output displays by Debug, or both. VQ Vector Q segment Change selectable segment Changes the selectable segment currently viewed by the debugger.
Miscellaneous Commands Debug Command Overview Table 3-5. Privileged Commands (page 2 of 2) Command Meaning Description PRV Privileged Enables or disables the use of privileged commands. V Vector Allows access to other address spaces. VQA Vector Sets the current selectable data segment to the specified absolute segment number. Miscellaneous Commands Miscellaneous Debug commands are listed in Table 3-6. Table 3-6.
Capitalization in Commands Debug Command Overview Capitalization in Commands Note that uppercase and lowercase letters are interchangeable in Debug commands. The syntax shows keywords in uppercase letters. Default Commands Certain Debug commands have defaults. A default for a command is a variant of the command that is executed when you simply press RETURN at the Debug prompt without actually entering the command. Default commands are valid only when certain conditions exist.
Register Syntax Debug Command Overview Alias names for registers $01 through $31 and $F00 through $F09 appear in the following list.
Expression Syntax Debug Command Overview SP specifies the space identifier. R0 through R7 specify one of the registers in the register stack. RA through RH is an alternative specification for the eight stack registers, where RA is the current top of stack, RB is the next one down, and so forth. Expression Syntax Several Debug commands have address and count parameters that are supplied in the form of an expression. An expression can represent a 16-bit integer, a 32-bit integer, or ASCII characters.
Expression Syntax Debug Command Overview The other prefixes affect the interpretation of number as follows: % represents an octal number; octal is the default numeric base except for the DN command and N address mode. # represents a decimal number. %H |0X represents a hexadecimal number. register represents the contents of one of the processor registers for that process; see Register Syntax on page 3-7. K [ X | D ] address is a value that allows memory-based variables in its calculation.
Expression Syntax Debug Command Overview If a command requires a 16-bit expression, the evaluated expression must be represented in 16 bits. A syntax error occurs if the evaluated expression cannot be represented in 16 bits. If the command allows a 32-bit expression, the evaluated expression is always 32 bits long, with the sign extended into the high-order word.
Address Syntax Debug Command Overview Address Syntax Many Debug commands require you to specify an address. The syntax for an address is as follows: [ 32-bit-address ] | [ TNS-style ] | [ Q-mode ] ] | [ N-mode 32-bit-address defines the 32-bit address where the code or data is located. TNS-style defines the code or data segment address for TNS users.
Address Syntax Debug Command Overview code segment within the system code space. If you omit segment-num, Debug uses 0. The value of segment-num must be in the range 0 through %37 (octal). UD[,] indicates that the address is in the user data segment. C indicates an address in the current TNS code segment (user code space or user library space). L indicates an L-relative address (procedure parameters or local variables) in the user data segment.
Address Syntax Debug Command Overview N-mode Indicates that the user is in a 32-bit address mode. N Use N mode to indicate addresses in native or accelerated code, RISC stacks, native globals and heap areas, flat segments or the currently in-use selectable segment, or anywhere 32-bit addressing is convenient. In nonprivileged mode, you can specify addresses in user space, 0 through 0x7FFFFFFF.
Address Syntax Debug Command Overview To display the contents of the direct variable DB^COUNTREAD, this display command is entered: 106,01,00012-D 11 ! Display user global location %11 Debug displays the following: 000011: %000310 To display the contents of the pointer variable DB^BUF, this display command is entered: 106,01,00012-D 10 ! Display global location %10 Debug displays the following: 000010: %000116 ! A word address To display the FNUM value parameter of a procedure, the procedure’s map
Address Syntax Debug Command Overview For example, to display (in character form) %20 bytes pointed to by the string pointer SDB^BUF, . SDB^BUF . VARIABLE STRING G+020 INDIRECT this command is entered: 215,00,0003500-A20S,10 000116: .fr. .ed. . . . . . . . . . . . . This converts the string address to a word address and displays %10 words starting at that location ( G[%116] ).
4 Debug Commands This section describes Debug commands. Table 4-1 summarizes all of the available Debug commands. Then the descriptions of each command are written on the subsequent pages. Command Summary Table 4-1 summarizes the Debug commands. Note that some commands are available only to privileged users. These commands are indicated with a check (√ ) in Table 4-1. Table 4-1.
Command Summary Debug Commands Table 4-1.
A Command Debug Commands A Command The A command displays the contents of a process’ variables in ASCII representation. The syntax for this command: A address [ , length ] [, data-display-format ] [ , [ OUT ] output-dev ] address is the address of the first character to be displayed. For more information, see Address Syntax on page 3-12.
A Command Debug Commands Syntax for a device other than a disk: [ node.]{device-name[.qualifier ]} {ldev-number } Syntax for a named process: [ node.]process-name[:seq-no][.qual-1[.qual-2] ] Syntax for an unnamed process: [ node.]$:cpu:pin:seq-no For syntax descriptions of these process and device names, see the Guardian Procedure Calls Reference Manual.
A Command Debug Commands Examples 050,03,00009-a %62/2 %000031: 'ab' 050,03,00009-a %62/2, #40/2 %000031: 'ab' 'cd' 'ef' 'go' 'me' ' d' 'at' 'a.' %000041: '..' '..' '..' '..' '..' '..' '..' '..' %000051: '..' '..' '..' '..' 050,03,00009-a L+3s, #40/2, b %000031:abcdefgome data......................... 050,03,00009-a L3s, #40/2, b2 %000031: 'ab' 'cd' 'ef' 'go' 'me' ' d' 'at' 'a.' %000041: '..' '..' '..' '..' '..' '..' '..' '..' %000051: '..' '..' '..' '..
AMAP Command Debug Commands AMAP Command The AMAP command provides information about a specified address in 32-bit form. This information is displayed when you use the AMAP command: • • KIND, which specifies the address mode (UC, UL, SC, or SL) and the execution mode (TNS, AXCEL, native, or unknown). ATTRIBUTE, which specifies one or more of the following: resident, read only, code, SRL, enter vector, priv to read, priv to write, priv to break, is zero page, and none.
B Command Debug Commands B Command The B command sets code breakpoints and displays code and memory-access breakpoints. The B command has five functions: • • • • • Set Unconditional Code Breakpoint on page 4-7 Set Conditional Code Breakpoint on page 4-11 Set Trace Code Breakpoint on page 4-13 Set Execute Code Breakpoint on page 4-15 Display Breakpoints on page 4-16 Each function is defined by a unique syntax. Each function and its syntax is described in the following pages.
Set Unconditional Code Breakpoint Debug Commands ALL indicates that the breakpoint applies to all processes in the processor executing the code being debugged. The ALL option is allowed only in privileged mode. A global breakpoint (this is, a breakpoint set with the ALL option) is delivered to any process that executes the code location that is breakpointed. A private breakpoint (without the ALL option) is delivered only to the process that created the breakpoint.
Set Unconditional Code Breakpoint Debug Commands Examples 215,01,00012-b 4+16 215,01,00012-b ul.2, 10+42 215,01,00012-b uc.1, 2047 215,01,00012-B 226+30 215,01,00012-B C 226+30 ! Equivalent to the preceding command 248,02,00022-B SL.
Set Unconditional Code Breakpoint Debug Commands 101 102 103 . . 115 116 int getloc(void) { int loc_num, i_val, tm, *row; if (i_val == loc_num) return nextloc (row, loc_num); In a native program, the address of the base of a function or procedure can be determined using the noft utility.
Set Conditional Code Breakpoint Debug Commands For more information about how to use the noft utility, see the nld Manual and the noft Manual. Set Conditional Code Breakpoint The B command can set a conditional code breakpoint. A conditional code breakpoint causes a process to enter the debug state when both the breakpoint location is executed and a specified variable matches a predetermined condition.
Set Conditional Code Breakpoint Debug Commands If you omit mask, Debug uses -1 (0xFFFF for a 16-bit constant or 0xFFFFFFFF for a 32-bit constant). op is a relational operator and must be one of the following: < break if the variable is less than constant. This operator does a signed comparison. > break if the variable is greater than constant. This operator does a signed comparison. = break if the variable is equal to constant. # | <> break if the variable is not equal to constant.
Set Trace Code Breakpoint Debug Commands Examples 106,03,00040-B 100 + 117, L + 14 > 500 106,03,00040-B UC.2, 526, L+3 = 0 106,03,00040-B C, 2I, R4 <> 1 106,03,00040-B UL.1, 325, L+5 > 3 248,00,00045-B N 0x70450F1C, $T2 & 0xF000FFFF < 0x17 ! Break in RISC code if the 32-bit value in $T2 logically ! ANDed with the mask value is less than 0x17.
Set Trace Code Breakpoint Debug Commands locations and the Q-mode syntax is not allowed. If start-address is an N mode address, start-address refers to a 32-bit variable. ? means list. count is an expression indicating the number of 16-bit words to be displayed. The value is stored in 32 bits if a TNS/R register or N-mode start-address is used; otherwise, it is stored in 16 bits.
Set Execute Code Breakpoint Debug Commands • • When you set a breakpoint, Debug displays information describing this breakpoint. For a description of the information displayed, see Display Breakpoints on page 4-16. When debugging accelerated programs, you can set breakpoints in TNS code only on instructions that are register-exact points or memory-exact points.These points are marked in displays by the I and PMAP commands. For more information, see Section 2, Using Debug on TNS/R Processors.
Display Breakpoints Debug Commands ALL For the description of this option, see Set Unconditional Code Breakpoint on page 4-7 under the B command. Considerations When debugging accelerated programs, you can set breakpoints in TNS code only on instructions that are register-exact or memory-exact points. These points are marked in displays by the I and PMAP commands. For more information, see Rules About RISC Breakpoints on page 2-7. Examples 106,04,00192-b 5 + 3, (d; t; r) 106,04,00192-b uc.
Display Breakpoints Debug Commands Format of the Code Breakpoint Display Debug displays TNS and native code breakpoints in this form: TNS code breakpoint: [@ | >] code-segment, addr-16 INS: instr SEG:memory-seg [PIN: { | ALL } ] INS: mnemonic-instr [ condition ] [ trace ] [ command-string ] Native code breakpoint: [^--] N: addr-32 INS: instr-32 INS: mnemonic-instr-32 [ condition ] [ trace ] [ command-string ] > (greater-than sign) denotes a memory-exact point, for accelerated programs only.
Display Breakpoints Debug Commands pin-num is the PIN number, available only on privileged mode. mnemonicinstr is the mnemonic decode of the instr binary value. ^-- indicates that the displayed output is RISC corresponding to a previous TNS breakpoint. This is shown only with the B* command. N indicates that the breakpoint is in RISC code. addr-32 is the 32-bit address in RISC code where the breakpoint is set.
Display Breakpoints Debug Commands Format of the Memory-Access Breakpoint Display Debug displays memory-access (MAB) breakpoints in this form: {XA: | N:} mab-addr [ - ] MAB: access ( seg-type ) [PIN: { | ALL } ] [ condition ] [ trace ] [ command-string ] {XA: | N: } XA is a 32-bit extended address given when the MAB is on a data location. N is given when the MAB is on a RISC stack location or a code location. A MAB can be put on a TNS code location only in privileged mode.
Display Breakpoints Debug Commands The displays for condition, trace, and command-string are described separately later in this section. Example For memory-access breakpoint examples, see Appendix F, Sample Debug Sessions. Format of the Conditional Breakpoint Display For a conditional breakpoint (code or memory-access), Debug displays the conditional information under the normal breakpoint information.
Display Breakpoints Debug Commands index is an offset from the base address. This can be used with 16-bit addresses only. mask is an expression as defined under Set Conditional Code Breakpoint on page 4-11. constant is an expression as defined under Set Conditional Code Breakpoint on page 4-11.. Example For conditional breakpoint examples, see Appendix F, Sample Debug Sessions.
BASE Command Debug Commands index is an offset from the base address. It can be used with 16-bit addresses only. ? is the trace indicator. count is the number of 16-bit words to be displayed. Example For trace breakpoint examples, see Appendix F, Sample Debug Sessions. Format of the Command-String Display For an execute mode breakpoint (code or memory-access), Debug displays the value of command-string that was entered with the breakpoint.
BASE Command Debug Commands IN | I changes the base only for numeric values being entered. OUT | O changes the base only for numeric values being displayed. Considerations • • • • • • If the command omits both IN and OUT, the command affects both values being entered and values displayed. Once issued, the BASE command is in effect until either you enter another BASE command that overrides a previous command or the process terminates.
BM Command Debug Commands This command series changes the base for output to decimal and displays the contents of R0 again. 215,05,00069-BASE D O; D R0 *REG* #01279 This command series changes the base for output to the standard value, which is octal for the TNS state, and displays the contents of R0 again. 215,05,00069-BASE S O; D R0 *REG* %002377 For more examples of the BASE command, see Appendix F, Sample Debug Sessions. BM Command The BM command sets memory-access breakpoints.
Set Unconditional Memory-Access Breakpoint Debug Commands access indicates the type of memory access that triggers the breakpoint. R Break on a read access R W Break on a read/write access W R Break on a read/write access; equivalent to RW W Break on a write access C Break on a change access ALL specifies a privileged attribute for the memory-access breakpoint. ALL specifies that the breakpoint applies to all processes in the processor executing the process being debugged.
Set Conditional Memory-Access Breakpoint Debug Commands 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.
Set Conditional Memory-Access Breakpoint Debug Commands access indicates the type of memory access that triggers the breakpoint.Valid options depend on the type of processor you are using, as noted in the following list: R Break on a read access RW Break on a read/write access WR Break on a read/write access; equivalent to RW W Break on a write access register is a processor register. For more information on this parameter, see Register Syntax on page 3-7.
Set Conditional Memory-Access Breakpoint Debug Commands > break if the variable is greater than constant. This operator does a signed comparison. = break if the variable is equal to constant. # | <> break if the variable is not equal to constant. constant is an expression. The value is 16 bits unless address is an N mode address, in which case the value will be 32 bits. ALL For the description of this option, see Set Unconditional Memory-Access Breakpoint on page 4-24.
Set Trace Memory-Access Breakpoint Debug Commands Set Trace Memory-Access Breakpoint The BM command can set a trace memory-access breakpoint. A trace memory-access breakpoint causes Debug to list the contents of specified variables each time the breakpoint location is accessed in the specified manner.
Set Trace Memory-Access Breakpoint Debug Commands Considerations • • Change access is not allowed with trace memory-access breakpoint. Debug displays this header each time the breakpoint location is accessed in the specified manner: ° TNS and accelerated modes TRACE code-address, space-identifier This header gives the address where the break occurred. In TNS or accelerated mode, code-address is a C-relative address, which gives the address of the break relative to the identified code segment.
Set Execute Memory-Access Breakpoint Debug Commands Set Execute Memory-Access Breakpoint The BM command can set an execute memory-access breakpoint. An execute memory-access breakpoint causes Debug to execute a specified string of Debug commands when the breakpoint location itself is accessed in the specified manner. After executing the specified command string, Debug prompts for additional Debug commands, unless the specified command string contains an R (resume) command.
C Command Debug Commands Examples 100,01,00011-BM L+2, R, (D; T; R) 100,01,00011-BM UC.2, 400, W, (D;T;R) 100,01,00011-BM SC.0, 2342, W, (D;T;R) 248,02,00067-BM 0x4FFFFEFC, R, (D;T;R) C Command The C command clears one or all code breakpoints (unconditional, conditional, trace, and execute). The form of the C command is: C [ address ] [ * | 0 ] [ -1 ] address is the code address of the breakpoint to be cleared. For more information, see Address Syntax on page 3-12.
CM Command Debug Commands CM Command The CM command clears the memory-access breakpoint for the process being debugged. The form of the CM command is: CM [ , ALL ] ALL clears the memory-access breakpoint with the ALL option specified. You can specify ALL only if you are debugging in privileged mode as described under the PRV command. Example 106,01,00012-CM D Command The D command displays numeric data.
D Command Debug Commands data-display-format specifies the format options in which data is displayed. The data-displayformat has this format: { B | B1 | C | B2 | S | B4 | L } B|B1|C Display data in character format. B2|S Display data in 16-bit word format. These are the default format options. B4|L Display data in 32-bit format. [OUT] output-dev specifies where the display is directed. Debug output can be directed to an output device, a process, or a spooler collector.
D Command Debug Commands Considerations • • • The D N address (with space between the letters) is not the same as the DN address. The D command is used to display data in 16-bit word groups, while the DN command has different syntax and is issued to display data in 32-bit word groups. For displaying data in ASCII, use the A command. For displaying data in machine instruction, use the I command.
Display Register Contents Debug Commands Display Register Contents The D command can display registers. The display-register form of this command is: D [ register ] [ , [ OUT ] output-dev ] [ * ] register represents the contents of one of the processor registers for the process. For more information, see Register Syntax on page 3-7. If you omit register, Debug displays the current values of the TNS/R registers when in native mode, and the TNS environment registers when in TNS or accelerated mode.
Display Register Contents Debug Commands Syntax for a device other than a disk: [ node.]{device-name[.qualifier ] } {ldev-number } Syntax for a named process: [ node.]process-name[:seq-no][.qual-1[.qual-2] ] Syntax for an unnamed process: [ node.]$:cpu:pin:seq-no For syntax descriptions of these process and device names, see the Guardian Procedure Calls Reference Manual. Examples Specific to Debugging in TNS EXECUTION MODE = TNS 050,03,00020-d * S=%000060 P=%000177 E=%000207 L=%000023 SP=UC.
Display Register Contents Debug Commands Examples Specific to Debugging in Accelerated Mode 050,03,00023-d * *** WARNING: TNS STATE MAY NOT BE WHERE YOU THINK IT IS *** S=%000060 P=%000177 E=%000307 L=%000023 SP=UC.
Display Register Contents Debug Commands Example Specific to Debugging in Native Mode EXECUTION MODE = NATIVE 050,03,00267-d * $00: $04: $08: $12: $16: $20: $24: $28: $PC: 0x70000568 $HI: 0x00000D38 $LO: 0x221FC20C $00: $A0: $T0: $T4: $S0: $S4: $T8: $GP: $AT: $A1: $T1: $T5: $S1: $S5: $T9: $SP: $V0: $A2: $T2: $T6: $S2: $S6: $K0: $S8: 0x00000000 0x00080030 0x00000067 0x4FFFFEBB 0x00000000 0xFFFFFFFF 0x00000000 0x08007FF0 0x00000001 0x4FFFFEBB 0x00000007 0x00004003 0xFFFFFFFF 0xFFFFFFFF 0xC40014EC 0
DJ Command Debug Commands DJ Command The DJ command displays the contents of a specified jump buffer in register format. The form of the DJ command is: DJ 32-bit-address 32-bit-address is the RISC address of a jump buffer. Considerations • • • The DJ command causes a subset of the TNS/R registers to be displayed. Registers that are not saved in the jump buffer are not displayed. The default numeric base for the DJ command is hexadecimal. A jump buffer is used for saving the context of a process.
DN Command Debug Commands DN Command The DN command displays memory contents in multiple formats: namely, ASCII, RISC instruction code, TNS instruction code, binary, octal, decimal, or hexadecimal.
DN Command Debug Commands If you omit BY columns, Debug determines the number of items to display on a line. display-format has this form: { IN| : } [ S | U ] display-type [ display-size ] { IN| : } specifies that the display-format (output) follow in the command. You must begin display-format with an IN or a colon (:). In a DN command, a count-format specification and a display-format specification can appear in either order. [ S | U ] specifies signed or unsigned displays for octal and decimal numbers.
DN Command Debug Commands The default format is determined by a preceding BASE command If no BASE command has been entered, the default format is H, which displays 32 bits (4 bytes). display-size indicates the number of bytes in the displayed item. Valid sizes are integer values of 1 through 4.
DN Command Debug Commands • All displays contain the full display address along the left-hand side of the display.
EX[IT] Command Debug Commands 7000000C: 0x349C94B0 70000018: 0x3F8E3FCB 0x39F73AB3 0x40814140 0x3B683E90 This command displays eight RISC instructions: 248,06,024-DN 0x70000, #8 : R 70000000: SYSCALL BEQ 7000000C: ORI gp,a0,0x34B0 XORI 70000018: LUI t6,0x3FCB MTC0 k1,s2,0x700006 SLTIU .... s7,t7,0x3AB3 XORI ....
F[ILES] Command Debug Commands F[ILES] Command The FILES (or F) command displays the file name and the latest file-management error number associated with an open file. The form of the FILES command is: F[ILES] [ file-number ] file-number is a 16-bit word expression representing the file number returned from the open operation on the file whose information is to be displayed. The value -1 causes Debug to display the error associated with the last open, create, purge, or AWAITIO operation that failed.
FC Command Debug Commands Examples 106,00,00030-F 4 \SYS1.$SYSTEM.SYS50.OSIMAGE #-00006 106,00,00031-F # -1 ??? #001 \SYS1.$DATA.INFO.NAMES #004 \SYS1.$SYSTEM.SYS50.OSIMAGE #005 \SYS1.$:15:122:1263433 #006 ?\SYS2.$TRAMP.TEST.FILE # 00014 #-00008 00001 #-00024 # 00000 # 00210 FC Command The FC command alters the last Debug command that was entered. The form of the FC command is: FC When you enter the FC command, Debug displays the last command line and prompts you for an “editing template.
FN Command Debug Commands FN Command The FN command searches memory to find a particular number. The FN command starts at a specified address and searches memory until one of the following occurs: • • A 16-bit word is reached whose contents logically ANDed with mask, and it equals the result of value logically ANDed with mask. A 16-bit word address ending in 17 binary zeros is reached.
FNL Command Debug Commands Examples 106,00,00014-FN UC.1, 1, 3 & 2 106,00,00014-FN 5, 23 & 2 248,01,00023-FN N 0x80020000, 0x33 ! Find the number 0x33 starting at ! the specified RISC address. FNL Command The FNL command searches memory to find a 32-bit number. The FNL command starts at a specified address and searches memory until one of the following occurs: • • A word is reached whose contents logically ANDed with mask, and it equals the result of value logically ANDed with mask.
FREEZE Command Debug Commands • Two possible uses for this command are finding data structures with particular values and finding code that has moved slightly because of a minor change. If you omit value and mask, the FNL command uses the value and mask specified by the previous FNL command but starts searching at the newly specified address.
HALT Command Debug Commands HALT Command The HALT command halts the processor. The form of the HALT command is: HALT Considerations • • • The HALT command is allowed only if you are debugging in privileged mode as described under the PRV command. Any running processors will declare the halted processor as being down. Once a processor is halted, a service provider can use the service processor (SP) to examine the processor. Example ! Halts the current processor, 02 in this example.
I Command Debug Commands Considerations The HELP command is not available if the priority of the process being debugged is greater than or equal to the priority of the memory manager. I Command The I command displays instruction code. The default instruction set depends on the process type, but the instruction set can be specified by the mode parameter.
I Command Debug Commands These format options have these meanings: T displays TNS instruction code. N displays RISC instruction code. R displays RISC instruction code. If you omit mode, the default is based on the address that is currently being used.
IH Command (TNS/R Native and OSS Processes) Debug Commands Examples From a Native Program 050,03,00267-I 0x70000464 70000464: ADDIU sp,sp,-128 050,03,00267-I $pc - (4*4), 4 70000558: LW s0,52(sp) LW s1,56(sp) LW ra,60(sp) 70000564: NOP 050,03,00267-I Q #40/2, 6 :t %000024: ADRA %000030: NOP 1 LDD G+143,5 LDD G+145,6 LDD G+147,7 NOP 050,03,00267- IH Command (TNS/R Native and OSS Processes) The IH command displays information about signal handling for all signals or for a specified signal
INSPECT Command Debug Commands The second column shows a “P” if the signal handler for that signal is privileged or “N” if the signal handler is nonprivileged. The third column shows the starting address of each signal handler. The fourth and fifth columns show the mask values that indicate which signals to block when each signal handler is executing. (Only the lower 64 bits are displayed of the 128 bits that are available; the upper 64 bits are reserved.
INSPECT Command Debug Commands Considerations for Switching From Debug to Inspect • • • • The Inspect debugger updates its breakpoint list upon being invoked from Debug. Privileged breakpoints are added only if the Inspect debugger has SET PRIV MODE ON. For this to happen, you must have (1) been in the Inspect debugger and entered the SET PRIV MODE ON command, (2) invoked Debug, entered the PRV command, and set breakpoints, and (3) reinvoked the Inspect debugger.
LMAP Command Debug Commands • • • If you invoke Debug from an Inspect process being used to debug multiple processes, there is a possibility of both the Inspect process and Debug competing to control the terminal. You might consider using either the Inspect or Debug pause command to eliminate the contention. If the Inspect debugger is used to set breakpoints on STOP or ABEND, the Inspect debugger reports the event even if the event occurs when Debug is being used to debug the process.
M Command Debug Commands • The LMAP command is not available when the process in Debug is one that does not allow page faults. Examples 243,01,00282-lmap sl.7,24137 EMTEXT + %17226 (SL.07) ! an address in SL.07 243,01,00282-lmap n 0x7a0e50be EMTEXT + %17226 (SL.07) ! same location as a 32-bit address 243,01,00282-lmap n 0x7A6CDBAC EMSTEXT + %17226 (acc SL.
Modify Register Contents Debug Commands unless an N-mode address is used, in which case a 32-bit word is used for newvalue. If you omit new-value, Debug prompts for a 16-bit word expression to represent the new contents of the variable. The prompt is of the form: address: current-value <- address is the address of the word to be modified. current-value is the current value of the indicated variable. You can enter one value at the prompt.
Modify Register Contents Debug Commands new-value is a 16-bit word expression representing the new contents of the designated register. The new-value parameter is a space identifier if you specify SP for register. If register is a TNS/R register, new-value is a 32-bit value and you enter newvalue in hexadecimal. If you omit new-value, Debug prompts for a 16-bit word expression to represent the new contents of the register.
Modify Register Contents Debug Commands Considerations • When you want to change the current location of a process running in TNS or accelerated mode, you modify the value of the P register. If the process is a multiple-segment process, you must also change the space identifier. You change the space identifier in order to change the location of the process to a different code segment.
MH Command (TNS/R Native and OSS Processes) Debug Commands Examples 147,01,00029-MR0 *REG*: %000031 <- 0 147,01,00033- M SP SPACEID: UL.2 <- UC.00 147,01,00033- M SP,UC ! Defaults to UC.00 248,01,00033-M $V0, -1 ! Set register $V0 to -1. 248,02,00022-M $T0 ! Change register $T0 to the value 0x70452312. *REG*: 0x00000EF0 <- 0x70452312 MH Command (TNS/R Native and OSS Processes) The MH command can modify signal handling by specifying a new signal handler or signal action for a specified signal.
P[AUSE] Command Debug Commands • • • • Open System Services supports additional signals that can be specified for signal-name. For more information about OSS signals, OSS users can refer to the signal(4) topic in the reference page, either online or in the Open System Services System Calls Reference Manual. A user-written procedure must meet certain requirements to function as a signal handler.
PMAP Command (Accelerated Programs) Debug Commands PMAP Command (Accelerated Programs) The PMAP command prints corresponding blocks of TNS and RISC instruction code. The form of the PMAP command is: PMAP address [ , count ] [ , [ OUT ] output-dev ] address is a code address. For more information, see Address Syntax on page 3-12. The address-mode parameters allowed for a code address are as follows: • • UC, UL, SL, and C address modes are allowed while in nonprivileged mode.
PRV Command Debug Commands • If the name you specify for output-dev happens to match a register name, a syntax error might result. To avoid any possibility of ambiguity, include the keyword OUT before output-dev, which informs Debug that the name refers to an output device. For example, suppose a printer is named $S1, which is also the name of a TNS/R register. Specifying OUT $S1 on the PMAP command tells Debug that $S1 is an output device.
R Command Debug Commands Considerations • • • The PRV ON command requires that the process you are debugging be executing under the local super ID (255, 155). After you specify the PRV ON command, you can enter any of the privileged commands or options. Privileged debugging is never available automatically.
S[TOP] Command Debug Commands op is one of these operators: < resume if expression-1 is less than expression-2. This operator does an unsigned comparison. > resume if expression-1 is greater than expression-2. This operator does an unsigned comparison. = resume if expression-1 is equal to expression-2. <> resume if expression-1 is not equal to expression-2. expression-2 is a 16-bit word expression.
T Command Debug Commands T Command The T command traces back and displays the contents of up to 10 stack markers, starting from the current stack marker or a designated stack marker. The T command can either report the procedure names or translate the PC register (native mode) or the ENV register (TNS or accelerated mode) in each stack marker.
T Command Debug Commands [OUT] output-dev specifies where the display is directed. Debug output can be directed to an output device, a process, or a spooler collector. Debug output cannot be directed to a disk file. If you omit output-dev, Debug assumes the home terminal. The output-dev parameter has these formats. Syntax for a device other than a disk: [ node.]{device-name[.qualifier ] } {ldev-number } Syntax for a named process: [ node.]process-name[:seq-no][.qual-1[.qual-2] ] [ node.
T Command Debug Commands • The T command has a default that provides a shorthand way of displaying successive blocks of stack frames. If you execute a T command and the subsequent Debug prompt ends with (T)-, this indicates that additional stack frames remain to be displayed. For example: 149,06,00024 (T)You can display the remaining stack frames simply by pressing RETURN. This executes a default command of the form T & options where options are the options you specified for the previous T command.
V Command Debug Commands • • A disk process whose object code resides on the disk being debugged, typically $SYSTEM. The N option format always works for user processes and system input/output processes (IOPs) other than those mentioned in the preceding list. Examples For examples that use the T command, see Appendix F, Sample Debug Sessions. V Command The V command enables you to access address spaces of other processes.
VQ Command Debug Commands Considerations • • You can specify V only if you are debugging in privileged mode. If you use the V command to switch Debug’s view to another process, you cannot then enter Inspect commands for that process; an attempt to do so produces an error message.
VQA Command Debug Commands VQA Command The VQA command sets the current selectable data segment to the specified absolute segment number. The syntax of the VQA command is: VQA [ expression-16 ] expression-16 is the specified segment ID of the segment that is to be the current selectable data segment (Q segment). If you omit expression-16, the current segment ID reverts to the one in use when the process entered Debug.
= Command Debug Commands A, B, D, E, H, N, O, R, T, #, and % specify the base in which Debug is to display the computed value A denotes ASCII. B denotes binary. D denotes decimal. E translates and displays expression as both the hardware ENV register and the stack marker ENV register. H denotes hexadecimal. N denotes RISC instruction code. O denotes octal. R denotes RISC instruction code. T denotes TNS instruction code. # denotes decimal. % denotes octal.
? Command Debug Commands ? Command The ? command displays the following: • • The space identifier for the current code segment. Either the segment ID for the current selectable data segment that was brought into use when the process being debugged called USESEGMENT or SEGMENT_USE_, or the segment ID last specified by you in a Debug VQ command. The segment ID is in octal. The VQ command does not change the process segment ID that resulted from the process’s last call to USESEGMENT or SEGMENT_USE_.
? Command Debug Commands Debug Manual—421921-003 4- 76
A Error Messages This appendix lists the error messages that can occur when you enter a Debug command. 1 The breakpoint table is full. Cause. The code breakpoint table is full. The new breakpoint cannot be entered. Effect. The command is not executed. Recovery. Clear an existing breakpoint to provide space in the table, then try again. 2 Trace routine encountered a syntax error. Cause.
7 Error Messages 7 PRV ON is required to perform command. Cause. The PRV ON command must be executed in order to use a privileged command. Effect. The command is not executed. Recovery. Enter the PRV ON command and try again. 8 Could not get memory to hold break information. Cause. The command attempts to set a breakpoint with a command string, but Debug requires system buffer space that is not available. Effect. The command is not executed. Recovery.
13 Error Messages 13 Internal error: Cannot access COMPADRS . Cause. An error occurred while attempting to display information pointed at by the COMPADRS field of the breakpoint table. The reason is provided with the error message, which can be one of the following: OK Occurs as an informational message only. Bad PIN The specified PIN number is invalid. Address not valid The specified address is invalid. Unsupported The specified Debug version is not supported by the memory manager.
15 Error Messages 15 Internal error: Cannot decode 1-byte long instructions. Cause. Internal error occurred indicating that Debug cannot decode 1-byte instructions. Effect. None. Recovery. This error should not occur. If it does, contact your service provider with the description of the problem. 16 Page fault is not allowed for this PIN. Cannot execute command. Cause. The PIN that is being debugged has a higher priority than the memory manager.
19 Error Messages 19 Invalid PIN. Cause. The specified PIN is not valid. You did not specify the correct address, or the PIN is in a different processor than where you are debugging. Effect. The command is not executed. Recovery. Verify that the PIN is in the processor where you are debugging, or make sure that the address is correct. 20 Specified number is greater than 0xFFFF. Cause. The specified number was greater than what the command expected. Effect. The command is not executed. Recovery.
23 Error Messages 23 Specified device name is invalid. Cause. The specified output device was invalid. Effect. The command is not executed. Recovery. Specify a valid output device and try again. 24 Output device is missing or output is directed to disk. Cause. The name of the output device was not found, or the name was identified as a disk device. Effect. The command is not executed. Recovery. Make sure that an output device is specified and that it is not a disk device. 25 Comma (,) expected.
27 Error Messages 27 Address requires valid PIN. Cause. The given address requires a valid PIN. Effect. The command is not executed. Recovery. Make sure that the address relates to the correct PIN. 28 SC address is invalid. Cause. The specified SC address was not valid. Effect. The command is not executed. Recovery. Specify a valid SC address and try again. 29 TNS-style segment specified for native program. Cause. The program is native, but the specified address is in TNS format. Effect.
32 Error Messages 32 Start of accelerated code location is not found. Cause. The program is not an accelerated program. Effect. The command is not executed. Recovery. Do not use the PMAP command unless the program is accelerated. 33 End of accelerated code location is not found. Cause. While attempting to execute the PMAP command, an address that was beyond the end of the accelerated code was found. More information might have been provided before this error occurred. Effect.
36 Error Messages 36 Start of TNS code location is invalid. Cause. An attempt to use a RISC code address to find a TNS address in the accelerated program has failed, because the address does not point to a TNS code location. Effect. The command is not executed. Recovery. Make sure that the address assigned to the PMAP command is valid and try again. 37 Invalid count. Cause. The count value was not valid for the specified command. Effect. The command is not executed. Recovery.
40 Error Messages 40 Internal error: DUMP_NATIVE_COMMAND. Cause. The space needed to display the information for the DN command was larger than the space available. Effect. The command is not executed. Recovery. Contact your service provider with the description of the problem. 41 PMAP address is not TNS or accelerated code. Cause. The PMAP command cannot be used on native code. Effect. The command is not executed. Recovery. Do not use the PMAP command on native code.
44 Error Messages 44 Internal error: HIST_FORMAT_ error:error-number. Cause. The HIST_FORMAT_ function returned an internal error when the LMAP command was used. Effect. The command either might not be executed or it might be partially executed. Recovery. Check the address assigned to the LMAP command. If the address is not valid, make sure that you specify a valid address. If the address is valid, contact your service provider. 45 Unsuccessful turning OFF of PRV. Cause.
48 Error Messages 48 Error accessing memory: reason. Cause. Debug could not access memory. See error message 13 for the list of reasons. Effect. The command is not executed. Recovery. Check the address in the specified command to make sure that it is valid. Make sure that the PIN still exists. 49 FN reached address boundry. To continue, enter the following address: address. Cause. The FN command stops every time it reaches a byte address where the loworder 17 bits are zero. Effect.
52 Error Messages 52 FNL stopped searching at the following address: address, reason. Cause. The FNL command stopped searching at the indicated address for the given reason (see error message 13 for the list of reasons). This normally occurs when the end of the allocated memory for the program is reached. Effect. The executed command cannot go beyond the indicated address. Recovery. Specify new values for the FNL command or enter some other Debug command that you want.
56 Error Messages 56 Cannot restore current segment in vectored PIN. Cause. The VQ command attempted to restore the current segment indicated in the PCB of the vectored PIN, but the attempt failed. Effect. The command might or might not be executed. Recovery. Check the current user segment syntax with the ? command. If you had not specified the correct value, specify a correct value for the user segment and try again.
60 Error Messages 60 Invalid MAB access type. Expecting R, RW, W, or C. Cause. You did not indicate whether a memory-access breakpoint was a READ, READ-WRITE, WRITE, or change (C) breakpoint. Effect. The command is not executed. Recovery. Specify one of the valid memory access types listed in the message text and retry the command. 61 Address is not in code location. Cause. The memory manager indicated that the specified address is not a code location. Effect. The command is not executed. Recovery.
64 Error Messages 64 IX, IG, and I are not allowed for extended address. Cause. An extended address was specified for the trace or condition clause on a breakpoint. The IX, IG, and I options cannot be used with an extended address. Effect. The command is not executed. Recovery. If an extended address must be used, use SX to allow indexing. 65 Memory is absent and page fault is not allowed. Cause.
68 Error Messages 68 Need code address to find and clear breakpoint. Cause. An attempt was made to clear a breakpoint using the C command, but no code address was specified. The C command without an address can be used only if the current program location is at a breakpoint. Effect. The command is not executed. Recovery. Specify an address to the C command, or use some other option available in the C command syntax. 69 Breakpoint matching address not found. Cause.
72 Error Messages 72 Multiple commas (,,) found. Cause. Multiple commas were found. The syntax is meaningless. Effect. The specified command is not executed. Recovery. Fix the syntax and try again. 73 Multiple display-format found or syntax is invalid. Cause. The display-format was specified more than once, or the specified syntax was invalid. Effect. The command is not executed. Recovery. Fix the command and try again. 74 Expected display-format of B, B1, B2, B4, C, S, or L. Cause.
76 Error Messages 76 Expected %, #, D, H, or O. Cause. One of the possible base values was not specified. Effect. The command is not executed. Recovery. Specify one of the possible output base values listed in the message text and try again. 77 Expected T, N, or R. Cause. One of the specified values (T, N, or R) was not specified. Effect. The command is not executed. Recovery. To override the I command’s base value, specify T for TNS instructions, and N or R for RISC instructions.
80 Error Messages 80 Expected SIG_DFL, SIG_ABORT, SIG_DEBUG, or SIG_IGN. Cause. One of the expected options was not specified when using the MH command. Effect. The command is not executed. Recovery. Make sure that one of the options in the message text is specified and try again. 81 Attempt to modify signal information failed. Cause. An attempt to modify signal information failed. Effect. The command is not executed. Recovery. Check the syntax to make sure that it is correct.
84 Error Messages 84 Cannot modify V PIN memory. Cause. You attempted to modify an address location that might be a code location or the address might not be resident. Effect. The command is not executed. Recovery. If you want to modify this address, you must debug the process directly, not vector to it. See the #DEBUGPROCESS command in the TACL Reference Manual to start debugging a process directly. You can get more information about the address with the AMAP command.
88 Error Messages 88 Code segment number is out of range. Cause. The specified code segment number was out of range. Effect. The command is not executed. Recovery. Make sure that you specify a segment number that is within the range. 89 Internal error: CHANGE_T16R. Cause. An internal error occurred for a native program. Effect. The command is not executed. Recovery. Contact your service provider with the description of the encountered problem. 90 Internal error: CHANGE_T9. Cause.
92 Error Messages 92 TNS ending address is zero. Cause. The PMAP command encountered an error indicating that ending-value of the TNS address was zero. Effect. The command might be partially executed. Recovery. Make sure that the address and the length specified for the PMAP command are correct. 93 Cannot access Inspect while vectored to another PIN. Cause. You attempted to use an Inspect command while vectored to another PIN. Effect. None. Recovery.
96 Error Messages 96 Expecting: In, Out, I, or O. Cause. The BASE command asked whether the specified base was for an input or for an output. Effect. The specified command is not executed. Recovery. Indicate whether the base is an input or an output. 97 Bad information in jump buffer. Cause. The DJ command encountered an error while attempting to process the information in the jump buffer that is pointed to by the specified address. Effect. The specified command is not performed. Recovery.
100 Error Messages 100 PIN does not use IEEE floating point. Cause. The command referenced a floating-point register, but either the PIN does not use IEEE floating-point instructions or an IEEE floating-point instruction is not executed at this point in the program. Effect. The command is not executed. Recovery.
103 Error Messages 103 Cannot set the code breakpoint at this address as Memory Access Breakpoint already exists at given location. Cause. The command tried to set a code breakpoint at a location where a Memory Access Breakpoint either exists in same process or in all processes in same processor. Effect. The command is not executed. Recovery. Try the command after removing the existing Memory Access Breakpoint at the same location.
B Char ASCII Character Set Octal Hex Dec Meaning Ordinal Left Right NUL 000000 000000 0 0 Null 1 SOH 000400 000001 1 1 Start of heading 2 STX 001000 000002 2 2 Start of text 3 ETX 001400 000003 3 3 End of text 4 EOT 002000 000004 4 4 End of transmission 5 ENQ 002400 000005 5 5 Enquiry 6 ACK 003000 000006 6 6 Acknowledge 7 BEL 003400 000007 7 7 Bell 8 BS 004000 000010 8 8 Backspace 9 HT 004400 000011 9 9 Horizontal tabulation 10 LF
ASCII Character Set Char Octal Hex Dec Meaning Ordinal Left Right SP 020000 000040 20 32 Space 33 ! 020400 000041 21 33 Exclamation point 34 " 021000 000042 22 34 Quotation mark 35 # 021400 000043 23 35 Number sign 36 $ 022000 000044 24 36 Dollar sign 37 % 022400 000045 25 37 Percent sign 38 & 023000 000046 26 38 Ampersand 39 ' 023400 000047 27 39 Apostrophe 40 ( 024000 000050 28 40 Opening parenthesis 41 ) 024400 000051 29 41 Clos
ASCII Character Set Char Octal Hex Dec Meaning Ordinal Left Right C 041400 000103 43 67 Uppercase C 68 D 042000 000104 44 68 Uppercase D 69 E 042400 000105 45 69 Uppercase E 70 F 043000 000106 46 70 Uppercase F 71 G 043400 000107 47 71 Uppercase G 72 H 044000 000110 48 72 Uppercase H 73 I 044400 000111 49 73 Uppercase I 74 J 045000 000112 4A 74 Uppercase J 75 K 045400 000113 4B 75 Uppercase K 76 L 046000 000114 4C 76 Uppercase L 7
ASCII Character Set Char Octal Hex Dec Meaning Ordinal Left Right f 063000 000146 66 102 Lowercase f 103 g 063400 000147 67 103 Lowercase g 104 h 064000 000150 68 104 Lowercase h 105 i 064400 000151 69 105 Lowercase i 106 j 065000 000152 6A 106 Lowercase j 107 k 065400 000153 6B 107 Lowercase k 108 l 066000 000154 6C 108 Lowercase l 109 m 066400 000155 6D 109 Lowercase m 110 n 067000 000156 6E 110 Lowercase n 111 o 067400 000157 6F
C Command Syntax Summary Register Syntax register The register parameter can be either a TNS/R register or a TNS environment register. A TNS/R register has one of these formats: { { { { { $00| $01 | ... | $31 } $HI | $LO } $PC } $F00| $F01 | ...
Expression Syntax Command Syntax Summary A TNS environment register has one of these formats: { S | P | E | L | SP } { R0 | R1 | ... | R7 } { RA | RB | ... | RH } Expression Syntax term [ { + } term ]... { - } The term parameters is of the form: value [ op value ]... The value parameter has one of these forms: ( expression ) 'c1[c2[c3[c4]]]’ PCB expression number[.
A Command Command Syntax Summary Q G ! privileged mode only The indirection-type parameter has one of these values: I S IX SX IG SG ! privileged mode only ! privileged mode only The Q-mode address has these format: offset [indirection-type ] The N-mode address has this format: N A Command A address [ , length ] [ , data-display-format ] [ , [ OUT ] output-dev ] The length parameter has one of these two forms: count T entry-size * num-entries The data-display-format parameter has this format: { B |
Set Conditional Code Breakpoint Command Syntax Summary Set Conditional Code Breakpoint B address {, {register |start-address }[& mask] op constant [, ALL] } { [, ALL] , {register |start-address }[& mask] op constant } op is: { < | > | = | <> } The ALL option is allowed only in privileged mode. Set Trace Code Breakpoint B address {, {register |start-address } ? count [, ALL ] } { [ , ALL ] {register |start-address }? count } The ALL option is allowed only in privileged mode.
BM Command Command Syntax Summary BM Command Set Unconditional Memory-Access Breakpoint BM address , access [, ALL ] access is: R RW WR W C The ALL option is allowed only in privileged mode.
Set Execute Memory-Access Breakpoint Command Syntax Summary Set Execute Memory-Access Breakpoint BM address , access {, ( command-string ) [, ALL ] { [, ALL ] ( command-string ) } } The value of access is one of the following: R RW WR W The ALL option is allowed only in privileged mode.
Display Register Contents Command Syntax Summary Display Register Contents D [ register ] [ , [ OUT ] output-dev ] [ * ] The output-dev parameter is described later in this appendix under Output-Device Syntax on page C-9.
FC Command Command Syntax Summary FC Command FC FN Command FN [ address [ , value ] [ & mask ] ] FNL Command FNL [ address [ , value ] [ & mask ] ] FREEZE Command FREEZE The FREEZE command is allowed only in privileged mode. HALT Command HALT The HALT command is allowed only in privileged mode.
IH Command Command Syntax Summary IH Command IH [ signal-name ] The IH command is allowed only on native processes. INSPECT Command INSPECT LMAP Command LMAP address M Command Modify Variables M address [ , new-value ] ... Modify Register Contents M register [ , new-value ] MH Command MH signal-name , { sigaction | 32-bit-address } The MH command is allowed only on native processes. Output-Device Syntax The output-dev parameter has these formats. Syntax for a device other than a disk is: [ node.
P[AUSE] Command Command Syntax Summary Syntax for a named process is: [ node.]process-name[:seq-no][.qual-1[.qual-2] ] Syntax for an unnamed process is: [ node.]$:cpu:pin:seq-no P[AUSE] Command P[AUSE] pause-time PMAP Command PMAP address [ , count ] [ , [ OUT ] output-dev ] The PMAP command is allowed only on accelerated programs. PRV Command PRV [ ON | OFF ] Caution. Use privileged commands with extreme caution, because they allow you to perform operations that could halt the system.
S[TOP] Command Command Syntax Summary S[TOP] Command S[TOP] T Command T [ & ] [ N ] [ options ] [ , [ OUT ] output-dev ] The options parameter is one or more of the following, separated by commas: [register [=]] expression MODE { N[ATIVE] | T[NS] | A[CCELERATED] } AT expression J 32-bit-address The output-dev parameter is described in Output-Device Syntax on page C-9. V Command V [ QA ] [ expression-16 ] The V command is allowed only in privileged mode.
= Command Command Syntax Summary = Command = expression [ : [ [ [ [ [ [ [ [ [ # % B A N E H R T ] ] ] ] ] ] ] ] ] ] ? Command ? Debug Manual—421921-003 C -12
D Session Boundaries Typically, a Debug session begins when Debug is invoked for a process and the Debug prompt is displayed on the process’s home terminal. Typically, the session ends when you leave Debug (EXIT command), resume process execution (R command), or stop the process (S command). Most Debug commands affect only the current debugging session. The effects of certain commands, however, cross session boundaries.
Session Boundaries Figure D-1. Scope of Debug Commands’ Effects Node CPUn Nonprivileged Debug Commands Process Node CPUn Process Privileged Debug Commands Process Process Process Process Process Legend Can be affected by commands issued in a Debug session Cannot be affected by commands issued in a Debug session VSTD101.vsd If you issue privileged commands (described under the PRV command), commands are effective for the processor.
Session Boundaries Table D-2. Privileged Command Persistence (With Scope of the Processor) Command Resume Command Process Stops/Abends Canceling Operation PRV Retained Canceled N/A B ... ALL (code breakpoint) Retained Retained C –1 command; memory or code space cleared BM ...
Session Boundaries Debug Manual—421921-003 D- 4
E Correspondence Between Debug and Inspect Commands Table E-1 shows the correspondence of Debug commands to Inspect low-level commands. The low-level Inspect debugger also supports high-level Inspect commands. For more information about Inspect commands, see the Inspect Manual. Table E-1.
Correspondence Between Debug and Inspect Commands Table E-1.
F Sample Debug Sessions This section of the manual provides step-by-step demonstrations of using Debug commands for debugging TNS, accelerated, and native programs. For more information on TNS programs, accelerated programs, and native programs, see Section 2, Using Debug on TNS/R Processors in this manual. We provide the source listing (Example F-1 on page F-2), which can be compiled with either a TAL or pTAL compiler. We also provide TNS and native program listings.
Overview of Example Program Sample Debug Sessions Example F-1. Example Source Code for SDEMO1 7.01 7.11 7.111 8 8.1 8.101 8.11 ?NOLIST, SOURCE $system.system.extdecs (DEBUG, FILE_OPEN_, ? INITIALIZER, PROCESS_GETINFO_, PROCESSHANDLE_NULLIT_, ? SEGMENT_ALLOCATE_, SEGMENT_USE_, WRITEREADX) ?LIST INT my_termnum; INT process_handle [0:9]; STRING .EXT sp := %2000000D; 8.22 PROC example_init; 8.23 BEGIN 8.3 INT error_init; 8.301 INT .EXT handle_ptr; 8.302 STRING hometerm [0:47]; 8.304 INT hometerm_len; 8.
TNS Program Example Sample Debug Sessions 14 END; -- example_maim TNS Program Example Example F-2 on page F-4 is a TNS program, obtained by compiling the source code (Example F-1 on page F-2) with TAL. Before we demonstrate the use of the Debug commands, we first need to compile this program to obtain an object file. The TAL compiler command entered is as follows: TAL /IN sdemo1, OUT $S.#ldemo1/ demo1; OPTIMIZE 0, LIST, NOINSPECT OPTIMIZE 0 is used to make debugging easier.
TNS Program Example Sample Debug Sessions Example F-2. TNS Example Compiled Listing ? optimize 0, list, noinspect 7.01 8.1 8.101 8.11 000000 000000 000000 000000 0 0 0 0 0 0 0 0 ?NOLIST, SOURCE $system.system.extdecs (DEBUG, FILE_OPEN_, INT my_termnum; INT process_handle [0:9]; STRING .EXT sp := %2000000D; 8.22 8.23 8.3 8.301 8.302 8.304 8.305 000000 000000 000000 000000 000000 000000 000000 0 1 1 1 1 1 1 0 0 1 1 1 1 1 PROC example_init; BEGIN INT error_init; INT .
TNS Program Example Sample Debug Sessions 12.02 000021 1 1 12.021 000024 1 1 12.022 error_main error_detail); 12.03 000044 1 1 12.031 000047 1 1 12.032 error_main error_detail); 12.04 000070 1 1 12.05 000073 1 1 12.2 12.3 13. 14.
TNS Program Example Sample Debug Sessions Thus, we enter UC.0,%5 at the prompt, which gives us the breakpoint at the beginning of EXAMPLE_INIT procedure: 050,03,00013-B UC.0,%5 ADDR: UC.%00,%000005 INS: %002035 SEG: %020737 INS: ADDS +035 Selecting a location near the end of the EXAMPLE_INIT procedure, we find that relative offset 76 (octal) is near the end of the procedure. Thus, adding 76 (octal) to the starting location gives us the ending breakpoint location of the procedure. Note.
TNS Program Example Sample Debug Sessions For the A command, the length in is 16-bit words. Thus, we divide 48 by 2 to get 2 bytes per 16-bit word. We also use the B display format to group the output into bytes rather than using the 16-bit words default. Checking for Open Files We check for opened files using the find (F) command. We find that there is no opened file at this point in our example.
TNS Program Example Sample Debug Sessions address 1 and is 10 16-bit words long. For information about how we obtained these numbers, see Example F-2 on page F-4. Here, we omit UD for the address because UD is the default option for the D command.
TNS Program Example Sample Debug Sessions D example. The following specifies the output value to be a decimal for the D command. 050,03,00013-BASE DECIMAL OUT 050,03,00013-d 1, #10 #00001: #00256 #00009: #00000 #00000 #00050 #00003 #00013 #00000 #00000 #00012 #45194 Note. Both of the address output and the data output are displayed in decimal format. Contrast this with the :D option in the example, where only the data output changes base.
TNS Program Example Sample Debug Sessions is to enter the sum of the offset and the base %255 (44 + 211), as shown in the example below. After entering the breakpoints we resume to the location. 050,03,00013-B %211+%21 ADDR: UC.%00,%000232 INS: %040401 SEG: %020737 INS: LOAD L+001 050,03,00013-B %255 ADDR: UC.%00,%000255 INS: %040401 SEG: %020737 INS: LOAD L+001 050,03,00013-R DEBUG P=%000232, E=%000217, UC.%00-BREAKPOINT- Modify Command Here, we demonstrate the use of the modify (M) command.
TNS Program Example Sample Debug Sessions Clearing Breakpoints with * The following example demonstrates clearing breakpoints using * with the C command. First, we use the B command to view all the breakpoints we have set in the EXAMPLE_MAIN procedure. We then clear the breakpoints using the C * command and show that they are gone. 050,03,00013-B ADDR: UC.%00,%000005 INS: %002035 SEG: %020737 INS: ADDS +035 ADDR: UC.%00,%000103 INS: %125003 SEG: %020737 INS: EXIT 03 ADDR: UC.
TNS Program Example Sample Debug Sessions Clearing Breakpoint of Current Location If the program is stopped at a code breakpoint, you need to specify only the C command to clear the breakpoint. We look at the breakpoints both before and after this operation. 050,03,00013-b ADDR: UC.%00,%000104 INS: %002002 SEG: %020737 INS: ADDS +002 ADDR: UC.%00,%000177 INS: %125004 SEG: %020737 INS: EXIT 04 050,03,00013-c 050,03,00013-b ADDR: UC.
TNS Program Example Sample Debug Sessions Displaying String Output The local buffer, IN_OUT_MSG, is an indirect string. This means that we need to use the pointer at L 3 to find the address of the data, divide it by 2 to convert from a string address to a word address, then display the information.
TNS Program Example Sample Debug Sessions Displaying Data Using Extended Address The EXAMPLE_FILL_ARRAY procedure does not update the extended indirect pointer SP located at the program’s global 12, so it is pointing to the beginning of the selectable segment. We can repeat the A and D commands above, using SP as a string extended address. In this case, because the S indirection type indicates a string (byte), index is a byte offset, which eliminates the need of dividing the address by 2.
TNS Program Example Sample Debug Sessions VQ Command The ? command above shows that segment ID 2 is in use. The VQ command allows us to switch to any segment available to the program. In this example, we first use the VQ command to switch to segment 1, which had the “abcdefg” data inserted the last time the EXAMPLE_FILL_ARRAY procedure was called. We then modify the data at location 0x2ff0 in the segment to demonstrate the FN command.
TNS Program Example Sample Debug Sessions = Command In the following example, we show how the = command complements other Debug commands. In this case, we show that the output octal address specified in the FN command, can be specified with the = command to convert the octal address to a hexadecimal address. When we specify the address to the = command, note that it is the same one used in the modify command.
TNS Program Example Sample Debug Sessions AMAP Command If the N prefix is used with an address, the address must be in a 32-bit form. The N prefix also changes the formatting of the output display for some Debug commands. In this example, we use the AMAP command to convert the Q address to a 32-bit address and use the converted address for the A command. 050,03,00013-amap q #40/2 Address: 0x00080028 Kind = 0x0013: Unknown Attributes: none 050,03,00013-a n 0x00080028, #10, c 00080028:.0123456789.........
TNS Program Example Sample Debug Sessions FNL Command We use the FNL command to find data in 32-bit form. Because the value we are searching for is 32-bit, the specified address must be aligned on a even 4-byte boundary (last digit must be hexadecimal 0, 4, 8, or C). 050,03,00013-fnl q0, '3456' 0008002C: 0x33343536 050,03,00013 (FNL)** DEBUG error 51: FNL reached address boundary.
TNS Program Example Sample Debug Sessions Additional Breakpoint Options Next, we demonstrate some variations on the B and BM commands. We run the object file in Example F-2 on page F-4 several times to show the various options with the B and BM commands. The first example will show the breakpoint tracing. We put a breakpoint near the beginning of the EXAMPLE_FILL_ARRAY procedure and show the content of the ARRAY_NUM parameter.
TNS Program Example Sample Debug Sessions We resume the program and enter some data at the prompt. Observe that the value of ARRAY_NUM is shown as we enter the procedure, and the selectable segment is shown as the procedure ends. 050,03,00009-r TRACE 0x004F , UC.%00 0x0010: 0x0001 enter some data abcdefg TRACE 0x007F , UC.%00 0x0014: 0x0061 0x6263 TRACE 0x004F , UC.
TNS Program Example Sample Debug Sessions Execute Breakpoint The next example shows the execute breakpoint using the BM command. We first run the object code: RUND demo1. We put a memory-access breakpoint on the first word of data pointed to by the IN_OUT_MESSAGE pointer in the EXAMPLE_FILL_ARRAY procedure. We stop at the beginning of the procedure and look at the value of the IN_OUT_MESSAGE pointer. 050,03,00027-b %104 ADDR: UC.
TNS Program Example Sample Debug Sessions Resuming gives us these outputs: 050,03,00027-r DEBUG P=%000145, E=%000202, UC.%00-MEMORY ACCESS BREAKPOINTMEMORY ACCESS BREAKPOINT OCCURRED AT $PC=0x7E007EE4 EXAMPLE_FILL_ARRAY + %41 (UC.00) %000031:eN00.#PTAZJA............................ DEBUG P=%000145, E=%000202, UC.%00-MEMORY ACCESS BREAKPOINTMEMORY ACCESS BREAKPOINT OCCURRED AT $PC=0x7E007EF0 EXAMPLE_FILL_ARRAY + %41 (UC.00) %000031:en00.#PTAZJA............................
Accelerated Program Example Sample Debug Sessions The memory-access breakpoint is triggered when anything is written to the 16-bit word. In this case, we get two interrupts at EXAMPLE_FILL_ARRAY + %41: one when the "e" is put into the word, and another when the "n" is put into the word. This double interrupt is true only when the code putting the data in the memory location is doing byte operations and the code is not PRIV. The next break happens after the data is entered.
Accelerated Program Example Sample Debug Sessions PMAP Command We can enter TNS code breakpoints only at memory-exact and register-exact points. If we enter the PMAP command at a TNS location, we get a set of RISC code output that corresponds to the set of TNS code that performs the same functions. Below, the output shows that TNS address %5 is a register-exact point, which corresponds to RISC address 0x7042001C. (Note that 0x is omitted on the address output because of space constraints.
Accelerated Program Example Sample Debug Sessions We set a breakpoint at the next register-exact point and display the registers, as follows: 050,03,00032-b %13 @ ADDR: UC.%00,%000013 INS: %000107 SEG: %020737 INS: STRP 7 050,03,00032-r DEBUG P=%000013, E=%000317, UC.%00-BREAKPOINT050,03,00032-d * S=%000057 P=%000013 E=%000317 L=%000022 SP=UC.
Accelerated Program Example Sample Debug Sessions *** WARNING: TNS STATE MAY NOT BE WHERE YOU THINK IT IS *** S=%000063 P=%000013 E=%000317 L=%000022 SP=UC.
Accelerated Program Example Sample Debug Sessions This time the PROCESS_HANDLE array starting the program GLOBAL +1 should be initialized with nulls. We can confirm this by displaying the information: 050,03,00032-d 1, #10:H %000001: 0xFFFF %000011: 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF STOP Command We stop the program by entering the STOP command.
Native Program Example Sample Debug Sessions Native Program Example To show the use of Debug commands on a program compiled with a native compiler, we compiled the sample program in Example F-1 on page F-2 with pTAL as follows: Example F-3. pTAL Compiled Listing PTAL /IN demo1, OUT $S.#ldemo1/ tdemo1; optimize 0 Copyright (c) 1992-1995, Tandem Computers Incorporated Directives = ?OPTIMIZE 0 Source file: [1] \node.ndemo1 1998-07-08 14:53:11 7.010 8.100 8.101 8.110 8.220 8.230 8.300 8.301 8.302 8.304 8.
Native Program Example Sample Debug Sessions SEGMENT_PTR STRING EXT POINTER %H48 %H4 LOCAL VARIABLE 9.300 1 0 PROC example_main MAIN; 10. 1 1 BEGIN 11.020 1 1 INT error_main; 11.030 1 1 INT error_detail; 12. 1 1 example_init; 12.007 1 error_main := SEGMENT_ALLOCATE_ (1, 131064D, !filename;len!, error_detail); 12.020 1 1 IF error_main <> 0 THEN 12.021 1 1 DEBUG; 12.022 1 error_main := SEGMENT_ALLOCATE_ (2, 131064D, !filename;len!, error_detail); 12.030 1 1 IF error_main <> 0 THEN 12.031 1 1 DEBUG; 12.
Native Program Example Sample Debug Sessions Example F-4. noft Listing of pTAL Program ******** Out File : $s.#lnexp1 Object File : $NATIV1.CRGMAN.
Native Program Example Sample Debug Sessions Selecting a location near the end of the EXAMPLE_INIT procedure in our noft listing, we see that EXAMPLE_INIT is 212 (decimal) bytes long. To make sure we that get to the end of the procedure we want to work with, rather than a procedure that precedes it, it is important that we find the starting address of the instruction that is second from the end of the procedure.
Native Program Example Sample Debug Sessions Checking for Open Files We check for open files using the find (F) command. We find that there is no open file at this point in our example.
Native Program Example Sample Debug Sessions The length is the number of 32-bit words to display. The :H 2 part of the first command below breaks the output into two-byte hexadecimal groups. The :D part of the second command breaks the output into two-byte decimal groups. 050,03,00266-DN 0x08000000, 1 :H 2 08000000: 0x0001 0x0100 050,03,00266-DN $SP + %H7E, 1:D 4FFFFEAE: #00019 #23629 050,03,00266-DN $sp + %h80, #20/4 :A 4FFFFEB0: .\M5.. .$ZTN. .00.#. .PTUG. 4FFFFEC0: .RB0..
Native Program Example Sample Debug Sessions We can display the information in PROCESS_HANDLE by using two steps: reading the pointer address stored at $SP + %HB0 and then using that address to display the information in PROCESS_HANDLE. Alternatively, we can use the extended string indirect-clause in the address part of the display command.
Native Program Example Sample Debug Sessions 050,03,00266-I 0x70000570, (#320 / 4) 70000570: 7000057C: 70000588: 70000590: 7000059C: 700005A8: 700005B0: 700005BC: 700005C8: 700005D0: 700005DC: 700005E8: 700005F0: 700005FC: 70000608: 70000610: 7000061C: 70000628: 70000630: 7000063C: 70000648: 70000650: 7000065C: 70000668: 70000670: 7000067C: 70000688: 70000690: 7000069C: 700006A8: ADDIU sp,sp,-72 JAL 0x70000390 LI a1,1 ORI a2,a2,0xFFF8 SW $0,44(sp) OR s0,v0,$0 LH t7,70(sp) NOP BEQ $0,$0,0x700005D0 LUI a0,
Native Program Example Sample Debug Sessions Note. If a compiler optimization level other than 0 is used, it is unlikely that the return value from SEGMENT_ALLOCATE_ would be stored in memory. It would probably just be kept in a register. We can confirm that the JAL in the above sequence is a call to Debug by using the LMAP command: 050,03,00266-LMAP 0x7C369070 DEBUG (SLr) This does not work all the time.
Native Program Example Sample Debug Sessions have a nonzero value. First we display the location, then we modify the location. Finally, we display the location again. 050,03,00266-DN $SP + #70 :H 2 4FFFFF2E: 0x0000 0x0000 050,03,00266-D N $SP + #70 4FFFFF2E: 0x0000 050,03,00266-M $SP + #70, -#1 050,03,00266-DN $SP + #70 :H 4FFFFF2E: 0xFFFF0000 The ERROR_MAIN variable is 2 bytes or 16 bits out of a 32-bit word.
Native Program Example Sample Debug Sessions Clearing Breakpoints We view all the remaining breakpoints we have set, clear them, then show that they are gone: 050,03,00266-B N: 0x7000039C INS: 0x00002025 INS: OR a0,$0,$0 N: 0x7000045C INS: 0x03E00008 INS: JR ra N: 0x700005B0 INS: 0x87AF0046 INS: LH t7,70(sp) 050,03,00266-C * 050,03,00266-B Setting Breakpoints Within a Procedure In our first native code breakpoint example, we use the EXAMPLE_INIT procedure to emphasize debugging more on a global scope.
Native Program Example Sample Debug Sessions T Command We resume the program.
Native Program Example Sample Debug Sessions breakpoint that is at the end of the procedure. Using the ? command, we see that segment 1 is being used. 050,03,00266-r enter some data abcdefg DEBUG $PC=0x70000568 -RISC BREAKPOINT ($PC: 0x70000568)050,03,00267-? USE SEGMENT ID = %000001 BASE STANDARD IN BASE STANDARD OUT TERM \M5.$ZTN00.#PTUGRB0 PRV = OFF Displaying Data Using Q Address We can display some data in the selectable segment using the Q-address mode.
Native Program Example Sample Debug Sessions DN Command Then display the information shown under the “Displaying Data Using Q Address” using the DN command. 050,03,00266-DN 0x00080000, 1 : h 1 00080000: 0x01 0x00 0x00 0x00 050,03,00266-DN 0x00080000 + #40, #12/4 :a 00080028: ..abc. .defg. ......
Native Program Example Sample Debug Sessions VQ Command We switch to another selectable segment with the VQ command and modify the data in the segment in preparation to demonstrate the FN command. 050,03,00266-vq 1 050,03,00266-? USE SEGMENT ID = %000001 BASE STANDARD IN BASE STANDARD OUT TERM \M5.$ZTN00.#PTUGRB0 PRV = OFF 050,03,00266- M Q 0x2ff0, 'bc' FN Command We can use the FN command to find the location of a 16-bit word that matches a value. The value must be aligned on an even byte boundary.
Native Program Example Sample Debug Sessions = %00002000052 #524330 0x0008002A '...*' 050,03,00266-= 0x6263 = %061143 #25187 0x6263 'bc' Finding Bit Patterns If we want to find a bit pattern and do not care what is in the other bits, we can use masking. In the following example, we look for a "c" in the second byte of the 16-bit word and ignore the other bits. The "x" is the value we were looking for, and the 0x62, "b", was ignored when finding the match.
Native Program Example Sample Debug Sessions FNL Command We use the FNL command to find the 32-bit data. The value is 32-bit, so the address given must be aligned on an even quad byte. 050,03,00266-FNL Q 0 , '3456' 0008002C: 0x33343536 050,03,00266 (FNL)** DEBUG error 51: FNL reached address boundary.
Native Program Example Sample Debug Sessions Tracing Breakpoint Here, we demonstrate the breakpoint tracing capability. First, we run the program as follows: RUND ndemo1. We then set the base output to hexadecimal to make the outputs more familiar for native code programmers.
Native Program Example Sample Debug Sessions procedure after the SP register has been set up, so that we point to the correct location for ARRAY_NUM. First we run the program as follows: RUND ndemo1. 050,03,00267-b 0x70000478 N: 0x70000478 INS: 0x3C048000 INS: LUI a0,0x8000 050,03,00267-r DEBUG $PC=0x70000478 -RISC BREAKPOINT ($PC: 0x70000478)050,03,00267-c 050,03,00267-b 0x70000478, 0x4FFFFEEA > #16 N: 0x70000478 INS: 0x3C048000 INS: LUI a0,0x8000 %047777.
Native Program Example Sample Debug Sessions Next, we clear the code breakpoint and add a memory-access breakpoint on the data. We include a command string to make the breakpoint an execute breakpoint. 050,03,00269-bm $SP + %H4c, w, (TN; dn $SP + %H4c, %h30/4 :a; R) N: 0x4FFFFEB4 MAB: W (TN; DN $SP + %H4C, %H30/4 :A; R) 050,03,00269-r DEBUG $PC=0x7E007EE4 -MEMORY ACCESS BREAKPOINTMEMORY ACCESS BREAKPOINT OCCURRED AT $PC=0x7E007EE4 7E00.7EE4 4FFF.FE68 Mil 7000.04EC 4FFF.
Native Program Example Sample Debug Sessions DEBUG $PC=0x7E007EE4 -MEMORY ACCESS BREAKPOINTMEMORY ACCESS BREAKPOINT OCCURRED AT $PC=0x7E007EE4 7E00.7EE4 4FFF.FE68 Mil 7000.04EC 4FFF.FEE8 EXAMPLE_FILL_ARRAY + 0x88 4FFF.FE9C: 7000.0684 4FFF.FF30 EXAMPLE_MAIN + 0x114 4FFFFEB4: .evwx. .yzso. .me d. .ata.. 4FFFFEC4: ...... ...... ...... ...... 4FFFFED4: ...... ...... ...... ...... DEBUG $PC=0x7E007EF0 -MEMORY ACCESS BREAKPOINTMEMORY ACCESS BREAKPOINT OCCURRED AT $PC=0x7E007EF0 7E00.7EF0 4FFF.FE68 Mil 7000.
Privileged Commands Sample Debug Sessions Privileged Commands Certain commands and addresses are restricted unless PRV has been turned ON. This is allowed only when the user is the super ID (255, 255). In order to run the following commands, you need to be the super ID. Use Debug commands on another program running in the same processor. The environment to run Debug can be chosen arbitrarily. For our example program, we used the File Utility Program (FUP).
Privileged Commands Sample Debug Sessions USE SEGMENT ID = %002000 BASE STANDARD IN BASE STANDARD OUT TERM \M5.$ZTN00.
Privileged Commands Sample Debug Sessions commands). If we want to look at information in another PIN's PCB, or our own, we can use the PCB option on the D command. 050,03,00010-D PCB #265 + #8, 2 :h 80C26F28: 0xA8A8 0x0109 050,03,00010-= %ha8 = %000250 #00168 0x00A8 '..' 050,03,00010-= 0x0109 = %000411 #00265 0x0109 '..' In this example, we are looking at the PCB for PIN 265, starting at byte offset 8 for two 16-bit words. Byte 8 has the starting priority, and byte 9 has the current priority.
Privileged Commands Sample Debug Sessions 050,03,00010-? BASE SEGMENTS: SYSTEM DATA = %000001 SYSTEM CODE = %000005 SYSTEM LIB = %020400 V PIN = 411 (#265) USE SEGMENT ID = %000002 BASE STANDARD IN BASE STANDARD OUT TERM \M5.$ZTN00.
Privileged Commands Sample Debug Sessions While in privileged mode, it is possible to clear all the breakpoints set on all the processes in a processor. In this example, we first use the V command to go back to our own process and show the environment with the ? command. Then we show the breakpoint table before and after the C -1 command.
Privileged Commands Sample Debug Sessions Debug Manual—421921-003 F- 54
Glossary This glossary defines technical terms related to the design of the operating system, to HP system architecture, and to the Debug facility. The following definitions should help you interpret the information on using Debug. absolute extended address. An address that can be used, when the processor module is in privileged mode, to access any byte of virtual memory in the processor module. accelerate. To use the Accelerator program to generate an accelerated object file. accelerated mode.
code segment Glossary code segment. A segment that contains program instructions to be executed plus related information. Code segments cannot be altered by an application program; therefore, they are read from disk but are never written back to disk. complex instruction-set computing (CISC). A processor architecture based on a large instruction set, characterized by numerous addressing modes, multicycle machine instructions, and many special-purpose instructions.
high PIN Glossary users of the Guardian environment use the HP Tandem Advanced Command Language (TACL) or another HP product’s command interpreter. Contrast with Open System Services (OSS). high PIN. A process identification number (PIN) in the range 256 or higher. Home Terminal. )þ(1) The terminal from which a process is started. (2)þThe terminal from which the ENFORM command is entered.
monitor Glossary monitor. A system process that performs housekeeping tasks and creates and deletes processes in its processor module. named process. A process to which a process name was assigned when the process was created. Contrast with unnamed process. native-compiled RISC instructions. See RISC instructions. native mode. See TNS/R native mode. native object code. See TNS/R native object code native object file. See TNS/R native object file. native process. See TNS/R native process. native signal.
OSS signal Glossary OSS signal. A signal model defined in the POSIX.1 specification and available to TNS processes and TNS/R native processes in the OSS environment. OSS signals can be sent between processes. PFS. See process file segment (PFS). physical memory. The semiconductor memory that is part of every processor module. PIN. See process identification number (PIN). privileged mode. 1. The state in which privileged debugging commands are enabled.
program Glossary program. A set of instructions that a computer is capable of executing. program file. An executable object file. See to object file. reduced instruction-set computing (RISC). A processor architecture based on a relatively small and simple instruction set, a large number of general-purpose registers, and an optimized instruction pipeline that supports high-performance instruction execution. Contrast with complex instruction-set computing (CISC). register-exact point.
synthetic process ID Glossary synthetic process ID. An identifier that might allow an unconverted server process to communicate with a high-PIN requester process. A synthetic process ID has a PIN of 255. system. All the processors, memory, controllers, peripheral devices, and related components that are directly connected together by buses and interface wiring to form a cooperative processing unit. system name. The identifier for the node on which file access occurs. system number.
TNS/R native signal Glossary TNS/R native signal. A signal model available to TNS/R native processes in the Guardian and OSS environments. TNS/R native signals are used for error exception handling. trap. A software mechanism that stops program execution and holds the cause of a processing problem. In TNS Guardian processes, traps occur as the result of errors that prevent the continued execution of the code stream. Contrast with signal. trap handler.
Index Numbers 16-bit expression syntax 3-9/3-11 V command 4-71 VQ command 4-72 VQA command 4-73 32-bit address DJ command 4-40 DN command 4-41 format in expressions 3-10 syntax 3-14 T command 4-68 32-bit expression syntax 3-9/3-11 A A 3-1 A command 3-3, 4-3/4-4 A display option DN command 4-42 = command 4-73 Abnormal termination signal 1-8 Absolute extended address 4-19, Glossary-1 Absolute segment number 4-71 Accelerated program file 2-4 Accelerator 2-3/2-4 Accepting data, illustration 1-17 Access for deb
B Index B command (continued) setting breakpoints conditional code breakpoint 4-11/4-13 execute code breakpoint 4-15/4-16 trace code breakpoint 4-13/4-15 unconditional code breakpoint 4-7/4-10 B display option DN command 4-42 = command 4-73 B1 to B4 options, DN command 4-41 Base address 3-13 BASE command 3-5 persistence D-1 syntax 4-22/4-24 Base notation for expressions 3-9 Base representation setting 4-22 = command 4-73 Binary representation DN command 4-42 = command 4-73 BM command 3-1, 4-24/4-32 persis
C Index Breakpoint, memory-access (continued) persistence nonprivileged D-1 privileged D-2 setting conditional 4-26/4-28 setting execute 4-31/4-32 setting trace 4-29/4-32 setting unconditional 4-24/4-26 BY option, DN command 4-41 Byte address, using S indirection type 3-13 Byte offset, using index 3-13 Bytes, displaying, DN command 4-41 C C command 3-1, 4-32 C memory access 2-8, 4-25 Callable procedure 4-65 Calling Debug 1-4 undefined external procedure 1-7 Capitalization in commands 3-7 Carry bit 1-9 Ch
D Index Commands (continued) notation 3-7 overview 3-1 PAUSE command 4-63 persistence, nonprivileged D-1 persistence, privileged D-2 PMAP command 4-64 privileged 4-65 PRV command 4-65 R command 4-66 scope, nonprivileged D-1 scope, privileged D-1 STOP command 4-67 structure 3-6 summary breakpoint 3-1 convenience 3-5 display 3-3 memory-access breakpoint 3-1 modify 3-4 privileged 3-5 process control 3-6 syntax summary C-1/C-12 T command 4-68 V command 4-71 VQ command 4-72 VQA command 4-73 = command 4-73 ? co
E Index Debug (continued) DEBUG command 1-3 DEBUGNOW command 1-3 execution environment 1-16 how to use 1-13 interactive use, illustration 1-17 native mode 2-1 prompt 1-12 selecting as debugger 1-6 session 1-13, D-1 state 1-1 using on TNS/R processors 2-1/2-14 DEBUG procedure 1-5 Debugging options DEBUGPROCESS procedure 1-5 PROCESS_DEBUG_ procedure 1-5 DEBUGPROCESS procedure 1-5 DECIMAL option, BASE command 4-22 Decimal representation BASE command 4-22 D command 4-34 DN command 4-42 = command 4-73 Default
F Index E register (continued) TNS/R implementation 2-12 Ending a debug session 1-10 Entering debug state 1-2, 1-7/1-13, 1-15 ENV register D command 4-36 Debug message header 1-10 illustration 1-9 privileged bit 4-65 syntax 3-8 TNS/R implementation 2-12 tracing 4-68 = command 4-73 Erroneous arithmetic operation signal 1-8 Error messages A-1/A-25 ET command persistence D-2 Evaluation order 3-10 Execute access for debugging 1-2 Execute code breakpoint clearing 4-32 setting 4-15/4-16 Execute memory-access br
I Index HALT command description 3-5, 4-51 persistence D-2 Hardware environment register 1-9 Header message 1-10/1-13 HELP command 3-6 syntax 4-51 HEXADECIMAL option, BASE command 4-22 Hexadecimal representation BASE command 4-22 D command 4-34 DN command 4-42 expression syntax 3-9 = command 4-73 High word 3-10 Hold state 4-56 Home terminal Debug header message 1-10 specifying 1-4 How to use Debug 1-13 HP NonStop operating system Glossary-3 HP NonStop Series Glossary-3 HP NonStop Series/RISC Glossary-3 I
L Index L L register D command 4-36 syntax 3-8 TNS/R implementation 2-12 Leaving Debug 1-10, 4-45 Left shift operator 3-10 Library space, in ENV register 1-9 Licensed procedure 4-65 Limitations, notation in syntax 3-7 Limits exceeded signal 1-8 Line with multiple commands 3-6 LIST compiler directive 1-14 LMAP command 3-3 Load from an address 3-10 Lobug Glossary-3 Looptimeout signal 1-8 Low word 3-10 Lowercase letters in commands 3-7 Low-level debugging 1-1 M M command 3-4, 4-58/4-62 modify register conte
O Index No memory available signal 1-8 No memory available trap 1-7 Node name, in output-device syntax 4-4, 4-34, 4-37, 4-52, 4-64, 4-69 Node number, in Debug prompt 1-12, 4-23 noft utility, example 4-9/4-10 NonStop Open System Services Glossary-4 Number expression syntax 3-9 finding in memory 4-48, 4-49 signed/unsigned 4-42 Numeric representation default 1-13, 3-9 displaying default base 4-75 expression syntax 3-9 in expressions 3-11 setting the base 4-22/4-24 = command 4-73/4-74 O O display option, DN
P Index PIN DEBUG command 1-4 DEBUGNOW command 1-4 defined Glossary-5 in Debug prompt 1-12, 4-23 output-device syntax 4-4, 4-34, 4-37, 4-52, 4-64, 4-69 V command 4-71 PMAP command 3-3, 4-64/4-65 Print map 4-64/4-65 Privileged bit ENV register 1-9 TNS/R implementation 2-12 Privileged commands 3-5 Privileged mode authority 1-2 breakpoint attribute B command 4-12, 4-14, 4-16 BM command 4-25, 4-28, 4-29, 4-31 defined Glossary-5 description 4-65 Inspect 4-56 started in Inspect 4-56 ProcDebug option 2-4 Procedu
Q Index Processor (continued) TNS/R processors and Debug use 2-1/2-14 TNS/R registers 2-12 Process-ID parameter 1-5 PROCESS_DEBUG_ procedure 1-5 PROCESS_LAUNCH_ procedure 1-3 Program optimization of 2-4 suspending execution 1-14, 4-63 Program compiler directives 1-14 Program file 2-3, 2-4 Prompt 1-12 PRV command 3-5, 4-65 persistence D-2 Q Q segment 4-71 QA option, V command 4-71 R R command 3-6, 4-66 R display mode, I command 4-52 R display option, = command 4-73 R memory access 4-25, 4-27, 4-29, 4-31
S Index S register D command 4-36 syntax 3-8 TNS/R implementation 2-12 Saveabend file 1-6 Segment, memory-access breakpoint display format 4-19 SEGMENT_USE_ procedure 4-72, 4-73, 4-75 Selectable data segment addressing 3-16 setting current 4-71, 4-72, 4-73 Sequence number, in output-device syntax 4-4, 4-34, 4-37, 4-52, 4-64 Sequence number, in Syntax for an unnamed process 4-69 Session 1-13 Setting breakpoints at memory-exact points 2-8 conditional code 4-11/4-13 conditional memory-access 4-26/4-28 curren
T Index System code Debug header message 1-10 participating in execution environment 1-16 segment number 4-23 space for TNS/R processors 2-1 System global byte address, SG indirection type 3-13 System library Debug header message 1-10 segment number 4-23 System name defined Glossary-7 in output-device syntax 4-4, 4-34, 4-37, 4-52, 4-64, 4-69 System number defined Glossary-7 in Debug prompt 1-12, 4-23 System process Glossary-7 debugging 1-3, 1-5 System-assigned process name 1-2 T T command 3-3, 4-68 T dis
V Index Unconditional code breakpoint clearing 4-32 setting 4-7/4-10 Unconditional memory-access breakpoint 4-24/4-26 Uncorrectable memory error signal 1-8 Uncorrectable memory error trap 1-7 Uppercase letters in commands 3-7 User code Debug header message 1-10 segment number 4-23 space for TNS/R processors 2-1, 2-6 User library Debug header message 1-10 segment number 4-23 space for TNS/R processors 2-1 User process defined Glossary-8 executing with Debug 1-16 USESEGMENT procedure 4-72, 4-73, 4-75 V V c
Special Characters Index R command 4-67 = command 3-4, 4-73 = relational operator B command 4-12 BM command 4-28 R command 4-67 > display symbol for memory-exact point 4-18, 4-53, 4-65 > relational operator B command 4-12 BM command 4-27 R command 4-67 >> right shift operator 3-10 ? command 3-5, 4-75 ? option B command 4-14 BM command 4-29 @ display symbol for register-exact point 4-18, 4-53, 4-65 Debug Manual—421921-003 Index -15
Special Characters Index Debug Manual—421921-003 Index -16