The "go everywhere, do everything" theme of lDebug has gained a new feature: Conditionally Debuggable builds allow to switch between the non-debuggable mode (handlers are hooked when the debugger starts up and unhooked only when it terminates), and the debuggable mode.
In the debuggable mode, the prior debugger's handlers
are preserved in most of the debuggable application.
Only when calling the run
function,
the debuggable debugger sets up its own handlers.
That means a great majority of the debuggable's code
can be debugged using another instance of lDebug.
Traditionally, FreeDOS Debug would require a lower-level debugger like one built into a virtual machine to be debugged. In recent years build options were added to never hook interrupts 1 (trace interrupt) and 3 (breakpoint interrupt), allowing to debug most parts. However, these options imply that you cannot actually run a debuggee and have it return control to the instance that is to be debugged.