2023-02-07
The Symbolic Instruction Debugger, shipped with CP/M and the basis for DR-DOS's Debug.
Ancestor of MS-DOS Debug.
The original debugger, shipped with MS-DOS and the NTVDM for a long time. An early version lacking some features is included in the free software MS-DOS v2 release (under MIT License). I modded this to recreate some of the missing features of later versions, in the repo called msdebug.
The Driver Debugger Tool, optimised for the low memory and small visible screen size of the Atari Portfolio. Under GNU GPL v2-or-later. Can load and probe block device drivers, written to test an IDE driver for the Pofo. No assembler included.
A real-mode debugger with 486 disassembler (but 16-bit assembler), and a windowed interface. Under GNU GPL v2-or-later. Originally from the mid-1990s, got some development in the 2000s. I continued its development starting in 2018. I also more recently decided to base the Einsicht companion interface to lDebug on this.
Started in the 1990s by Paul Vojta, interface based on Microsoft Debug. Since 2003 or so development was continued by Japheth, adding DPMI support and many extensions. Ships with autorepeat for D, U, and T commands. Under MIT License.
Japheth's development of FreeDOS Debug eventually changed the project's name to DOS Debug/X. DebugX is the DPMI-capable build of this debugger, while Debug is the build that runs in Real/Virtual 86 Mode only. Still under MIT License, with Japheth's development noted as being in the public domain. Recently added a device driver build, a bootable build, and a Ring 0 Protected Mode build. Also added some features like video screen swapping and alternative video adapter output.
Non-free (not distributable) though source-available fork of FreeDOS Debug, created by a former PC-DOS kernel developer. Adds DW and DD data dump commands, a P command which proceeds until a return instruction has run, autorepeat for P command, and page flipping support.
FreeDOS Debug fork by me. Adds expression evaluator, autorepeat for P and G commands, TP command, general paging of long output, NASM-style disassembly and assembly, many runtime options, RE command buffer for trace register dump, RC command buffer and the /C command-line switch to initialise it, bootable and device-driver and resident (TSR) mode all in one generic build, debuggable and conditionally debuggable builds, buffered (silent) tracing, conditional tracing, permanent breakpoints, DW and DD commands, line editing and command history, G command keywords LIST, AGAIN, and REMEMBER, access variables to match memory accesses from R command disassembly, script file reading, serial I/O, AMIS interface and use, and a symbolic debugging build option. Some features like build time options for R86M interrupt 0Ch and 0Dh hooks, video screen swapping, alternate video adapter output, and a number of bugfixes were picked from DOS Debug/X development after the point lDebug was forked. lDebug is free software (under MIT License / Simplified 2-Clause BSD License / Fair License) and builds with a free software toolchain. It was originally forked to retain the NASM sources of FreeDOS Debug when DOS Debug/X changed the sources to JWasm.
The build process of lDebug is complex, and a default build of the debugger needs in excess of 100 KiB of resident memory. It is also likely slower than other debuggers.
TracList is a Perl script which listens to an lDebug session from a serial I/O connected terminal. It detects the last debugger disassembly and searches for matches in one or more listing files, displaying the result in its terminal TUI. It is designed to work with NASM listing files.
Einsicht is a planned companion application that is to connect to lDebug's serial I/O and re-implement Insight's windowed interface by communicating with an lDebug instance on another machine or VM.
This codename is for the planned releases of symbolic lDebug and its support scripts. The first phase was lDebug's symbolic branch. The second and current phase was achieved by merging the branch to lDebug's default branch as a build option. Future developments are planned to refine the symbolic support and expand the scripts.
Discussion
Insight appears to be based on a program called ACT. What that stands for, or what kind of application this was exactly, are unknown.
You forgot SoftICE https://en.wikipedia.org/wiki/SoftICE
which was (and is) the most powerful DOS debugger available. as it runs DOS in a virtual machine, it could be used to debug the DOS kernel itself, and was definitively used to debug the FreeDOS kernel.
it also could trace program execution, including only when executing in certain memory ranges (and running full speed when running anywhere else), trace only when writing to memory (using both 386 debug registers as well as page level memory protection), trapping writes to certain I/O ports, etc.
while it wasn't exactly free at $386, it was worth every cent if you do serious programming aka. debugging stuff.
you also forgot to mention MS CodeView. Seems you didn't do much programming in the pre 2000 timeframe;-)
Yes, that's right. I believe that it was also used to debug doslfn. However, I have never used it nor (intentionally) found inspiration from it, thus it isn't on the list.
Interesting, did it use paging for the "trace only in certain memory ranges" as well? That's the only way I can imagine that.
And the Turbo Debugger, and Watcom's Debugger, and D86/D386, …
That's right, I started learning programming in the mid 2000s.
DR-DOS Debug is another one I forgot. It is a derivative of SID likely, but changes the interface to be, in its standard mode, largely compatible to MS-DOS Debug. Some ideas from it probably inspired some lDebug features. For example, it also has an expression evaluator. Perhaps I will write about this more at some point.