The debugger has a few interesting twists: It can load a block device driver (indicated by a cap-sensitive ".sys" filename extension) and prepare different request headers to call its strategy and interrupt entries with. And its disassembler supports some symbolic debugging with the use of name tables, which must be embedded in the executable being loaded.
Only can load flat-format .COM or flat-format .SYS files
Cannot load files larger than 64 KiB
Does not create a PSP for an application, including lack of a command line and DOS terminate calls will actually terminate the debugger's process
No auto-repeat of commands
R command shows registers in 4 lines, no disassembly (W command disassembles one line; T and N and C commands will act as W when they return control)
C command supports only one temporary breakpoint
Assumes that if a breakpoint is set by T, N, or C command that the breakpoint interrupt (int 3) is used to return control to the debugger, in order to restore the breakpoint contents
Does not support 386 register extensions
D, E, and U commands operate in the "I/O Segment" which needs to be changed with the S command and cannot be overridden for a single command
U/W command only supports 8086 instruction set
No assembler is included
First non-hexit after a number may be skipped even if it isn't a blank
Debugger is not debuggable
Source is in MASM / TASM / JWasm format
The names table only contains offsets, the segment is assumed to be the same as the executable's code segment (0-based for device driver, 100h-based for applications)
Names table symbols are not displayed at all when the linear matches but a different segment is used (whereas lDebug symbolic will show the symbol with a WRT specifier)
No expression evaluator, not even for specifying registers nor symbols from the names table
D command does not show symbols from the names table
No equivalent to Debug's H, M, C, F, or S commands
No permanent breakpoints
No way to proceed past loop
or repeated string instructions (N command only detects call
forms)
D and U command only accept start offset and a length, not start and end offset
No command for displaying the value of a single register
No variables or options other than the 14 CPU registers (8 GPR, 4 segregs, FL, IP)
Only numeric change of FL possible
No equivalent of lDebug's DW or DD commands