Remote development
Last modified: 22 August 2022There are several options for remote development in CLion, each targeting a particular subset of the setups: Full Remote Mode, WSL, and two variants of using gdbserver/lldb-server, Remote Debug (GDB/LLDB) and Remote GDB Server (GDB only).
note
Alternatively, you can set up remote development using a headless remote machine and thin local client. Refer to Remote with the thin client for details.
Watch this webinar recording and refer to the tables below for a summary on remote development options in CLion.
System and IDE configuration
Full Remote Mode | WSL | Remote Debug | Remote GDB Server | |
---|---|---|---|---|
Local OS | macOS / Linux / Windows | Windows |
| macOS / Linux / Windows |
Remote OS | Linux | Certain Linux distributions |
| Any OS supporting gdbserver and SSH |
Connection protocol | SSH | - | TCP / UDP or serial line | TCP / UDP or serial line; SSH for uploading |
Required tools | rsync for macOS / Linux clients; tar for Windows clients | - | gdbserver or lldb-server on target | gdbserver on target |
Sources location | Locally | Locally | Locally; symbol file also placed locally | Locally |
Synchronization | Automatic for all sources; | Not required | Manual | Automatic for the binary |
Building | Remotely | On WSL | Not specified | Locally (cross-compilation required) |
Running Debugging | Remotely | On WSL | 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 |
Project-level settings
Full Remote Mode | WSL | Remote Debug | Remote GDB Server | |
---|---|---|---|---|
Project format | CMake / Makefile | CMake / Compilation database / Makefile | Any | CMake |
Toolchain | Remote | WSL | Not specified | Default on macOS/Linux; MinWG, Cygwin, WSL on Windows |
Path mappings | Created automatically, customizable in deployment entry | Not required | Not created automatically, should be set up in run/debug configuration | Not created automatically, should be set up in run/debug configuration |
Steps of the workflow
provide credentials and check the connection,
wait for tools detection, provide the paths manually if required.
- CMakeMakefile
Set the Remote toolchain as default or create an associated CMake profile.
Switch to the remote toolchain in Settings/Preferences | Build, Execution, Deployment | Makefile.
If needed, adjust path mappings in the deployment entry.
- CMakeMakefile
Use the default profile or select the profile from step 2 for build, run, and debug.
Call Tools | Makefile | Clean and Reload Makefile Project.
In the configuration settings, point Executable to the remote binary.
note
See Full remote mode for details.
Create a WSL toolchain and provide credentials.
- CMakeMakefile
Set the WSL toolchain as default or create an associated CMake profile.
Switch to the WSL toolchain in Settings/Preferences | Build, Execution, Deployment | Makefile.
- CMakeMakefile
Use the default profile or select the profile from step 2 for build, run, and debug.
Call Tools | Makefile | Clean and Reload Makefile Project.
In the Makefile Application configuration, point Executable to the binary using the
\mnt notation.\..
note
See WSL for details.
Place the binary on the remote machine and symbol file on the local machine.
In CLion, create a Remote Debug configuration:
provide the symbol file location,
specify connection details,
set up path mappings.
Launch the program under gdbserver/lldb-server on the remote machine.
In CLion, debug the configuration created on step 2.
note
See Remote Debug for details.
Create a Remote GDB Server configuration:
provide the credentials to access the target,
configure the uploading process,
(optional) set the gdbserver connection details.
Select the Debug CMake profile and start a debug session for the created configuration.
note
See Remote GDB Server for details
Thanks for your feedback!