User Tools

Site Tools


blog:pushbx:2023:0212_overview_of_debuggers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

blog:pushbx:2023:0212_overview_of_debuggers [2023-02-12 17:36:37 +0100 Feb Sun] (current)
ecm created
Line 1: Line 1:
 +====== Overview of debuggers ======
 +
 +**2023-02-07**
 +
 +===== SID =====
 +
 +The Symbolic Instruction Debugger, shipped with CP/M and the basis for DR-DOS's Debug.
 +
 +===== 86-DOS Monitor =====
 +
 +Ancestor of MS-DOS Debug.
 +
 +===== Microsoft 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.
 +
 +
 +===== DDT =====
 +
 +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.
 +
 +
 +===== Insight =====
 +
 +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.
 +
 +===== FreeDOS Debug =====
 +
 +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.
 +
 +===== DOS Debug/X =====
 +
 +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.
 +
 +===== Enhanced Debug =====
 +
 +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.
 +
 +===== lDebug =====
 +
 +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 - lDebug companion application ====
 +
 +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 - lDebug companion application ====
 +
 +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.
 +
 +==== Allegory - lDebug symbolic builds ====
 +
 +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.
 +
 +{{tag>ldebug einsicht allegory msdebug}}
 +
 +
 +~~DISCUSSION~~
  
blog/pushbx/2023/0212_overview_of_debuggers.txt ยท Last modified: 2023-02-12 17:36:37 +0100 Feb Sun by ecm