libcwd: The C++ Debugging Support Library - Reference Manual
Author: Carlo Wood
Description: C++ debugging support library with ostream debug output
Keywords: libcwd, debug output, debug facility, debug channel, object orientation, OO, C++, nested debug output, ostream, memory allocation, debugging, source file and line number

Main Page Reference Manual Namespace List Compound List Namespace Members Compound Members File Members

# Fatal Debug Output
[Writing Debug Output]

Collaboration diagram for Fatal Debug Output:

## Defines
#define | DoutFatal(cntrl, data)
| Macro for writing fatal debug output to the default debug object libcw_do .

## Detailed Description

Often an application needs to be terminated when a fatal error occurs (whether or not CWDEBUG is defined). Libcwd defines for these cases the macro DoutFatal.

This allows you to write

    if (error)
      DoutFatal(dc::core|error_cf, "An error occurred");

instead of the equivalent

    if (error)
    {
      Dout(dc::core|error_cf, "An error occurred");
      std::cerr << "An error occurred" << std::endl;
      exit(254);
    }

The big difference with Dout is that DoutFatal is not replaced with white space when the macro CWDEBUG is not defined.

There are two debug channels that can be used together with DoutFatal: dc::fatal and dc::core . The first terminates by calling `exit(254)`, the second terminates by raising SIGABORT, causing the application to core dump.

See also:
  Predefined Debug Channels
  Control Flags
  Defining your own debug objects