Projects / NoBug


NoBug is a library which provides assertions, logging statements, and annotations for C and C++ programs. It includes pre-/post-condition and invariant checks, as well as generic assertions. Checks are enabled based on build-levels and scope tags. It also includes debugger support (valgrind), dumping of data structures, logging your application's activities, runtime customizable logging via environment variables, different logging targets (ringbuffer, stderr, syslog, debugger, etc.), and annotation of your source code regarding known bugs, things to do, and planned things. It can track resources and detect deadlocks.

Operating Systems

Recent releases

  •  20 Aug 2010 19:02

    Release Notes: Major documentation improvements. A PDF for a hard copy can now be generated. Some small bugfixes. A new experimental fault coverage checking facility that allows one to find out if all possible error paths are sufficiently handled. Functionality to reset the resource tracker to a pristine state.

    •  01 Jun 2010 22:01

      Release Notes: Improved support for non-gcc compilers (sun cc) and non-Linux OSes. NoBug is usable on Solaris now (some testsuite fixes are still pending). An obscure bug with C++ and the (there) unspecified __func__ keyword has been fixed by adding much improved compiler/language detection. Some Documentation improvements and cosmetics. There is a mailing list now.

      •  11 May 2010 22:33

        Release Notes: This release adds a PLANNED_TEST() macro to test.h to annotate planned tests. It adds a 'void* extra' parameter to the DUMP and INVARIANT macros to pass user data along. Invariant functions must be prefixed with 'nobug_', and all mpool functions with 'nobug_'. The library version number has been bumped. This release is slightly incompatible with older releases; fixes are trivial. This is a prerelease for review; some documentation improvements and a stable release will follow soon.

        •  03 Feb 2010 09:43

          Release Notes: Certain boring strings were replaced with a '-' in passed contexts. Multiline continued log lines have a special event mark (!) now. A race condition when starting threads accessing resources was fixed; this introduces the block syntax for resource tracker macros again. Programs have to be adapted to take advantage of this. The internal locking got a big overhaul.

          •  29 Jan 2010 07:27

            Release Notes: The logging core was refactored, so it now supports multiline logging. Log statements can contain newline characters, which will emit to multiple loglines atomically; resource dumping uses this feature. The nobug libraries are now properly versioned. Internal ringbuffer documentation was added. The ringbuffer guard pages can now be dynamically configured. Resource logging stays active in BETA builds in preparation for offline resource tracking. Release targets for make were improved, which means more frequent releases in future.

            Recent comments

            26 Dec 2010 23:41 ichthyostega

            for the time being, we use an (not officially anounced) debian package for the Lumiera project

            09 Sep 2009 03:34 ichthyostega

            coming soon: debian package


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.