To find potential problems as I developed the sample applications, I sprinkled chASSERT macros throughout the code. The chASSERT macro tests whether the expression identified by x is TRUE and, if it isn't, displays a message box indicating the file, line, and expression that failed. In release builds of the applications, this macro expands to nothing. The chVERIFY macro is almost identical to the chASSERT macro except that the expression is evaluated in release builds as well as in debug builds.