DGD Library
Version: | Updated: Thu Aug 10 16:56:59 2006
DGD News
Code Documentation
DGD Installation Guide
DGD at Sourceforge.net
Download DGD


Copyright (c) 2002-2006. Dimitry Kloper kloper@users.sourceforge.net

Available from http://sourceforge.net/projects/dgd


DGD (Depression Glass Debug) is simple, easy to use C++ ostream extension created with a goal to produce nice, readable and easy to understand trace logs. DGD has well-defined, layered architecture that allows using only parts of code in other projects.

DGD is tested on Linux (gcc-2.96 to gcc-3.4) and Win32 platforms (VC++ 6.0, 7.0, cygwin and mingw with gcc-2.96 to gcc-3.4).

Features list:

  • Provides channels which can be used as general purpose output formatters. DGD channels are simple extension of std::ostream which allow post-formatting. The output stream is treated as text log with optional maximum and minimum line width, indentation, character and word wrapping.
  • DGD channels can be turned on/off on the fly. Groups of channels can be selected by their names using regular expressions.
  • Provides output to files which can be automatically split by size or number of lines.
  • Provides simple, yet powerful mechanism for synchronizing all streams upon application exit or crash.
  • Provides output operators for many STL types, memory references and memory blocks.
  • Provides output operators for xxd(1)-like memory dumps.
  • Provides a set of useful macros allowing simplified use of DGD channels and ability to "compile out" DGD tracing code using a single -D option of the compiler.
  • Provides a mechanism for automatic command line options parsing.
  • DGD is NOT thread safe! This does not mean that DGD can't be used in multi-threaded applications. This does mean that it must be used with care.

Differences between DGD and other similar libraries:

  • DGD is not focused on specific type of output (e.g. syslog), nor on precedence of messages (e.g. NOTICE, WARNING, ERROR, etc...). Instead, DGD provides a flexible framework that allows easy implementation of the log streams, trace streams, xxd(1)-like dumps, etc...
  • DGD has no facilities for memory allocation debugging. There are good and reliable tools targeting this problem and there is no reason to create another one.
  • DGD tries to be as STL-compatible as possible.

License terms

GNU Public License. See COPYING file in the DGD root directory.

Required libraries

  • Some layers of DGD make extensive use of C++ boost (http://www.boost.org). You need boost 1.25.0 or later to compile DGD.
  • STLPort 4.5 (http://www.stlport.com) was used during DGD developing. It is recommended but not required.


Please refer to installation instructions in INSTALL file in DGD root directory.

Similar libraries

libcwd (http://libcwd.sourceforge.net/) -- full-featured debugging support library for C++ developers. This is a good library, but unfortunately it has no Windows port. Right now DGD has the same set of features for debug tracing.

log4cpp (http://log4cpp.sourceforge.net) -- Log4cpp is library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. Good library for syslog-like logging.

Bug reports

Please report bugs at

Mailing lists

Please refer to the mailing list of the project at http://sourceforge.net/projects/dgd.


This is small bug fix release. Main changes are:
  • I have created dgcons at http://sf.net/projects/dgcons. From now on, this is the primary build environment for DGD. Please send me an email if you don't like it.
  • Migrated to Subversion

After long period of silence I am releasing DGD-0.1.0. This is development version. Main changes are:
  • migrated from GNU autoconf and make to Cons
  • migrated from gnugetopt to clo++
  • changed prefix of the command line options from --debug to --trace
  • added articles to tutorial
  • added samles
  • changed versioning

Bad news for lazy guys
  • I have upgraded my compilers to msvc70 and gcc-3.3.2 so support for older ones is dropped. If you are interested, please write an appropriate Cons modules and let me know.
  • There are no more makefiles in DGD. I will try to invent some makefile generation scriptology, but until then you will need to get Cons working. See INSTALL file for more details.

I have changed DGD versioning. Now DGD version will have four numbers:
  1. Stable version. Incremented only on stable releases.
  2. Major version. Incremented only when major changes were mage.
  3. Build number. Incremented upon finishing of adding features or fixing bugs.
  4. Compilation number. Incremented automatically and is not part of official version.

Fixed Doxygen to generate right inner class names in HTML documentation. The DGD documentation is updated.
More News...

SourceForge.net Logo Powered by Mason Powered by Perl
Web design derived from Pasilda design found on www.oswd.org.
Copyright (c) 2002, 2003. Dimitry Kloper <kloper@users.sourceforge.net>