The Hook Control page allows you to specify how some of the more 'awkward' lines of code are hooked.
Most of these options are fairly advanced. They are also mostly enabled by default, but as usual, we provide the ability to control the settings if needed.
Some lines of code are trickier to hook than others. By default Coverage Validator is quite zealous in performing the safety checks and enabling hooking of these lines.
If necessary, you can choose not to enable these hooks.
The options are:
•Hook 32 bit relative JMP instructions hooks lines with JMP instructions in them
•Hook return (RET and RETN) instructions hooks lines with RET or RETN instructions in them
•Hook short branches (Jcc) if possible hooks lines with short branches in them
(Jcc is a conditional jump)
•Hook long branches (Jcc) if possible hooks lines with long branches in them
When the compiler optimizes things it can move lines around relative to the original source code.
During instrumenting extra checks are added so that hooks can get correctly recognized/improved automatically.
•Compensate for compiler optimisation untick to switch off these extra checks
An additional option makes Coverage Validator more cautious when detecting the end of a function, to avoid overwriting the code for any function that follows.
•Detect end of functions with extra tests hook lines with JMP instructions in them
Finally Coverage Validator can synthesize coverage results for lines that simply could not be hooked.
Not all lines can have their coverage results synthesized, only those in the same execution path.
Using this option will not introduce errors into your coverage tests.
•Use synthetic coverage hooks synthesize coverage results - not on by default.
Reset All - Resets all global settings, not just those on the current page.
Reset - Resets the settings on the current page.