Debug and release builds differ in two main characteristics. First, a program's debug
build contains symbol information placed in the object code by the compiler, whereas
the release code does not. Second, code in a debug build is not optimized, ensuring that the generated object code closely matches the original source code. Release code is almost always optimized.