| ← Prev | Next → | 
To compile with csi-cc, you must tell the compiler which tracing variants to create for each function. This page describes the methods for providing this data to csi-cc, and the format of the data.
If not otherwise specified, csi-cc will prompt the user for
tracing configuration (read from stdin) before compilation.
To specify a file containing appropriate tracing configuration, use the
--trace flag.  For example, to instrument every function with
path tracing and call-site coverage, you can the pre-built file provided with
this release, as follows:
csi-cc --trace=cc_pt.schema <input file>
A description of tracing schemes and customization can be found in the journal paper associated with this code release [2]. In brief: each function in the original program has one or more possible sets of tracing mechanisms that it can have active during a run. Each such set is called a tracing “scheme.” For example, the aforementioned file cc_pt.schema encodes that all functions in the entire program have a single scheme: call-site coverage plus path tracing. Another provided example schema, realistic.schema, creates three different variants for each original function:
A tracing schema is composed of an ordered list of matching rules. Each function in the program is instrumented based on the first matching rule. For example, the following schema:
foo;{};{CC}
*;{};{FC};{CC,PT}
indicates that any function named foo will have two variants:
The format grammar follows. Non-terminals are distinguished from terminals by capitalization, color, and italics.
| Rule_List | ⩴ | Rule ↵ Rule_List | 
| | | ε | |
| Rule | ⩴ | fn-name ; Scheme_List | 
| | | * ; Scheme_List | |
| Scheme_List | ⩴ | Scheme ; Scheme_List | 
| | | Scheme | |
| Scheme | ⩴ | { Mechanism_List } | 
| | | { } | |
| Mechanism_List | ⩴ | Mechanism , Mechanism_List | 
| | | Mechanism | |
| Mechanism | ⩴ | BBC | CC | FC | PT | 
| ← Prev | Next → |