1.. _Debug_Versus_Release_Libraries:
2
3Debug Versus Release Libraries
4==============================
5
6
7The following table details the |full_name|
8dynamic shared libraries that come in debug and release
9versions.
10
11
12.. container:: tablenoborder
13
14
15   .. list-table::
16      :header-rows: 1
17
18      * -     Library
19        -     Description
20        -     When to Use
21      * -    | ``tbb_debug``
22	     | ``tbbmalloc_debug``
23	     | ``tbbmalloc_proxy_debug``
24	     | ``tbbbind_debug``
25        -     These versions have extensive internal checking for correct use of the library.
26        -     Use with code that is compiled with the macro ``TBB_USE_DEBUG`` set to 1.
27      * -    | ``tbb``
28	     | ``tbbmalloc``
29	     | ``tbbmalloc_proxy``
30	     | ``tbbbind``
31        -     These versions deliver top performance. They eliminate  most checking for correct use of the library.
32        -     Use with code compiled with ``TBB_USE_DEBUG`` undefined or set to zero.
33
34.. tip::
35   Test your programs with the debug versions of the libraries first, to
36   assure that you are using the library correctly.  With the release
37   versions, incorrect usage may result in unpredictable program
38   behavior.
39
40
41oneTBB supports Intel® Inspector, Intel® VTune™ Profiler and Intel® Advisor.
42Full support of these tools requires compiling with macro ``TBB_USE_PROFILING_TOOLS=1``.
43That symbol defaults to 1 in the following conditions:
44
45-  When ``TBB_USE_DEBUG=1``.
46-  On the Microsoft Windows\* operating system, when ``_DEBUG=1``.
47
48The :ref:`reference` section explains the default values in more detail.
49
50
51.. CAUTION::
52   The instrumentation support for Intel® Inspector becomes live after
53   the first initialization of the task library. If the library
54   components are used before this initialization occurs, Intel® Inspector
55   may falsely report race conditions that are not really races.
56
57