Borland Turbo Debugger

Turbo Debugger (TD) is a machine-level debugger for DOS executables, intended mainly for debugging Borland Turbo Pascal, and later Turbo C programs, sold by Borland. It is a full-screen debugger displaying both Turbo Pascal or Turbo C source and corresponding assembly-language instructions, with powerful capabilities for setting breakpoints, watching the execution of instructions, monitoring machine registers, etc. Turbo Debugger can be used for programs not generated by Borland compilers, but without showing source statements; it is by no means the only debugger available for non-Borland executables, and not a significant general-purpose debugger.

Although Borland's Turbo Pascal has useful single-stepping and conditional breakpoint facilities, the need for a more powerful debugger became apparent when Turbo Pascal started to be used for serious development.

Initially, a separate company, TurboPower Software, produced a debugger, T-Debug, and also their Turbo Analyst and Overlay Manager for Turbo Pascal for versions 1 to 3. TurboPower released T-Debug Plus 4.0 for Turbo Pascal 4.0 in 1988, but by then Borland's Turbo Debugger had been announced.

The original Turbo Debugger was sold as a stand-alone product introduced in 1989, along with Turbo Assembler and the second version of Turbo C.

To use Turbo Debugger with source display, programs, or relevant parts of programs, must be compiled with Turbo Pascal or Turbo C with a conditional directive set to add debugging information to the compiled executable, with related source statements and corresponding machine code. The debugger can then be started (Turbo Debugger does not debug within the development IDE). After debugging the program can be recompiled without debugging information to reduce its size.

Later Turbo Debugger, the stand-alone Turbo Assembler (TASM), and Turbo Profiler were included with the compilers in the professional Borland Pascal and Borland C++ versions of the more restricted Turbo Pascal and Turbo C++ suites for DOS. After the popularity of Microsoft Windows ended the era of DOS software development, Turbo Debugger was bundled with TASM for low-level software development. For many years after the end of the DOS era, Borland supplied Turbo Debugger with the last console-mode Borland C++ application development environment, version 5, and with Turbo Assembler 5.0. For many years both of these products were sold even though active development stopped on them. With Borland's reorganization of their development tools as CodeGear, all references to Borland C++ and Turbo Assembler vanished from their web site. The debuggers in later products such as C++Builder and Delphi are based on the Windows debugger introduced with the first Borland C++ and Pascal versions for Windows.

The final version of Turbo Debugger came with several versions of the debugger program: TD.EXE was the basic debugger; TD286.EXE runs in protected mode, and TD386.EXE is a virtual debugger which uses the TDH386.SYS device driver to communicate with TD.EXE. The TDH386.SYS driver also adds breakpoints supported in hardware by the 386 and later processors to all three debugger programs. TD386 allows some extra breakpoints that the other debuggers of the era do not (I/O access breaks, ranges greater than 16 bytes, and so on). There is also a debugger for Windows 3 (TDW.EXE). Remote debugging was supported.

Reception
BYTE in 1989 listed Turbo Debugger as among the "Distinction" winners of the BYTE Awards. Praising its ease of use and integration with Turbo Pascal and Turbo C, the magazine described it as "a programmer's Swiss army knife".

Turbo Debugger and emulation
Various versions of Turbo Assembler, spanning from version 1.0 through 5.0, have been reported to run on the DOSBox emulator, which emulates DOS 5.0.

The last DOS release of TD.EXE, version 3.2, runs successfully in the 32-bit Windows XP NTVDM (i.e., in a DOS window, invoked with CMD.EXE), but TD286.EXE and TD386.EXE do not. Hardware breakpoints supported by the 386 and later processors are available if TDH386.SYS is loaded by including "DEVICE= TDH386.SYS" in a CONFIG.NT file invoked when running TD.EXE.