Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Main Features

Example debugger session showing some features

  • conversion of DMD/DMC CodeView information to PDB file
  • conversion of GDC DWARF information to PDB file
  • converted line number info allows setting breakpoints
  • display of variables, fields and objects in watch, local and auto window and in data tooltips
  • convenient display of dynamic and associative arrays in watch windows
  • demangled function names for convenient display of callstack

More features

This list is a bit more technical and shows what is actually done to achieve the desired functionality:

  • replaces '.' in class names with '@' to avoid confusing debugger
  • converts class pointers to reference for "clss.field" syntax
  • converts the type of member function, so that "this" is an object pointer, allowing the debugger to display fields without "this."
  • generates generic debug info for dynamic arrays, associative arrays and delegates
  • creates readable type names for display of D specific types
  • autoexp.dat formats output for dynamic and associative arrays in watch windows
  • autoexp.dat filters display of null references
  • adds object class debug info
  • "char[]", "wchar[]" and "dchar[]" (D1) or "const char[]", "const wchar[]" and "const dchar[]" (D2) translated to "string", "wstring" and "dstring", respectively
  • converts type delegate<void*,int> to __int64
  • addin dviewhelper.dll allows correct display of D style strings and derived object type

Known issues

There are some quirks that you might run into when using Visual Studio to debug D programs. These will hopefully be removed in the future, but not all have a known solution.

  • has to use '@' instead of '.' in class names to avoid confusing debugger, but it looks ugly
  • "this.var" is not a valid debugger expression, you have to use "var" or "this->var"
  • global/static vars have to be watched with full module and class name specified (e.g. module@globvar)
  • type of associative arrays is displayed as aa<*> to allow overload in autoexp.dat
  • DMD does not emit different debug information for const and invariant, type info is the same
  • type display of delegate does not have arguments

Attachments

  • cvtest.jpg (130.0 kB) -Example debugger session showing some features, added by sagitario on 05/08/09 16:16:11.