Some developers work on code hardening.
(protecting against errors, you can build with a stack protector for example).
However, if you're trying to redo a strange someone else reports, or find possible problems with the code, the reverse could be useful.
Are there well known ways to increase the chance an error in the code will lead to a crash?
Examples could include...
- Pack structs so accidental out-of-bounds access don't access padding bytes.
- Initialize stack & heap memory to random bits.
- Re-arrange executable in memory layout to expose errors.
(For whatever reason or 'good luck', some bugs will only impact specific configurations).
- Change thread scheduling to expose threading bugs.
So the question is:
Which existing methods of building software exist, that help expose errors in C/C++ applications?
Note, am aware of valgrind, address-sanitizer & rational-purify.