A Compact 7 image can be configured in one of three modes:
Whereas a subproject, whether a driver or a native application, is configured separately and can have Debug mode enabled or disabled. That is, it is possible to have a Retail OS with a debug driver. When the operating system, driver, or application is built in debug mode, software symbols are inserted into the runtime as well as mechanisms to implement breakpoints and evaluate the state of those symbols when breakpoints occur.
There is also the Ship build option for Release mode to remove all debugging from the build. This would be used to implement a build for systems that are to be shipped. To implement this, set the environment variable WINCESHIP to 1 in the OS properties (where KITL and Kernel Debug are set). This defines the compile time flag SHIP_BUILD. This flag can be used to conditionally compile code. If set, the OS does not output debug messages. If not set, the OS implements the debug messaging.
A Debug build of the operating system has not been optimized, whereas a Retail build has been optimized for speed. A Checked build is a Debug build that has been optimized. Compared to a Retail build, a Debug OS build can take a long time to start up, whereas a checked build can start quicker than a Debug build. The level of support for debugging differs between OS builds, ...