# Opera debug and tracing tools

Opera debug module documentation

(The documentation for the debug module is now completely contained in the source code in doxygen format. Run `doxygen` in the `modules/debug/documentation/` directory to create the documentation if it does not exist.

Alternatively, have a look in Eddy's doxygenification of debug module.

## Tracing with `OP_DBG`

Note: This section to be moved

Tracing is provided for by the `OP_NEW_DBG(function-name, key)` and `OP_DBG(("fmt", …))` macros. In non-debug builds, the former declares an object and the latter calls a method on that object if the `key` is listed in your configuration file.

The configuration file is specified by passing it as the parameter to `Debug::InitSettings` during Opera initialization. Lines in it which start with a `#` character are comments (note that a `#` elsewhere in the line has no special meaning). Other non-empty lines either set one of a small family of pre-defined variables (mostly toggles taking value `on` or `off`) or name a `key` whose tracing statements are to be active. For example:

    # lines with first character # are comments
    # some global settings you might want:
    output=opdebug.out
    clearfile=on
    debugging=on
    #tracing=on
    #timing=on
    #timestamp=on
    #systemdebug=on
    #console=on

    # key values from OP_NEW_DBG(function, key) you want to exercise:
    debug_gif_decoder
    #voice
    #util.adt
    mail.engine.protocol
    animation
    DOM3LS
    # A single '*' on a line by itself enables all keys; i.e. everything is logged
    # *