D3 UNIX Debugger Commands

The debugger prompts for a command with a one character code followed by an exclamation point.

NOTE

Commands are terminated by a carriage return.

!shell Command

The !shell command submits a shell command.

Syntax

!shell

Example

!ls -l

? Command

The ? command displays help information. The UNIX file /usr/lib/pick/sdb.help displays using the pg command.

Syntax

?

ba Command

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 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.

bd Command

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.

bl Command

The bl command lists the monitor breakpoints.

Syntax

bl

bo Command

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

d? Command

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.

d Command

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.

e Command

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

f Command

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.

g Command

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.

gl Command

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.

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).

h Command

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.

k Command

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.

l Command

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.

m Command

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.

p Command

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}

q command

The q command quits the monitor debugger.

Syntax

q{!}

 

!

Optional parameter that bypasses the normal D3 termination and terminates the process abruptly.

CAUTIONThis 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).

r Command

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.

S Command

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.

s Command

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:

00: O pid=0985

01: O pib=0023

02:

03: O pib=001A

where

  • semaphore 0 is owned by the process with the PID number of x'0985'. Only semaphore 0 displays with the UNIX PID number instead of the D3 PIB number

  • semaphore 1 is busy, owned by the PIB x'23' and has at least one process waiting on it (W).

  • semaphore 2 is free.

  • semaphore 3 is busy, owned by process x'1A' but has no process waiting on it.

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.

t Command

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.

v Command

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.

x Command

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.