One the most important variables you need to control during debugging is the software itself. You need to be able to identify and re-create the same software in which the bug manifests. Specifically, you need to control the following:
The source that the software is built from
The tools used to build it
The options passed to those tools at build time
Any third-party libraries linked or shipped with the software
Building modern software can be an involved process utilizing many different tools that need to be invoked in a specific order and manner. Some teams choose to address this by having a long “How to build ProjectXYZ” document. A much better solution is to encode all this knowledge in software as part of an automated ...