21

While looking for a Windows XP download in the MSDN subscriber portal, I noticed this:

enter image description here

So, what is the Debug/Checked version?

Oliver Salzburg
  • 86,445
  • 63
  • 260
  • 306

2 Answers2

30

The debug/checked version is used for debugging device drivers. It contains run-time checks for error conditions and has run-time optimizations removed.

David Schwartz
  • 61,528
  • 7
  • 100
  • 149
  • 14
    Incase it isn't clear enough: This means that the debug/checked versions will run slower than the ones designed for consumer use. – Hengjie Nov 05 '12 at 02:40
1

In particular, interpreting the explanations, using a Debug/Checked version is only likely to help you if you are writing kernel-mode components (most likely drivers), or if you are relying on some third-party kernel-mode components that you believe might be buggy under the conditions that you place them in.

That is to say: the vast majority of developers (i.e. those developing application software — software that users interact with, regardless of whether it's "managed" or "unmanaged", command-line or GUI-based; in short, user-space code) don't need this at all, and shouldn't use it, because it is slower than mainstream versions of Windows.

So if you're not sure whether you need it, you almost certainly should avoid it. Conversely, if your work would benefit from it, then you would already be well aware of it (e.g. from wherever it was that you learnt how to go about kernel-mode development).

Evgeni Sergeev
  • 1,855
  • 4
  • 23
  • 37
  • Speed is utterly irrelevant during most testing. The reason most application developers don't use checked builds is that none of their code will even launch due to all the asserts. If all developers had to produce working code on checked builds, we'd be much better off. – EKW Aug 28 '15 at 20:18
  • @EKW `Speed is utterly irrelevant...` Not true. A lot of tricky bugs only come up when things start working fast enough to create the conditions for them. Especially subtle threading errors, async callbacks, etc. Sometimes you can even see it visually when running some ancient 16 bit application, e.g. very annoying flickering repainting. – Evgeni Sergeev Aug 29 '15 at 07:17
  • Hence "most cases." Eventually, you need to verify against a free or retail build of the OS. Applications generally, fail to make correct calls to OS functions or handle exceptions properly more often than they have concurrency issues, however. – EKW Aug 29 '15 at 19:16
  • Yeah, maybe applications on the moon. – Evgeni Sergeev Aug 30 '15 at 12:11