little more sane watchdog handling, interrupt and break the watchdog
[nobug.git] / doc / overview.txt
blob3d3d27233b85d06ab364c64461ca2af9bf8ca9cd
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   * Debugger support (actions are only executed while running under a
16     debugger), currently only valgrind is supported
17   * Data structures can be dumped
18   * Application activities can be logged
19   * Runtime customizable logging via an environment variable
20   * Different logging targets to stderr, syslog, debugger, ...
21   * Annotation of your sourcecode about known bugs, things to do, etc.
22   * Tracking resources (files, locks, etc.) used by your program; help in
23     detecting misuse
24   * Detecting potential deadlocks
25   * Simulate errors by injecting faults
26   * Additionally, the NoBug project is used to maintain a script and
27     some tools to setup testsuites
29 In contrast to traditional debuggers, NoBug is a non-interactive debugger which
30 is linked to your application doing hard-coded tests in an efficient,
31 low-overhead way.
33 PARA What NoBug can not do;;
35 NoBug is a (macro-)library, it is not a C/C++ language extension. This
36 means that code must be called at runtime to benefit from the set up
37 contracts. Whats not tested is likely slipping through the net. Being
38 part of the program itself it is affected by memory corruption,
39 certain kinds of misuse may introduce new bugs (test expressions with
40 side effectsfor example).