Home
Links
Roadmap
Download
Documentation
Issues & Bugs

Last update: 2008-06-29
 
Survey

What frontend would you like to use for D debugging on windows?

Code::Blocks333
eclipse: descent281
Poseidon201
Microsoft Visual Studio102
a standalone GUI debugger63
Eclipse (CDT is GDB-compatible)62
entice designer31
emacs28
vim28
D-IDE11
Kdevelop10
d should be a complete product like delphi9
7-segment displays8
DSciTe8
SciTE (not DSciTe)7
slickedit5
Netbeans4
softice4
jEdit3
LEDS3
skyide3
printf2
Anjuta-D-support1
AtWIrFRi1
ebkrhaNz1
fNBLjiDT1
geany1
JqmiWJzO1
mine1

Locations of visitors to this page

Win32 Debugger for the D Programming Language

Please report any problem you encounter!

Bug reports, suggestions, etc. are very welcome. You can post them in the digitalmars.D.debugger newsgroup or write an email to Jascha Wetzel [firstname]@mainia.de

If you want to link directly to a Ddbg download, please use the following link, that will stay up-to-date:
http://ddbg.mainia.de/Ddbg-latest.zip

The source is available via SVN at https://svn.mainia.de/svn/ddbg/trunk/ under this License

Latest release

v0.11.3 beta (2008-02-01)
Changes:

  • fixed: more stack unwinding problems


Previous releases

v0.11.2 beta (2007-12-26)
Changes:
  • fixed: access violation when unwinding the stack

v0.11.1 beta (2007-12-16)
Changes:

  • fixed: skip symbol sections in codeview data if invalid lengths are found
  • fixed: added several composite pointer types to codeview parser

v0.11 beta (2007-12-02)
Changes:

  • debugging DLLs
  • load executables without debugging info
  • only intercept exceptions, don't handle them (continuing after an exception will invoke the program's exception handler)
  • print last known source location in stacktrace (e.g. if exception is thrown from within a runtime library call)
  • automatically switch to stackframe of last known source location on exception (configure behaviour with new jkf command)
  • added command el to set max evaluation length for arrays
  • ps prints source of current frame (function) by default
  • da, dal and ps respect the currently selected frame
  • use corrected CodeView types for char, wchar, dchar, bool in DMD 1.019/2.003
  • changed: ddbg doesn't ignore int3 instructions explicitly executed by the debuggee any more
  • fixed: demangle static local variables correctly (e.g. module.function.varname)
  • fixed: breakpoints set on wrong line if degenerate debug info present or multiple modules share source lines
  • fixed: absolute paths not accepted in bp command
  • fixed: dal disassembles from current address (should be line start)
  • fixed: "invalid UTF8 sequence" exception when printing non-UTF8 DLL names or exception messages

v0.10 beta (2007-06-24)
Changes:

  • Support for multi-threading (note for frontend developers: Ddbg's breakpoint messages changed!)
  • Post-mortem debugging using Minidumps
  • New commands (see Documentation for details): ldll, lt, mi, st, onex, onterm, rmd, wmd
  • Receive commands from debuggee via OutputDebugString
  • Adjusted exception handler switch to support new naming in upcoming Tango release
  • References to non-scalar data structres that are null do not consume an evaluation level
  • Expressions support full D integer literals syntax (0b101, 0x234, 76uL, etc.)
  • Signed integers allowed as indeces for arrays
  • Expression error messages with unmangled types
  • Cleaned up help
  • ddbg.exe packed with UPX
  • fixed: debuggee runs until termination if Ddbg is aborted with ctrl+c
  • fixed: command sequences from the command line execute until first "r", rest executes not until Ddbg terminates
  • fixed: stepping into virtual function with adjusted context frame pointer skips call
  • fixed: several problems in handling of static arrays
  • fixed: CodeView parser reads only lower byte of all length fields in type information
  • minor bugfixes

v0.09.2 beta (2007-06-15)
Changes:

  • fixed: expressions may not be constants
  • fixed: mangled types in error messages
  • changed: made strings not consume an evaluation level

v0.09.1 beta (2007-06-15)
Changes:

  • fixed: globals not enabled for evaluation
  • fixed: GDB emulation broken (wrong prompt)

v0.09 beta (2007-06-14)
Changes:

  • print source lines around current location
  • support for FPU, MMX and SSE register dumps
  • "-cmd" CL option to issue a list of Ddbg commands
  • ported expression parser to use ALLPaGeD
  • many expression bugfixes
  • support * dereferencing operator in expressions
  • support array properties in expressions
  • support for registers expressions

v0.08.1 beta (2007-04-25)
Changes:

  • print DLL names as ASCII when loaded (prevent invalid UTF-8 exception)
  • fixed: temporary breakpoints couldn't be set before the process was started
  • fixed: tbreak set permanent breakpoints

v0.08 beta (2007-04-24)
Changes:

  • changed inconsistent versioning to major.minor[.patch-level] (after 0.0.6, followed by 0.1, this is the eighth minor version)
  • single char, wchar, dchar characters printed as hexadecimal integer
  • non-recursive mode for evaluation of nested data structures ("er" command switches modes)
  • added typeof command "t" for Ddbg CLI, "whatis" for GDB CLI that prints the type of a Ddbg expression
  • support register call (e.g. "call edx") in stepping (used in some foreach loops and lazy evaluation for example)
  • try ".exe" if no file extension is given for debuggee on command line
  • reduced output width to 78 chars for help and memory dump
  • use ASCII output for potentially non-UTF8 strings
  • fixed: incorrect stepping behaviour in foreach loops with opApply that has source info
  • fixed: issue meaningful error if given file or line is invalid when setting a breakpoint
  • fixed: if "step in" is forced to "step over" due to lack of source info for call destination, temporary breakpoints got cleared
  • minor fixes/changes

v0.1.1 beta (2007-04-11)
Changes:

  • added memory validity check for expression evaluation (prevent crash when trying to interpret uninitialized symbols)

Note: the CLI mode selection has changed and with it the way Ddbg is called by Code::Blocks. See the documentation for details.

v0.1 beta (2007-04-11)
Changes:

  • use new OEM codeview types for dynamic and associative arrays and delegates (requires DMD 1.011)
  • stepping through foreach on structs, classes and AAs (those using opApply)
  • CL switch for CLI type, not using filename anymore
  • using AVL tree for faster handling of source line information
  • convert debuggee's data to UTF8 if invalid
  • minor bugfixes

Note: the CLI mode selection has changed and with it the way Ddbg is called by Code::Blocks. See the documentation for details.

v0.0.6.1 alpha (2007-04-02)
Changes:

  • fixed: breakpoints not reactivated when continuing immediately

v0.0.6 alpha (2007-03-30)
Changes:

  • type casts now allow template types
  • select frame command added to evaluate expressions on any stack frame in the call chain
  • added support for wchar and dchar evaluation
  • "da" starts at function beginning by default instead current address
  • indentation for output of nested data structures
  • fixed: global symbols couldn't be evaluated
  • fixed: only first of multiple symbols in a frame with same name evaluated
  • fixed: arrays of structs or unions not evaluated correctly
  • fixed: evaluation of static arrays not correct
  • fixed: evaluation of recursive data structures too restrictive

v0.0.5.3 alpha (2007-03-22)
Changes:

  • fixed: access violation in 0.0.5.2 when checking for recursive data structures
  • fixed: stack overflow still occured for entwined recursive data structures

Note: if using Code::Blocks, a nightly build from 2007-03-19 or later is required for "Step out" and "Run to cursor" to work correctly

v0.0.5.2 alpha (2007-03-22)
Changes:

  • fixed: stack overflow when evaluating recursive data structures (like linked lists)
  • fixed: exception when evaluating non UTF8 string data
  • fixed: crash when describing location in a source module segment with empty line info

Note: if using Code::Blocks, a nightly build from 2007-03-19 or later is required for "Step out" and "Run to cursor" to work correctly

v0.0.5.1 alpha (2007-03-21)
Changes:

  • fixed: long symbol strings resulted in assert exception
  • fixed: output debug string corrected

v0.0.5 alpha (2007-03-21)
Changes:

  • fixed: multiple source line segments per source file not handled correctly
  • use union handling fixed in DMD 1.009
  • added --fullname interpretation for GDB mode
  • fixed: some DDBG CLI commands crash the debugger if issued before the process is started
  • fixed: setting breakpoint not correctly rejected if source location not found

v0.0.4.5 alpha (2007-03-10)
Changes:

  • use changes in Tango SVN revision 1873 to make patch obsolete (see v0.0.4.4)

v0.0.4.4 alpha (2007-03-08)
Changes:

  • fixed: tango unaware deactivation of exception handling brakes stepping
To enable Ddbg to catch unhandled exceptions in Tango applications, you need to rebuild Tango's phobos.lib after changing in tango\lib\compiler\dmd\dmain2.d, currently line 83
bool trapException = true;
to
extern(C) bool trapException = true;

v0.0.4.3 alpha (2007-03-06)
Changes:

  • fixed: stepping in/over functions without debug symbols wasn't working correctly

v0.0.4.2 alpha (2007-03-06)
Changes:

  • fixed: datahandler for static arrays crashed

v0.0.4.1 alpha (2007-03-05)
Changes:

  • fixed: object references handled incorrectly by the expression evaluator

v0.0.4 alpha (2007-03-04)
Changes:

  • added type cast support for expressions
  • removed workaround interpreting manually mangled symbol names
  • added support for enums and associative arrays
  • optionally open debuggee in new console (default for GDB mode)
  • fixed: arguments can only be set via command line arguments
  • fixed: filename in GDB mode breakpoint ouput missing if source file can't be found

v0.0.3 alpha (2007-02-26)
Changes:

  • switch CLI depending on exe filename (GDB CLI activates if filename contains "gdb")
  • only break on unhandled exceptions (as opposed to every thrown exception)
  • display thrown object's class name
  • display exception message if thrown object is derived from object.Exception
  • stacktrace also displays names for linked functions (e.g. D runtime)
  • stacktrace displays parameter values
  • added workaround for Code::Blocks' buggy handling of step out
  • skip code w/o source symbols (e.g. jump directly to constructor when stepping into "new Foo()")
  • fixed: stepping into nested functions doesn't work
  • fixed: step over problems with loops and recursive functions
  • fixed: step out not working correctly
  • fixed: GDB command "disassemble" starts at current address instead of frame start
  • fixed: first command line argument to debuggee gets truncated

v0.0.2.3 alpha (2007-02-23)
Changes:

  • decoupled UI
  • added GDB emulation (works with Code::Blocks)
  • added generic struct/class datahandler

v0.0.2.2 alpha (2007-02-21)
Changes:

  • added debug build to archive
  • fixed: current source line not always detected correctly

v0.0.2.1 alpha (2007-02-21)
Changes:

  • fixed: function arguments not listed with "lsv"
  • fixed: preliminary array evaluation broken

v0.0.2 alpha (2007-02-21)
Changes:

  • own CodeView parser (dropped ddl.coff)
  • interpret structs and classes (requires DMD 1.007)
  • module names for addresses outside the debug info
  • "bp" without arguments sets bp at current loc
  • "dal" disassemble until next source line

v0.0.1 alpha (2007-01-22)