1. Disclaimer/Authors
2. Features
3. Introduction
4. Usage
5. Configuration
6. Debugging tools
7. UNIX gurus
8. Stack techniques
9. Known bugs
10. Contact me
11. Get 1.34
12. Get 1.2 (stable)
13. PDF manual
14. WinCE patch for 1.2
Back to HomePage
  Next Previous

6. Debugging - Other tools

  1. Visual C++ 6.0 Runtime Heap Debugging
    This only checks for heap corruption (i.e. destructive side-effects of writing outside the allocations) and even then, it only catches writings in the NO_MANS_LAND_SIZE (default:4 bytes) on either side of the blocks. The detection of these errors is done whenever the system calls _CrtCheckMemory(). HeapCheck catches read accesses as well, at the EXACT place they are made, and in a much larger block (a page in i386 systems is 4096 bytes).
  2. BoundsChecker
    This is a very good debugging tool, capable of catching almost every bug. However, CPU cycles are used in order to perform all these checks, and especially in instrumentation mode and maximum memory checking, the program runs really slow (some programs, like protocol stacks, won't run correctly if they run too slowly). HeapCheck can only catch heap-related errors, but it uses the paging hardware to do the checking. The net result is that HeapCheck debug versions of programs run at almost the SAME speed as normal debug versions (you only get slower allocating and de-allocating functions, nothing more). In other words you can leave it in your project and forget about it (it will be automatically removed when you compile a Release version).

Next Previous