by helping find both memory and threading errors that occur within programs. This can be very important, as memory errors
can be incredibly difficult to locate without a tool, and threading errors are often non-deterministic, which means that
even for the same input, they can show different behavior on different runs, making it much harder to determine what the issue is. Below is a list of errors that Intel Inspector can find. These are the more common errors, and for a longer list of problem types, you can find them on the [https://software.intel.com/en-us/inspector-user-guide-windows-problem-type-reference Intel website here].
[[File:Deterministic_diagram.png]]
'''It Intel Inspector can be used with the following'''
#OpenMP
#TBB (Thread Build Blocks)
#MPI (Message Passing Interface
'''== Memory Errors''' == # Memory errors refer to any error that involves the loss, misuse, or incorrect recall of data stored in memory. === Memory leaks ===# Memory corruptionThese are a resource leak that occurs when a computer program incorrectly manages to release memory when it is no longer needed. # Allocation and deallocation API mismatches This may lead to extensive response times due to excessive paging, leading to slower applications. # Inconsistent memory API usage # Illegal memory access=== Memory corruption ===# Uninitialized Memory corruption is when a computer program violates memory readsafety, things like buffer overflow and dangling pointers.
'''Threading Errors'''=== Allocation and deallocation API mismatches ===# Data racesThis problem occurs when the program attempts to deallocate data using a function that is not mean for the allocator used for the data. For example, a common mistake is when # Heap races# Stack races# Deadlocksdata is allocated using new[], a problem will occur if you just use the delete function, instead of delete[].
'''New ===Inconsistent memory API usage===This problem occurs when memory is allocated to API that is not used within the program. An API is a set of subroutine definitions, communication protocols, and tools for 2019'''building software, and when those tools are introduced into a program but not used, unneeded memory is used.
#Find persistence ===Illegal memory access===This is when a program attempts to access data the it does not have the right permissions to use. ===Uninitialized memory read===This problem occurs when the program attempts to read from a variable that has not been initialized. ==Threading Errors==Threading errors like missing refer to problems that occur due to the specific use of threads within a program. ===Race Conditions===Race conditions are defined as a condition where the output is dependent on uncontrollable events sequence or redundant cache flushestiming. (Persistent memory There are multiple types of race conditions, such asa data race is a type of race condition that occurs when multiple threads attempt to perform an emerging class of memory storage technology.)operation on shared data, a heap race that performs operations on a shared heap, #Detect deadlocks or a stack race, which performs on std::shared_mutex (C++17 standard)a shared stack.#Experience improved compatibility with some antiviruses.#Use ===Deadlocks===A deadlock is when a multiple processes attempt to access the same resource at the latest operating systems same time, and Microsoft Visual Studio*the waiting process is holding a resource that the first process needs to finish. = Testing Intel Inspector = You can find some online tutorials for [Intel Inspector here https://software.intel.com/en-us/articles/inspector-tutorials].
'''Levels of Analysis'''