# Debugging Multithreaded Programs

The debugging of multithreaded programs discussed in this topic applies to both the OpenMP* Fortran API and the Intel® Fortran parallel compiler directives. When a program uses parallel decomposition directives, you must take into consideration that the bug might be caused either by an incorrect program statement or it might be caused by an incorrect parallel decomposition directive. In either case, the program to be debugged can be executed by multiple threads simultaneously.

To determine the correctness of and debug multithreaded programs, you can use the following:

- Linux* and macOS systems: gdb.

- Windows* operating systems: Microsoft Visual Studio* Debugger.

- Intel® Fortran Compiler debugging options and methods; in particular, debug and traceback options.

Parent topic: Debugging