The debugger prompts for a command with a one character code followed by an exclamation point.
NOTE |
Commands are terminated by a carriage return. |
The !shell command submits a shell command.
Syntax
!shell |
Example
!ls -l |
The ? command displays help information. The UNIX file /usr/lib/pick/sdb.help displays using the pg command.
Syntax
? |
The ba command adds a breakpoint.
Syntax
ba{.}fid[.|,]disp bao{.}offset ba+{.}offset b{n} |
The effective address can be specified in several different ways:
The first line of the syntax is computed by adding the argument FID to the FID breakpoint offset, and the specified displacement to the displacement breakpoint offset defined by the bo command.
The second line of the syntax is specified by the FID, defined by the breakpoint offset and offset added to the breakpoint offset displacement set by the bo command.
The third line of the syntax is defined by the current value of R1to which the offset is added.
The fourth line of the syntax is defined by the current value of R1 to which the n * 4 is added. If n is not specified, 1 is assumed. This syntax is used for architectures having a fixed 4-byte instruction size (RISC).
The address must be at a virtual address boundary. Breakpoints are global for the whole virtual machine. Once the breakpoint is set, any process which triggers it, stops. Breakpoints are removed once they are encountered. A breakpoint should not be set into an ABS frame that has been write required (mloaded into). Up to three breakpoints can be set simultaneously. Once a setting is set successfully, a plus sign and breakpoint displays.
Breakpoints remain in action until they are explicitly removed or until the virtual machine is shut down.
The bd command deletes the breakpoint.
Syntax
bd[*|n] |
Parameter(s)
* |
Removes all breakpoints. |
n |
Specifies n from 0 to 2 and the specified breakpoint to be deleted. |
The bl command lists the monitor breakpoints.
Syntax
bl |
The bo command is the breakpoint offset. This command defines both the FID and the displacement, which are used in computing the effective address of a breakpoint in the ba command.
Syntax
bo{.}fid[.|,]disp |
The d? command displays or changes the default dump string.
Syntax
d? |
In case of system abort (for example, bus errors, segmentation violations, and so on), the system automatically dumps any critical elements in the file /usr/tmp/ap.core. The file can be examined with the apcrash command. After the display, the string can be changed by typing the new dump string after the equal sign. The dump string can have up to 15 characters, one-character codes and arguments. For the description of each code, see d command below. The dump string can be different for each process.
The d command dumps the D3 core memory to the UNIX file /usr/tmp/ap.core. The result of the dump can be examined with the apcrash command. The d command can be used after an incident to dump selected elements of the current D3 memory to investigate the problem.
Syntax
dcommand.string |
The UNIX file can be dumped to tape using the UNIX utility (for example, tar cv/usr/tmp/ap.core). The content of the dump is controlled by the command string, which is composed of the codes below.
NOTE |
Codes can be separated by commas for readability. The order of the codes in the command string is not important. |
The dump utility is automatically invoked in case of a system abort (for example, bus errors, segmentation violations, and so on) before entering the monitor debugger. What is dumped in this case, is controlled by a default dump string. The valid codes include:
a |
Dumps all. This option is equivalent to the command string "l,g,b,p,r,c,0,f1". |
0 |
Dumps the PCB of the current process. If the PCB is not attached at this point, then no operation is performed. |
b |
Dumps the buffer table. |
c |
Dumps the current process context. All forward and backward frame links currently attached to the process are dumped. |
f{.}n |
Dumps the FID n. If not specified memory, the frame is read from disk. |
g |
Dumps the global space. |
l |
Dumps the local (private) memory, not including the stack. |
p |
Dumps the PIBs. |
r |
Dumps the hardware registers. The registers are dumped in the same order as described in the monitor debugger x command (see x Command). |
s{.}start;[*|{.}size] |
Dumps the main shared memory segment. The start is the offset expressed in bytes, and the size is expressed in kilobytes. If an asterisk is used instead of the size, the entire shared memory segment, starting at the specified offset, is dumped. |
v{.}n: |
Dumps n virtual buffers. |
The e command toggles the debugger on or off. When off, prevents entry to the debugger by pressing BREAK. On line 0, the debugger is entered in some special cases even when the debugger is disabled.
Syntax
e |
The f command flushes memory. All frames modified in memory are written back to disk. If a disk error occurs, a minus sign displays.
Syntax
f{!} |
! |
Specifies all frames in memory, even those frames that are not write-required, are written to disk. |
The g command process resumes execution without any argument.
Syntax
g {fid.disp} |
Parameter(s)
fid.disp |
Specifies the FID displacement to which control is transferred to. FID is expressed as a relative offset in the current ABS. |
The gl command displays or removes group locks.
Syntax
gl{-} |
With no options, the monitor prints the status of the global group lock (with a G+ or a G-), and scans memory for any frames that are marked as locked. For each locked frame, the monitor displays the FID, the address of the buffer table entry, and all group lock information held in the frame itself.
To clear all group locks, type gl-.
To clear a specific group lock, type gl-{fid}.
NOTE |
Locks cleared from the monitor debugger can still display with the list-locks command. Such locks should be cleared with a clear-locks command when the virtual machine becomes accessible. In general, group locks should always be cleared with TCL commands only. The monitor debugger should only be used when system access is denied due to a lock set on a critical file (for example, the mds,, file). |
The h command displays internal information about the specified FID if it is in memory, message <NIM> displays, or FID is not in memory.
Syntax
hfid |
The content of the buffer table can be altered. Input is terminated with a carriage return.
carriage return |
Returns to the debugger. |
^N |
Next buffer table entry, following the age queue forward link. |
^P |
Previous buffer table entry, following the age queue backward link. |
^F |
Next buffer table entry, following the hash queue forward link. |
The k command terminates the process associated with the PIB pib or the flusher, if used with the F key, by sending a SIGTERM to it. If used with the W key, the k command waits up to 10 seconds for the process to terminate. If it does not terminate, a SIGKILL is sent to it.
Syntax
k{w}[f| pib] |
NOTE |
If the target process is in the monitor debugger or stuck on a semaphore, the SIGTERM signal has no effect until the monitor debugger or the semaphore is released. Killing exits the flusher ('k{w}f') and unconditionally logs off all processes and shuts down the virtual machine. |
The l command displays, in hexadecimal, the link fields of the frame FID.
Syntax
l fid |
Example(s)
frmn:frmp:npcf:clnk= nncf: number of next contiguous frame(s) frmn: forward link frmp: backward link npcf: number of prior contiguous frame(s) clnk: core link |
New values for the fields can then be entered, separated by commas, with an empty field to leave a field unchanged.
The m command displays or changes the real memory and the specified window at the real address.
Syntax
m{*}monitor.address{;window} |
Parameter(s)
* |
Uses the address as a pointer and its content as the monitor address. |
monitor.address |
Specifies the window and real address. |
window |
Specifies the area pointed to by the pointer. |
NOTE |
Access to an illegal address causes a segmentation violation or a bus error sending control back to the monitor debugger with an abort condition, from which it is impossible to recover. It is strongly advised to avoid absolute addresses, since they vary from implementation to implementation. |
The p command displays and changes the PIB. This command also displays the window bytes in the PIB specified by the PIB (that is, the current PIB if the PIB is omitted), at the optional offset.
Syntax
p{pib}{[.|,]offset}{;window} |
The q command quits the monitor debugger.
Syntax
q{!} |
! |
Optional parameter that bypasses the normal D3 termination and terminates the process abruptly. CAUTION—This form should be used only in extreme situations where even quitting from the monitor debugger aborts. |
Example(s)
The user is prompted:
Leaving the Monitor debugger terminates the D3 process. |
To confirm, type y (without pressing ENTER).
The r command displays data through the register.
Syntax
rreg{.disp}{;window} |
Parameter(s)
reg |
Points to data from 0 through 15. |
.disp |
Specifies the displacement that is added to the register displacement. |
The S command scans the buffer table bits and displays and/or clears them depending on the certain criteria.
Syntax
S[f|h|i|m|s|w]{-} |
Parameter(s)
- |
Clears instead of displays. |
f |
Referenced bit. |
h |
Hold bit. |
i |
Iobusy bit (disk read). |
m |
Temporary mlock bit. |
s |
Suppresses detail output and shows only the total. |
w |
Write-required bit. |
Description
The user specifies which bits to search for using the above options. When a buffer is found, it displays in a manner similar to that of the h command. The user may go backward or forward in the selection list using CTRL+P and CTRL+N. At completion, the total count of items is indicated.
NOTE |
The count is only accurate if forward movement only is used. |
The s command displays or changes the semaphore status.
Syntax
s [*|sem]{[?|+|-]} |
sem |
Specifies the semaphore expressed from 0 to 4. |
|
* |
Specifies all semaphores. |
|
+ |
Sets or locks the specified semaphore. |
|
- |
Unlocks the specified semaphore. |
|
? |
Displays:
where
|
If the owner PIB is not setup when the command is executed, the message pib=? displays. Re-enter the command again to set the owner PIB.
The t command sets and removes the monitor trace. A minus sign displays, acknowledging the removal.
Syntax
t{[mmonitor.address|fid.disp]{;window}} |
Description
This command can also set a trace on the specified area of memory starting at the monitor address or the area of memory associated to the FID displacement with a length equal to that window. If not specified, the default window or the size of the monitor element is used. The maximum window size on a monitor address is 32767. The maximum window on a virtual address is the frame size.
A plus sign displays acknowledging the setting. The memory is checked for any change at every virtual branch or call, and every frame fault. If the memory is changed, the monitor debugger is entered. When setting a trace on a virtual address, the frame is locked in memory. Removing the trace unlocks the frame if it was not locked when the trace was set.
The v command enters the Virtual Debugger with a specified code. If a code is not specified, enter the debugger as if pressing the BREAK key.
NOTE |
If the Virtual Debugger PCB is not set up, this command will display ADDR and fail. |
The x command displays hardware registers on the first line of the program counter, followed by a variable number of 32 bit registers.
Syntax
x |
Description
The information is implementation dependent:
For AIX: Registers r3 through r31.
For Linux: Registers edi esi ebp esp ebx edx ecx eax.