Attach to process
Run | Attach to ProcessCtrl+Alt+F5
CLion provides a way to attach the debugger to local processes. Attaching to remote processes is not supported at the moment (CPP-14316)
For C/C++ applications, you can attach to a process with GDB or MSVC LLDB on Windows, LLDB on macOS, and both GDB and LLDB on Linux. When applicable, debuggers for other languages (for example, Python debugger or Swift LLDB) can be used as well.
note
If you want to debug a program that can be started from CLion, the best way to do it is to start a local debugging session.
Prerequisites for Ubuntu users
If you are using CLion on Ubuntu (or probably, on some other Linux distribution), an error message ptrace: Operation not permitted may appear upon your first attempt to attach to a process. In this case, do one of the following:
To disable this restriction temporarily, enter the command:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
To disable this restriction permanently, open the
/etc file for editing and change the line/sysctl.d /10-ptrace.conf kernel.yama.ptrace_scope = 1
tokernel.yama.ptrace_scope = 0
.To apply the changes immediately, enter the above command
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
.Alternatively, run
sudo service procps restart
or restart your system.
You can find more details here.
Attach to a local process
Press Ctrl+Alt+F5 or choose Run | Attach to Process from the main menu.
CLion will show the list of the running local processes. Select the process to attach to.
tip
If there are processes running in WSL, CLion will detect them as well and suggest to attach to them with the WSL GDB debugger (if you have at least one WSL toolchain configured in your project):
If necessary, narrow down the list of processes by typing the first letters of its name or PID. If there are several debuggers that can be used for the selected process, you can choose among them in the popup menu:
tip
By default, you will not be able to attach the debugger to a process launched with
sudo
privileges. As a workaround, try running CLion under the same privileged user.Proceed with debugging the same way as you usually do it in CLion (set breakpoints, step through, pause and resume the process, evaluate expressions, and so on) :
Note that in case the process you have attached to does not provide debug information, breakpoints will be unavailable and stepping will be performed in the disassembly view.
Detach from a process
The procedure to detach from a remote process is the same as for stopping a local debug session, however, the effect is different. When you detach, the debugging session closes but the process continues to run.
Click the Stop
button on the main toolbar on in the Debug tool window.
Alternatively, click Stop
on the main toolbar or press Ctrl+F2, then select the session to be closed.