Many algorithms in the Polymake Template Library contain various plausibility
checks which help to discover some common programming errors such as array
boundaries violation etc. When an error condition is recognized, an
exception std::logical_error is thrown. The exception object
contains a short message describing the location and the nature of the
error.
If you want to investigate the cause of such an error using some
debugger program such as gdb, you can set a breakpoint at an
empty function break_on_throw, which is called immediately before
the throw statement is executed.
However, the plausibility checks are expensive, in general, and program's performance usually suffers badly. Therefore, they should be disabled as soon as the program being developed is considered to be correct. The disabling is made by means of C++ preprocessor directives, which implies that you must recompile your program with additional compiler options as described below.
The plausibility checks performed in the library are divided into a few
categories. Each of them can be enabled or disabled separately. To enable
a category, add a compiler option -Dname=1. To
disable, supply -Dname=0.
The default behavior, when no category is mentioned at all, is to enable all plausibility checks. It is announced with a preprocessor warning.
See also various compilation modi useful for client debugging.