1. A method for automatically diagnosing errors in a software system, the method comprising the computer-implemented steps of: automatically determining, by the software system, whether conditions associated with the software system warrant use of any diagnostic features that are not currently enabled; when the software system determines that the conditions associated with the software system warrant use of any diagnostic features that are not currently enabled, the software system determining which of a plurality of available diagnostic features should be enabled; and enabling one or more diagnostics features that the software system determined should be enabled.