DGD Library README
Copyright (c) 2002-2006. Dimitry Kloper firstname.lastname@example.org
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).
- 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
- 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
- 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.
GNU Public License. See COPYING file in the DGD root directory.
- 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
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.
Please report bugs at
Please refer to the mailing list of the project at
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:
- Stable version. Incremented only on stable releases.
- Major version. Incremented only when major changes were mage.
- Build number. Incremented upon finishing of adding features or fixing bugs.
- 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.