The Hooked DLLs tab allows you to specify which DLLs should be hooked or not.
The default is simply to hook everything.
Read on, or click on a setting in the picture below to find out more.
By default, Coverage Validator will try to hook all DLLs and .EXEs used by your application, but you can choose to list only those which should be included or excluded:
•Hook all DLLs hook everything - ignoring the settings in the list
•Hook the enabled DLLs in the list hook only the ticked modules listed
•Do not hook the enabled DLLs in the list ignore all the ticked modules in the list, and hook everything else
The process modules list should specify the following items to be included or excluded from hooking in the target application
•folders containing DLLs and .EXEs
Initially the list is empty as the default option is to hook all DLLs and ignore the list. You can add modules to the list by:
•automatically adding modules on which your application is dependent
•manually adding modules or folders
•editing modules or folders already in the list
You can automatically populate the list with all the dependent modules for your application:
•Choose Exe... navigate to your application and click Open all the process modules appear in the list
You can also manually add one or more modules or a folder to the list.
•Add Module navigate to the DLL or EXE and click Open all the selected items are added
•Add Folder navigate to the folder and click OK the folder is added to the list
Manual addition might be useful for example if you use LoadLibrary() to load a DLL rather than linking it, as this would not be picked up automatically by the Choose Exe... method.
By default, all the modules are ticked in the yellow checkboxes.
Any DLLs in the list override the DLL Hook Insertion settings on the Hook Insertion tab.
Note that ticked modules or folders are either included or excluded depending on the hooking rule above
Although you can't add blank entries to the list and edit them, you can edit existing items in the list by double clicking on an entry:
•enter only the module name, not the path
•you can use wild-cards like MFC*.dll, but only for DLLs, not folders
The usual controls apply for removing or changing the enabled state of items in the list:
•Remove removes selected items in the list
•Remove All removes all items, clearing the list
•Enable All ticks all items in the list for applying to the hooking rule
•Disable All unticks all items in the list, meaning they won't apply to the hooking rule
Alternatively, press to delete selected items, and + to select all items in the list first.
Since the list of hooked DLLs (and the rule being applied) can be quite complicated to set up and optimise, you can export the settings to a file and import them again later. This is useful when switching between different target applications.
•Export... choose or enter a filename Save outputs the hooking rule and the list of modules to the file
•Import... navigate to an existing *.cvx file Open loads the hooking rule and the list of modules
The exported file can also be used with the -dllHookFile command line option.
•Don't hook delay loaded DLLs prevents hooking of delay loaded DLLs. The default is to hook these.
When specifying DLLs to hook, and launching different applications, it can be quite easy to forget to change the hooked DLLs for the new program. This might be the case when performing unit tests, for example.
Using the wrong list of hooked DLLs for a program will likely cause incorrect coverage results, so you can opt to be warned about the DLLs being hooked whenever the target application changes between sessions (using the dialog below).
The choices in the drop down list are only applicable when the application changes:
•Ask about DLLs to Hook settings if some DLLs defined
You'll only be asked about the settings if you defined some DLLs in the list and if the hooking rule is not set to hook all DLLs
•Always ask about DLLs to Hook settings
You'll always be asked about the settings - whatever the other settings are.
•Never ask about DLLs to Hook settings
You can update the settings; ignore them and launch anyway, or just cancel the launch:
•Update Settings and Launch edit the settings click OK the application will be launched
•Ignore Settings and Launch the application will be launched without updating the settings
•Cancel won't launch the application
To change when you are asked this question, just choose the appropriate option in the dialog.
There are a few system DLLs which are generally not much use when hooked for code coverage.
The source code for these DLLs is unlikely to be available, and even if it is, your application is unlikely to be able to influence the code coverage.
Consequently, by default these system files are not hooked - unless you override that by specifically including them in the process modules list above.
With the advanced options below, you can change this behaviour if you need to, letting you specify which DLLs will be processed according to the rules for Source Code Line Hook Insertion.
•Advanced shows the Hooked DLLs (Advanced) dialog for function and line profiling
In the Hooked DLLs (Advanced) dialog:
•Use the Hooked DLL settings... if selected then only the general settings apply (i.e. those on the Hooked DLLs tab)
•Use these default DLL settings... if selected then the checkboxes control the default behaviour for the relevant DLLs
The default is not to track functions in files in the following:
•MFC DLLs... check to cover MFC*.DLL or leave unchecked to ignore
•MSVC DLLs... check to cover MSVC*.DLL or leave unchecked to ignore
•STL support DLL... check to cover MSVCP*.DLL or leave unchecked to ignore
•the system directory... check to cover anything in C:\WINDOWS\SYSTEM32 or leave unchecked to ignore them
•Reset resets the settings in the dialog
Reset All - Resets all global settings, not just those on the current page.
Reset - Resets the settings on the current page.