Debugging Screen and Keystrokes

Debugging Screen

The top of the initial debugging screen consists of a row of the 32-bit general purpose registers, two rows of the segment registers, and one row of CR0, CR2, and extended flags.

The rest of the initial debugging screen displays the instructions to be executed with the stack appearing on the right in one or two columns. If the current instruction references memory, the segment register, offset, and memory value of the reference are displayed on the line separating the registers from the instructions.

The line at the bottom of the screen is used to enter various commands. The following table summarizes the possibilities. The usual editing keys are available such as Left, Right, Home, End, Insert, Backspace, and Delete. Note that a colon (:) is used to separate a segment from an offset (Virtual 8086 Mode) and that a stile (|) is used to separate a selector from an offset (Protected Mode). The command line is parsed according to the grammar found in the file 386SWAT.GRM.

Command Line Recall

Commands entered on the command line are saved in a ring buffer whose length can be changed from the default of 1024 via the profile keyword CMDHIST=nnn.

Previous commands can be retrieved via the keystrokes Alt-< (previous command) and Alt-> (next command). Pressing either of these keys repeatedly scrolls through the buffer in the chosen direction. The keystroke Alt-? displays a history of (up to 24) commands from which a command can be chosen by scrolling up or down through the list, or by typing the letter next to the command. A command may be deleted from this list via the Del key.

Special Keystrokes

Special keystrokes available from the command line include:

ESC Continue processing. Equivalent to the Go command.
F1 Display a help screen with submenus.
F3 Display LDT entries.
F4 Display IDT entries.
F5 Display PTE entries.
F6 Display search screen.
F7 Display memory. While this display is active, Ctl-B displays in byte format, Ctl-W, in word format, Ctl-D in dword format, Ctl-V in vector format, Ctl-G in GDT format, Ctl-I in IDT format, and Ctl-T in TSS format.
F8 Display TSS entries.
F9 Display the instruction disassembly screen.
F10 Display screen on entry to debugger.
F11 Single-step the current instruction (see Padplus). This key as well as F12 are useful on systems without a Padplus/Padminus key, or ones for which those keys are difficult to type such as some laptops.
F12 Single-skip the current instruction (see Padminus).
s-F1 Goto the immediate CALL or JMP address of the instruction at the top of the screen and save the address of the current instruction (see Disassembly Bookmarks).
s-F2 Return from the previous s-F1 goto (see Disassembly Bookmarks).
s-F3 Goto the instruction on the top line (see Padstar).
s-F4 Display the last AutoFault message.
s-F5 Display the Real Mode Interrupt Vector Table.
s-F10 Save the current screen into the last screen buffers.
a-F1 Toggle intercept of INTs 01h/03h. The current state appears below the segment/selector register display as 01 or blank, 03 or blank. The default state is controlled by the presence or absence of the TRAPDEBUG keyword.
a-F2 Toggle intercept of INT 02h. The current state appears below the segment/selector register display as 02 or blank. The default state is controlled by the presence or absence of the TRAPNMI keyword.
a-F3 Toggle intercept of INT 0Dh. The current state appears below the segment/selector register display as 0D or blank. The default state is controlled by the presence or absence of the TRAPGENP keyword.
a-F4 Toggle intercept of INT 0Eh. The current state appears below the segment/selector register display as 0E or blank. The default state is controlled by the presence or absence of the TRAPPAGE keyword.
a-F5 Toggle stack display state between two columns of words and one column of dwords. The tick marks appear every 16 bytes.
a-F6 Toggle screen save state (eliminates screen flicker when single-stepping over instructions which don't write to the screen). The current state appears below the segment/selector register display as SS=ON or SS=OFF.
a-F7 Toggle video base (switch debugging screens in a two-monitor system).
a-F8 Display NDP (floating point) register screen. Use the same keystroke to remove the NDP screen.
a-F9 Display debug register screen. This screen remains active until it is replaced by another screen. That is, you may type on the command line, etc. while the debug register screen is displayed.
a-F10 Display previous debugging screens. This option can be used to compare changes over a single-step or single-skip. Up to sixteen previous screens can be displayed in this manner using the Up and Down arrows. To change from the default value of sixteen, use the keyword SAVESCREEN (see above).
a-F11 Display MMX and SSE2 register screen.
a-F Goto the far return address at SS:SP or SS|eSP (depending upon the current mode). If the current code segment is USE16, the far return address is assumed to be word:word (or word|word); if it's USE32, the format is assumed to be word:dword (or word|dword). This shortcut is equivalent to typing G .RETF at the command line.
a-N Goto the near return address at SS:SP or SS|eSP (depending upon the current mode). If the current code segment is USE16, the near return address is assumed to be word; if it's USE32, the format is assumed to be dword. This shortcut is equivalent to typing G .RETN at the command line.
a-< Retrieve the previous command from the command history buffer.
a-> Retrieve the next command from the command history buffer.
a-? Display the command history buffer.
c-F1 Toggle intercept of INT 01h only. The current state appears below the segment/selector register display as 01 or blank. The default state is controlled by the presence or absence of the TRAPSTEP keyword.
c-F2 Toggle intercept of INT 03h only. The current state appears below the segment/selector register display as 03 or blank. The default state is controlled by the presence or absence of the TRAPSKIP keyword.
c-F3 Toggle intercept of INT 06h only. The current state appears below the segment/selector register display as 06 or blank. The default state is controlled by the presence or absence of the TRAPINV keyword.
c-F4 Toggle intercept of INT 0Ch only. The current state appears below the segment/selector register display as 0C or blank. The default state is controlled by the presence or absence of the TRAPSTACK keyword.
c-F5 Display PDE entries.
c-F6 Display symbols.
c-F7 Display file browser.
c-F8 Enter CHAT mode. This allows two connected machines to test the serial port connection. What you type is displayed on the lower screen and sent to the other system; whatever is received is displayed on the top screen. If only garbage characters appear the two machines might not have the same data transfer rate set.
c-F9 Attempt to connect for remote debugging. See the section at the end of this document on remote debugging.
c-F10 Display error log.
c-F11 Single-step INT-like instruction in VM to PM, otherwise just single-step (same as c-Padplus).
c-Up Decrement the location pointer to the previous entry. This change has a different effect depending upon the type of information being displayed. If used in a data display, it moves back one data item (byte, word, dword, etc.). If used in a TSS display, the I/O ports in the I/O bit permission map scroll up.
c-Down Increment the location pointer to the next entry. This change has a different effect depending upon the type of information being displayed. If used in a data display, it moves forward one data item (byte, word, dword, etc.). If used in a TSS display, the I/O ports in the I/O bit permission map scroll down.
c-Home Place the current instruction at the top of the screen.
c-B Display memory in byte (xx) format.
c-D Display memory in dword (xxxxxxxx) format.
c-G Display memory in GDT format.
c-I Display memory in IDT format.
c-K Display Windows Kernel Debugger Structures menu. This menu may be displayed only when running under Windows as a kernel debugger. See WINKDBG.DOC.
c-M Display memory allocation chain entries based at the value assigned to MACBASE. By default, this value is the initial value of .DMAC.
c-T Display memory in TSS format.
c-V Display memory in vector (xxxx:xxxx) format.
c-W Display memory in word (xxxx) format.
c-Z Zap (convert to NOPs) the instruction at the top of the instruction disassembly window.
c-ESC Same as ESC, but if you're on an INT 03h, it skips over it first and then continues. If the current instruction is not an INT 03h, this keystroke behaves identically to ESC.
Padplus Single-step the current instruction (same as F11).
c-Padplus Single-step INT-like instruction in VM to PM, otherwise just single-step (same as c-F11).
Padminus Single-skip the current instruction (same as F12). That is, execute the current instruction and put a breakpoint on the instruction following. This is used to execute but not single-step through a CALL or LOOP instruction.
Padstar Goto the instruction on the top line (same as s-F3).
Up Scroll the screen up one line. This key has the same effect in almost all screen displays.
Down Scroll the screen down one line. This key has the same effect in almost all screen displays.
PgUp Scroll the screen up one page. This key has the same effect in almost all screen displays.
PgDn Scroll the screen down one page. This key has the same effect in almost all screen displays.
s-PrtSc Print the screen. Note that if either the previous application screen (F10) or one of the previous debugging screens (a-F10) is currently displayed, that screen is sent to the printer. The I/O port in the BIOS data area which corresponds to LPT1 is used.
Ctl-Alt-Del Reboot the system.