User Guide

Contents

advisor-annotate.h and libittnotify.dll

This topic is provided for reference, but it should not be needed. If you read this because you believe you need it to understand a problem, please provide feedback (see the release notes for support information).
Code using
advisor-annotate.h
should work when running your application
regardless of whether or not you are running your application under Visual Studio
using
Intel® Advisor
on Windows* OS. However, should you run into problems, this topic provides a few implementation details that might be helpful to understand issues.
Each compilation unit that includes
advisor-annotate.h
, and that has one or more annotations in it, will have a global inline routine named
__AnnotateRoutine
. This routine is called from the various locations where you have used the
ANNOTATE
* macros, and will be used to invoke one or more routines in
libittnotify.dll
(on Windows OS) or
libittnotify.so
(on Linux* OS)
.
__AnnotateRoutine
is an inline function that will have only one copy per executable in your program. So, if you are only working on modeling semantic behavior in a single Dynamic Link Library (DLL), you will only have one copy of it in that one library. If you have multiple executables where you have annotations, there will be a single copy of
__AnnotateRoutine
for each executable.
When the
ANNOTATE
macros are used, the first one executed in a given executable attempts to load
libittnotify.dll
from the current path.
Once the library is loaded, calls from the annotations will go to the
__itt_model*
routines in the library. If an expected routine is not found, the code asserts.
The following figure shows what happens when you have a main executable and a DLL that both have annotations:
Showing a main executable and a DLL that both have annotations
Finally, the annotation routines -
__itt_model*
in the
.dll
- by themselves are only markers for a tool that interprets the calls. Unless the program is run under the tool, these routines will not do anything. The intent is that the application will run normally when it is not run under the tool.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.