I often find in simulators that I want to distinguish the simulation code, the code actually needed to run, from the instrumentation code. The latter exists only for analysis of the results, but is not necessary if all you care about is functional correctness.
Information should only flow one way, from simulation code to instrumentation. Never backwards.
I have experimented with C preprocessor macrios like INSTRUMENTATION( perf_counter++ ), and so on, but these are clumsy. I will admitt hat INSTRUMENTATION: looks better than INSTRUMENTATION( )
If you use sch macros, you can always do #define INSTRUMENTATION(x) /*nothing*/
and test that it still compiles and runs tests.
However, simulation/instrumentation are just two phases of code.
Debug may be a another phase, at least read-only debug observation. (Sometimes there is active debug, that influences the actual running.)
Asserts are yet another phase. Different from debug, because you often leave them on.
In both debg and assert phases, information flows from program main phase to the phases.
How about server/client partitioning? Although in this case data flows both ways.
No comments:
Post a Comment