1. An instrumentation process for making changes to a software program during an execution of the software program by a machine having a processor and a memory in operable communication with the processor, the software program having a digital execution image which is being executed by the machine along an execution path during a current execution, the software program also having a pre-execution image which is stored in a computer-readable storage location apart from the execution image, the process comprising the steps of: obtaining in the machine memory an instrumentation context for the software program's execution image, wherein the obtaining step includes the machine executing at least one high-level programming language statement, and wherein the instrumentation context includes a set of function identifications which identify at least one function from the execution image which is in the execution path and also identify at least one other function from the execution image which is not in the execution path; querying the instrumentation context using a high-level programming language query which specifies at least one query criterion to be satisfied; receiving in the machine memory a query response which identifies one or more functions in the program's execution image that satisfy the query regardless of whether those functions have executed yet during the current execution of the program, the one or more identified functions referred to here as query-satisfying functions; and transforming a function body of at least one of query-satisfying functions in the program's execution image without thereby modifying the program's pre-execution image.