The Instrumentation Detail page allows you to specify how lines are hooked and how many times a line visit is counted.
Two instrumentation settings affect how quickly the instrumented program will run:
•the hooking of very short lines
Most lines can be monitored using a normal line hooking technology. These hooks are fast but cannot be used for all lines.
Very short lines are hooked using breakpoint hooking technology which is very advanced but also incurs a serious performance penalty for each visit to that line.
•the counting of lines on every visit
Counting lines just once is quicker than doing it on every visit.
The instrumentation level lets you balance the detail of collected visit counts for every line against speed of execution.
•Incomplete but faster Short lines NOT counted. Lines counted once
•Incomplete but slower Short lines NOT counted. Lines counted every visit.
•Complete but faster Short lines counted. Lines counted once.
•Complete but slower Short lines counted. Non-breakpoint lines counted every visit. Breakpoint lines counted once.
For instruction sequences that are too short (less than 5 bytes) to be hooked, Coverage Validator has an additional method of hooking instructions.
Breakpoint instruction and operating system exception handler routines intercept individual breakpoint instructions and direct the exception handler to the original code for the line.
Due to the exception handling overhead for each instruction hooked this way this is a slower execution method than normal line hooking.
It is effective however, and allows Coverage Validator to hook most lines in most applications with no failures.
The only instructions that can't be hooked are breakpoints and the various x86 LOOP instructions, which are avoided by modern compilers.
There are two caveats to using the Breakpoint Hooks option.
You can't use them at the same time as:
•Running your application in the debugger (or attaching the debugger to your application) at the same time as using Coverage Validator to monitor the application.
The debugger will see the breakpoint exception before our hook on the exception handling mechanism.
•Using MAP files for release builds.
The information in the MAP file does not correctly identify the start of individual lines of code.
This is because the MAP file is produced before the linker optimizer re-arranges the code for the specified optimization flags.
Because it is not possible to differentiate between debug build MAP files and release build MAP files, Coverage Validator will not use Breakpoint Hooks with MAP files.
Reset All - Resets all global settings, not just those on the current page.
Reset - Resets the settings on the current page.