1. A computer implemented method for monitoring the performance of a computer system while the computer system is executing a program, the program including a plurality of source code modules in the form of a high level language, comprising the steps of: compiling each source code module into a corresponding object code module and associated relocation table and symbol table; translating said object code modules into a linked code module and logical symbol table, said linked code module being in the form of an intermediate language, said intermediate language having instructions independent of a particular computer system hardware architecture; partitioning said linked code module into a plurality of basic program components using said associated relocation table and symbol table; tracing an execution flow through said plurality of basic program components of said linked code module using navigational routines prior to executing said linked code module to deduce structural information and execution flow information; while tracing the execution flow through said plurality of basic program components of said linked code module, locating, using said structural information, a specific program component to be monitored; inserting a call instruction in said specific program component to be monitored, said call instruction to transfer execution control to a user analysis routine to monitor said specific program component when said specific program component is executed in the computer system; generating machine executable code from said linked code module after inserting said call instruction; executing said machine executable code including said inserted call instruction in the computer system; and collecting performance data of the computer system by said user analysis routine.