Crypto++  8.2
Free C++ class library of cryptographic schemes
Classes | Macros
trap.h File Reference

Debugging and diagnostic assertions. More...

Go to the source code of this file.

Classes

class  DebugTrapHandler
 Default SIGTRAP handler. More...
 

Macros

#define CRYPTOPP_ASSERT(exp)   { ... }
 Debugging and diagnostic assertion. More...
 

Detailed Description

Debugging and diagnostic assertions.

CRYPTOPP_ASSERT is the library's debugging and diagnostic assertion. CRYPTOPP_ASSERT is enabled by CRYPTOPP_DEBUG, DEBUG or _DEBUG.

CRYPTOPP_ASSERT raises a SIGTRAP (Unix) or calls __debugbreak() (Windows). CRYPTOPP_ASSERT is only in effect when the user requests a debug configuration. Unlike Posix assert, NDEBUG (or failure to define it) does not affect the library. The traditional Posix define NDEBUG has no effect on CRYPTOPP_DEBUG or DebugTrapHandler.

Since
Crypto++ 5.6.5
See also
DebugTrapHandler, Issue 277, CVE-2016-7420

Definition in file trap.h.

Macro Definition Documentation

◆ CRYPTOPP_ASSERT

#define CRYPTOPP_ASSERT (   exp)    { ... }

Debugging and diagnostic assertion.

CRYPTOPP_ASSERT is the library's debugging and diagnostic assertion. CRYPTOPP_ASSERT is enabled by the preprocessor macros CRYPTOPP_DEBUG, DEBUG or _DEBUG.

CRYPTOPP_ASSERT raises a SIGTRAP (Unix) or calls DebugBreak() (Windows). CRYPTOPP_ASSERT is only in effect when the user explicitly requests a debug configuration.

If you want to ensure CRYPTOPP_ASSERT is inert, then do not define CRYPTOPP_DEBUG, DEBUG or _DEBUG. Avoiding the defines means CRYPTOPP_ASSERT is preprocessed into an empty string.

The traditional Posix define NDEBUG has no effect on CRYPTOPP_DEBUG, CRYPTOPP_ASSERT or DebugTrapHandler.

An example of using CRYPTOPP_ASSERT and DebugTrapHandler is shown below. The library's test program, cryptest.exe (from test.cpp), exercises the structure:

   #if defined(CRYPTOPP_DEBUG) && defined(UNIX_SIGNALS_AVAILABLE)
   static const DebugTrapHandler g_dummyHandler;
   #endif
   int main(int argc, char* argv[])
   {
      CRYPTOPP_ASSERT(argv != nullptr);
      ...
   }
 
Since
Crypto++ 5.6.5
See also
DebugTrapHandler, SignalHandler, Issue 277, CVE-2016-7420

Definition at line 69 of file trap.h.