Enhanced DEBUG for PC DOS and MS-DOS Version 1.32b

Enhanced DEBUG is a DOS debugger compatible with the utility found in PC DOS and MS-DOS but with many more features. Enhanced DEBUG was originally developed by Paul Vojta and was maintained by Andreas "Japheth" Grech until version 1.25.

The enhanced DEBUG package includes DEBUG.COM which is a replacement for the standard DOS DEBUG and DEBUGX.COM which can debug DPMI client programs and has more features but uses more memory. The inclusion of some features are controlled by defines in the source code. DEBUG supports assembly and disassembly of all Intel x86 instructions up to the Pentium Pro (P6). Note EMS support is disabled by default because it is not useful to typical debugging. EMS support may be enabled by defining EMSCMD to 1 and rebuilding. Enabling EMS support will increase memory usage by 1.2KB. Enhanced DEBUG runs on DOS 2.0 and later.

Despite having more features than the standard DOS DEBUG, the enhanced DEBUG.COM uses less memory (though DEBUGX.COM which has even more features uses more memory):

DEBUG 1.32b         20.5KB
PC DOS 7.0 DEBUG    22.9KB
MS-DOS 6.22 DEBUG   23.0KB
DEBUGX 1.32b        25.5KB

The enhanced DEBUG source code may be built with JWasm, UASM, or MASM. The instruction set table builder program MKTABLES.C may be built with any ANSI C compiler such as the Microsoft C compiler or the Open Watcom C compiler.

DEBUG syntax:

DEBUG [/F] [[drive:][path]filename [arglist]]

  /F        enable page flipping
  filename  file to debug or examine
  arglist   parameters given to program

DEBUG commands:

assemble        A [address]                                     standard
compare         C range address                                 standard
dump            D[B|W|D] [range]                                standard
dump interrupt  DI interrupt [count]                            DEBUGX
dump LDT        DL selector [count]                             DEBUGX
dump MCB chain  DM                                              standard
dump ext memory DX [physical_address]                           DEBUGX   (define DXSUPP=1)
enter           E address [list]                                standard
fill            F range list                                    standard
go              G [=address] [breakpoints]                      standard
hex add/sub     H value1 value2                                 standard
input           I[W|D] port                                     standard
load file       L [address]                                     standard
load sectors    L address drive sector count                    standard
move            M range address                                 standard
set CPU mode    M [x|N|T] (x=0..6, N=no FPU, T=386 with 287)    DEBUGX   (define MODESETCMD=1)
name            N [[drive:][path]filename [arglist]]            standard
output          O[W|D] port value                               standard
proceed         P [=address] [count]                            standard
proceed return  PR                                              standard
quit            Q                                               standard
register        R [register [value]]                            standard
MMX register    RM                                              DEBUGX   (define MMXSUPP=1)
FPU register    RN                                              standard (enhanced in DEBUGX with define FPTOSTR=1)
toggle 386 regs RX                                              standard
search          S range list                                    standard
trace           T [=address] [count]                            standard
trace mode      TM [0|1]                                        standard
unassemble      U [range]                                       standard
view flip       V                                               standard
write file      W [address]                                     standard
write sectors   W address drive sector count                    standard
EMS allocate    XA count                                        special  (define EMSCMD=1)
EMS deallocate  XD handle                                       special  (define EMSCMD=1)
EMS map memory  XM logical_page physical_page handle            special  (define EMSCMD=1)
EMS reallocate  XR handle count                                 special  (define EMSCMD=1)
EMS show status XS                                              special  (define EMSCMD=1)

Enhancements for DEBUG 1.26:

Enhancements for DEBUG 1.27:

Enhancements for DEBUG 1.28:

Enhancements for DEBUG 1.28a:

Enhancements for DEBUG 1.28b:

Enhancements for DEBUG 1.28c:

Enhancements for DEBUG 1.28d:

Enhancements for DEBUG 1.28e:

Enhancements for DEBUG 1.28f:

Enhancements for DEBUG 1.28g:

Enhancements for DEBUG 1.29:

Enhancements for DEBUG 1.29a:

Enhancements for DEBUG 1.29b:

Enhancements for DEBUG 1.29c:

Enhancements for DEBUG 1.29d:

Enhancements for DEBUG 1.29e:

Enhancements for DEBUG 1.30:

Enhancements for DEBUG 1.30a:

Enhancements for DEBUG 1.30b:

Enhancements for DEBUG 1.31:

Enhancements for DEBUG 1.32:

Enhancements for DEBUG 1.32a:

Enhancements for DEBUG 1.32b:

Download DEBUG 1.32b - source and binary (152KB)

NOTE: This is standalone software which is freely available for use but should not be included as part of a collection or with any other software and should not be redistributed. Previous versions of this software are obsolete and also should not be redistributed.