Refactor logging core into multiple functions, support multi-line logging
[nobug.git] / doc / overview.txt
blob89127a6670e2b688248f8e504f731fa24fa541ba
1 ____
2 Everyone makes mistakes, but with NoBug you won't make them twice!
3 ____
5 Nobug is a debugging library for instrumenting C and C++ programs
6 inspired by ideas originating from Design-by-Contract.
8 HEAD- Overview;;
10 The following features are provided by NoBug:
12   * Three different check levels: from detailed to final no-overhead
13   * Scope tags: tell whenever a function or loop is considered to be bug free
14   * Precondition, Postcondition and Invariant checks and generic assertions
15   * Data structures can be dumped
16   * Application activities can be logged
17   * Runtime customizable logging via an environment variable
18   * Different logging targets to stderr, syslog, debugger, ...
19   * Annotation of your sourcecode about known bugs, things to do, etc.
20   * Tracking resources (files, locks, etc.) used by your program; help in
21     detecting misuse
22   * Detecting potential deadlocks
23   * Simulate errors by injecting faults
24   * Additionally, the NoBug project is used to maintain a script and
25     some tools to setup testsuites
27 In contrast to traditional debuggers, NoBug is a non-interactive debugger which
28 is linked to your application doing hard-coded tests in an efficient,
29 low-overhead way.
31 PARA What NoBug can not do;;
33 NoBug is a (macro-)library, it is not a C/C++ language extension. This
34 means that code must be called at runtime to benefit from the set up
35 contracts. Whats not tested is likely slipping through the net. Being
36 part of the program itself it is affected by memory corruption,
37 certain kinds of misuse may introduce new bugs (test expressions with
38 side effects for example).