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
the terms of the Artistic License
2.0
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)