Visible to Intel only — GUID: GUID-B629BBDA-E506-4657-B77D-08B7A34CA4F3
Visible to Intel only — GUID: GUID-B629BBDA-E506-4657-B77D-08B7A34CA4F3
Build Your Application
Follow these guidelines to build applications that produce the most accurate and complete Intel Inspector analysis results:
Ensure applications create more than one thread before you run threading analyses.
About Using Optimal Compiler/Linker Settings
You can use the Intel® Inspector to analyze memory and threading errors in both debug and release modes of C++ and Fortran binaries; however, applications compiled/linked in debug mode using the following settings produce the most accurate and complete analysis results.
Compiler/Linker Property |
Correct C/C++ Setting |
Impact If Not Set Correctly |
---|---|---|
Debug information |
Enabled (-g) |
Missing file/line information |
Optimization |
Disabled (-O0) |
Incorrect file/line information |
Dynamic runtime library |
Selected (-shared-intel for Intel(R) compilers; default or -Bdynamic for GNU compilers) |
False positives or missing code locations |
Basic runtime error checks |
Disabled (do not use -fmudflap) |
False positives |
Compiler/Linker Property |
Correct Fortran Setting |
Impact If Not Set Correctly |
Debug information |
Enabled (-debug or -g) |
Missing file/line information |
Optimization |
Disabled (-O0) |
Incorrect file/line information |
Dynamic runtime library |
Selected (-shared-intel) |
False positives or missing code locations |
Basic runtime error checks |
None (-check:none) |
False positives |
To learn more about options necessary to produce the most accurate and complete analysis results, see the following resources:
About Ensuring Applications Contain More Than One Thread
If you plan to run threading error analyses on systems with only one processor, you may need to take special steps to ensure applications create more than one thread:
Programming Model |
Possible Strategies |
---|---|
oneAPI Threading Building Blocks (oneTBB) |
When initializing an object of class tbb::task_scheduler_init, use the following function to force the creation of two or more threads: initialize (int), where int = 2 or higher. For more information, see http://www.threadingbuildingblocks.org/ |
POSIX Threads API |
Use the following function to create as many threads as you need: pthread_create. For more information, see http://www.unix.org/version3/ieee_std.html |
OpenMP* API |
Use the following to force the creation of two or more threads:
For more information, see http://openmp.org/wp/openmp-specifications/ |