Some languages are designed to guard you against making seemingly common errors through a series of compile- and run-time checks. These include checking the type of arguments to functions and operators and making sure mathematical overflows are caught at run time. Checks such as these help to ensure a program's correctness once it has been compiled by eliminating type mismatches and providing active checks for range errors when your program is running.
By default gdb checks for these errors according to the
rules of the current source language. Although gdb does not check
the statements in your program, it can check expressions entered directly
into gdb for evaluation via the print
command, for example.