Remote development
There are several options for remote development in CLion, each targeting a particular setup:
WSL2,
Docker (running locally*),
and two variants of gdbserver/lldb-server debug, Remote Debug (GDB/LLDB) and Remote GDB Server (GDB only).
Watch this webinar recording and refer to the tables below for a summary on remote development options in CLion:
Tables below can help you decide which of the remote options to choose depending on various factors, such as the combination of your local OS and your remote OS, the project model you are working with, whether building on target is required, and so on.
Remote options: System and IDE configuration
Gateway vs remote with local sources
Remote with Gateway | Remote with local sources | |
---|---|---|
IDE running | Remotely | Locally |
Local OS | macOS / Linux / Windows | macOS / Linux / Windows |
Remote OS | Linux, including WSL2 | Linux |
Connection protocol | SSH / Space integration / Gitpod | SSH |
Required tools | CLion or Standalone Gateway on the local machine, CLion on the remote machine (can be installed via Gateway) | rsync for macOS / Linux clients; |
Sources location | Remotely | Locally |
Synchronization | Not required | Automatic for all sources; |
Building | Remotely | Remotely |
Run/Debug | Remotely | Remotely |
WSL2 and Docker
WSL2 | Docker | |
---|---|---|
Local OS | Windows | macOS / Linux / Windows |
Remote OS | Certain Linux distributions | Containerized OS distributions |
Connection protocol | - | Docker for OS |
Sources location | Locally | Mounted folder |
Synchronization | Not required | Automatically |
Building | On WSL | Inside the container |
Run/Debug | On WSL | Inside the container |
Remote debug
Remote Debug | Remote GDB Server | |
---|---|---|
Local OS | macOS / Linux / Windows for GDB; macOS / Linux for LLDB | macOS / Linux / Windows |
Remote OS | Any OS supporting gdbserver for GDB; macOS / Linux or another supporting lldb-server for LLDB | Any OS supporting gdbserver and SSH |
Connection protocol | TCP / UDP or serial line | TCP / UDP or serial line; SSH for uploading |
Required tools | gdbserver or lldb-server on target | gdbserver on target |
Sources location | Locally; symbol file also placed locally | Locally |
Synchronization | Manual | Automatic for the binary |
Building | Not specified | Locally (cross-compilation required) |
Run/Debug | Program runs remotely under gdbserver/lldb-server; CLion's GDB/LLDB connects to the running process and debugs it locally | Program runs remotely under gdbserver; CLion's GDB connects to the running process and debugs it locally |
Remote options: Project-level settings
Gateway vs remote with local sources
Remote with Gateway | Remote with local sources | |
---|---|---|
Project format | CMake / Compilation database / Makefile / Meson | CMake / Makefile / Meson |
Toolchain | System toolchain | |
Path mappings | Not required | Created automatically, customizable in deployment entry |
WSL2 and Docker
WSL2 | Docker | |
---|---|---|
Project format | CMake / Compilation database / Makefile / Meson | CMake / Makefile / Meson |
Toolchain | WSL | Docker |
Path mappings | Not required | Configurable in container settings |
Remote debug
Remote Debug | Remote GDB Server | |
---|---|---|
Project format | Any | CMake |
Toolchain | Not specified | Default on macOS/Linux; MinWG, Cygwin, WSL on Windows; Remote and Docker toolchains also available |
Path mappings | Not created automatically, should be set up in run/debug configuration | Not created automatically, should be set up in run/debug configuration |