This thesis examines the automated detection of program errors through the insertion of software instruments into the source to flag anomalies at run-time. Anomalies are located using data flow analysis and pointer checking.
Explicit state variables are eliminated using the address and size of an object as keys to an implicit state variable. Expressions are functionally instrumented, that is, instrumented without decomposition. Dead definitions are characterized by a new statement-based dead-on-all-paths criterion. Inefficient definition anomalies are flagged for live definitions which are dead on most paths. The handling of objects whose parts are in many states is elucidated. The utilization of reference-only states to detect parameter anomalies for certain languages is proposed. The pointer range error and the accompanying concept of ‘base’ are invented.
All of these innovations are original contributions to the field. The software tool DDF was written by the author to apply the above ideas to the C programming language.