Integration by Interception

This section discusses the integration technique called interception, which captures the most complete IO behavior of your programs. This gives the most correct dependency graph for the flow, but in some cases this may be more detail than is wanted.

By interception, we mean that FlowTracer interposes a thin layer between your tool or program and the operating system itself, so that whenever the tool uses a file, that IO behavior is reported to FlowTracer.

There are two kinds of interception available, library-based interception and OS-based interception.

Library-based Interception

Most modern operating systems support the concept of dynamic-link libraries. Programs using dynamic-link libraries do not contain all the code necessary to execute, but have external references which are satisfied by the dynamic linker at the time the program is launched. There are many benefits to dynamically-linked programs, including smaller executable sizes, reduced memory consumption due to shared code, and easier maintenance.

When using library-based interception, FlowTracer installs its IO library before the system standard IO library. The FlowTracer library picks off the names and opening modes of the files your tool uses, then passes the call on to the regular system library. This way, your program does not need to be relinked or otherwise modified, and it behaves the same as when not using FlowTracer. More platform-specific information about library-based interception is available. Library-based interception is activated by using the FlowTracer vrt wrapper program in front of tool command lines.