The present invention, generally speaking, "instruments" an arbitrary
software program, without changing the software program, to automate
malfunction detection and reporting. Although users can be invited to
enter a description of what the user was doing prior to receiving the
error, report generation and transmission to a remote server can be fully
automatic and transparent to the user. In the case of beta testing,
therefore, a software developer is guaranteed to receive all pertinent
information about malfunctions of an application without having to rely
on "fallible humans" for this information. The effectiveness of beta
testing, in terms of ultimately contributing to an improved product, is
therefore greatly increased. Various kinds of malfunctions may be
detected and reported, including an application "crashing," becoming
"hung," etc.