Debugger options
CLion supports debugging C/C++ executables with GDB (either bundled or custom) on all platforms and with the bundled LLDB on macOS and Linux. Also, there is an LLDB-based debugger for the MSVC toolchain on Windows.
Current versions of the bundled debuggers:
GDB v 10.1 for macOS
GDB v 10.1 for Windows
GDB v 10.1 for Linux
LLDB v 10.0.1 for macOS and Linux
LLDB v 9.0.0 for MSVC toolchain on Windows
For a custom GDB, CLion supports versions 7.8.x-10.1.
Switching between the debuggers
Go to Settings / Preferences | Build, Execution, Deployment | Toolchains.
In the Debugger field on the right pane, select the debugger for the current toolchain:
note
LLDB is set as the default debugger on macOS. However, if you had imported CLion settings from a jar file created in Windows or Linux, the default debugger will be set to the bundled or custom GDB version, as it was defined in the system of origin.
Debugger data views
In the Settings / Preferences | Build, Execution, Deployment | Debugger | Data Views | C/C++ dialog, you can customize the C/C++ type renderers.

Option | Description |
---|---|
Enable GNU library renderers | This option affects rendering STL containers by GDB when using the gcc compiler. In the case of clang used in pair with GDB, this option works for Currently this option is not applicable to LLDB. Check how LLDB (starting from version 9.0) handles |
Hide out-of-scope variables | Select this checkbox to hide non-initialized variables and the variables unavailable in the current scope from the Variables pane and inline view. |
Show hex values for numbers | This checkbox appears after you enable hexadecimal view in the Experimental Features dialog. |
STL renderers for GDB on macOS
Combination of GDB as the debugging backend and Clang (the CMake default compiler) implies limitations on viewing the content of STL containers on macOS. As a workaround, try the following instructions.
Use the
libstdc++
library instead oflibc++
. To includelibstdc++
in your project, add the following command in CMakeLists.txt:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
Alternatively, go to Settings / Preferences | Build, Execution, Deployment | CMake and specify the library in the CMake options field:
-DCMAKE_CXX_FLAGS="-stdlib=libstdc++"
note
libstdc++ provides support of C++ on the level of GCC 4.2.1. Refer to http://libcxx.llvm.org/ for details.
We also recommend you use the dwarf3 debug info format. For this, add the following commands to your CMakeLists.txt:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -gdwarf-3") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -gdwarf-3")
Using with .gdbinit/.lldbinit configuration files
Sometimes you may need to customize the debugger settings by passing commands and options into the .gdbinit/ .lldbinit file.
By default, CLion uses .gdbinit or .lldbinit from the user's home directory (~/.gdbinit or ~/.lldbinit, respectively). You can change this behavior and enable reading the debugger configuration file from the project root.
Enable reading .gdbinit/.lldbinit from the project root
Set the permissions in the home ~/.gdbinit file:
Globally
set auto-load local-gdbinit on add-auto-load-safe-path /
For a particular project
set auto-load local-gdbinit on add-auto-load-safe-path [full path to the project root]/.gdbinit
note
If you are working with the WSL toolchain, edit the .gdbinit file located in the Linux subsystem's home directory:
/home /[user] /.gdbinit
Adjusting GDB timeout values
You can control the GDB timeout values by setting the corresponding properties in CLion registry.
Go to the Help | Find Action (or press Ctrl+Shift+A) and type Registry:
In the dialog that opens, start typing cidr.debugger.timeout. Click the Value field of the highlighted string and enter the timeout value in milliseconds.
Configuring external GDB console on Windows
On Windows with GDB versions prior to 8.0, a separate console is used for application input/output. For the newer GDB versions, the output is redirected to CLion console by default. However, you can switch back to opening an external output window.
Go to the Help | Find Action (or press Ctrl+Shift+A) and type Registry:
In the dialog that opens, start typing cidr.debugger.gdb.workaround.windows.forceExternalConsole. Click the Value field of the highlighted string and enter the timeout value in milliseconds.