Diagnostics is a unified framework for code annotation, logging, program monitoring, and unit-testing.

The annotations of diagnostics provide simple trace messages, tracing method entry and exit, checks (which potentially fail), asserts (which should never fail), invariance checking on method entry and exit, and a number of annotations for testing.

A program built with diagnostics can be compiled either at audit, debug, or production level. At audit level, each component is also checking its own correctness, e.g., each class checks its own invariance. At debug level, each component checks that it is used correctly, e.g., a method is checking its preconditions but is not asserting its loop invariants. At production level, only those checks remain which can fail on corrupt external input.

The annotations provide a stream of logging events which are delivered to number of loggers. A logger can select a number of logging events and write them to file, or it can be used by a software package to monitor failures and to react on them. In particular, a unit-testing logger checks for erroneous behaviour during unit-testing.


For Debian and Debian-based distributions see also http://packages.debian.org/diagnostics

Latest News

CfP: Workshop on Exploiting Concurrency Efficiently and Correctly (EC^2 2010)

The annual Workshop on Exploiting Concurrency Efficiently and Correctly (EC2) is a forum that brings together researchers working on formal methods for concurrency, and those working on advanced parallel applications. Its goal is to stimulate incubation of ideas leading to future concurrent system design an verification tools that are essential in the multi-core era.

Continue reading

Full news archive