Atom: A system for building customized program analysis tools
ATOM (Analysis Tools with OM) is a single framework for building a
wide range of customized program analysis tools. It provides the common
infrastructure present in all code-instrumenting tools; this is the difficult and
time-consuming part. The user simply defines the tool-specific details in instrumentation
and analysis routines. Building a basic block counting tool
like Pixie with ATOM requires only a page of code.
ATOM, using OM link-time technology, organizes the final executable
such that the application program and user’s analysis routines run in the
same address space. Information is directly passed from the application
program to the analysis routines through simple procedure calls instead of
inter-process communication or files on disk. ATOM takes care that analysis
routines do not interfere with the program’s execution, and precise information
about the program is presented to the analysis routines at all times.
ATOM uses no simulation or interpretation.
ATOM has been implemented on the Alpha AXP under OSF/1. It is efficient
and has been used to build a diverse set of tools for basic block counting,
profiling, dynamic memory recording, instruction and data cache
simulation, pipeline simulation, evaluating branch prediction, and instruction
scheduling