---
name: "DI"
section: "3"
platform: "linux"
package: "nana"
version: "2.5-12+deb7u1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/DI"
---

# DI(3)

verify assertions in C and C++ code using gdb(1)

## NAME

DI - verify assertions in C and C++ code using [gdb(1)](/gdb/1.md)

## SYNOPSIS

\#include \<DI.h\>

DI(exprn)

DIG(exprn,guard)

DIH(exprn,handler)

DIP(exprn,param)

DIGH(exprn,guard,handler)

DIHP(exprn,handler,param)

DIGHP(exprn,guard,handler,param)

DS(exprn)

## DESCRIPTION

The DI(exprn) checks that the exprn is true in the same way as [assert(3)](/assert/3.md).  It is however implemented by generating debugger commands from the source code and so only works if you run the command under a debugger after  source the command file generated by [nana(1)](/nana/1.md).

exprn - the expression to be checked.

guard - the expression is normally only checked if the guard is true.

handler - a macro which generates the code that handles the error condition.

param - a parameter which can be passed off to the handler. This can be used for identifying the assertion failure in a space-efficent manner, e.g. by copying it into a register before aborting.

See nana.info for details on configuring the behaviour on error detection, etc. You also need to include the nana library by using -lnana if you use the default setup.

In addition to the DI, DIG, etc DI.h also provides DN, DNG, etc which are  used to check that an expression is never true.

## SEE ALSO

[nana-clg(1)](/nana-clg/1.md), [nana(1)](/nana/1.md), [nana(3)](/nana/3.md), [I(3)](/I/3.md), [L(3)](/L/3.md), [DL(3)](/DL/3.md), [Q(3)](/Q/3.md) and nana.info.

The nana.info file is the primary documentation for this library.

## AUTHOR

Phil Maker \<pjm@gnu.org\>
