Intel® Inspector Help
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.
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® 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:
Memory error analysis - https://software.intel.com/content/www/us/en/develop/articles/compiler-settings-for-memory-error-analysis-in-intel-inspector-xe.html
Threading error analysis - https://software.intel.com/content/www/us/en/develop/articles/compiler-settings-for-threading-error-analysis-in-intel-inspector-xe.html
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/ |