System Debug Reference Manual (32650-90888)

Chapter 4 87
System Debug Command Specifications :-Exit
B (break)
The virtual address specified does not exist. (error #1407)
$nmdebug > errl
$28: The virtual address specified does not exist. (error #1407)
$28: The virtual address does not exist. (error #6017)
$28: VADDR= 115.15c74
$28: A pointer was referenced that contained a virtual address outside
of the bounds of an object.
The above example starts by showing that Debug has stopped in the group library in the
average procedure. The B command was used to set a breakpoint at the address specified
in r2, and this caused the command to fail. Recall that the B command assumes that the
breakpoint is to be set in the program file when only an offset is provided. The SID for the
program file ($115) is retrieved, and a long pointer is generated by performing a STOLOG
conversion. The resulting address ($115.$15c74) does not exist in the program file; thus an
error is generated.
$nmdebug > bg r2
added: NM [3] GRP 118.00015c74 ?average+$8
$nmdebug > bd 3
deleted: NM [3] GRP 118.00015c74 ?average+$8
The BG command is used to set a breakpoint at the offset indicated by the contents of
general register 2. This command assumes the breakpoint is to be set in the group library.
The SID for the group library ($118) is retrieved, and a long pointer is generated by
performing a STOLOG conversion. The resulting address ($118.$15c74) is a valid group
library virtual address, and so the breakpoint is set. The address corresponds to the export
stub for the average procedure. Refer to the
PA-RISC Procedure Calling Conventions
Reference Manual
for an explanation of the use and purpose of export stubs.
$nmdebug > bv r2
added: NM [3] GRP 118.00015c74 ?average+$8
$nmdebug > bd 3
deleted: NM [3] GRP 118.00015c74 ?average+$8
The BV command is used to set a breakpoint at the offset indicated by general register 2.
Unlike the above example, the offset in r2 is converted to a long pointer by performing a
STOL conversion. The resulting address (sr4.r2 = $118.$15c74) is a valid group library
virtual address, and so the breakpoint is set. A full long pointer is always valid, so the
command b 118.r2 also results in the breakpoint being set.
$nmdebug > b P_INIT_HEAP
added: NM [8] USER f4.0012f2b8 p_heap:P_INIT_HEAP
$nmdebug > bu xl.pub.sys U_INIT_TRAPS
added: NM [9] USER f4.001f9188 U_INIT_TRAPS
The above example sets a breakpoint at the procedure P_INIT_HEAP. The routine was
found in one of the loaded user libraries (this process only has one loaded user library).
The BU command is used in the second example to specify which user library to search
when looking for procedure names. The U_INIT_TRAPS routine was found in the user
library XL.PUB.SYS and a breakpoint was set.