欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用CLion 远程WSL调试Linux程序

程序员文章站 2022-07-12 16:58:05
...

windows10推出了一段时间的新功能Windows Subsystem Linux (WSL),内置了linux内核,这为需要在linux下面编程开发又同时需要在windows系统下面工作的人带来了便利。
在有服务节点可以使用的时候,我们能通过vnc远程连接linux系统并进行开发工作,而当没有这个环境,或者linux上没有管理员权限,不能*安装开发软件的时候,就需要远程调试来完成开发。
比起安装虚拟机,使用WSL更节省本地的资源。


安装WSL

可以按参考文献1中的地址,按说明进行

使用CLion 远程WSL调试Linux程序
安装完成后,可以将图标固定到开始菜单中,方便以后的使用,看到一个解释是只有点开这个应用,才会启动相关的ssh 等服务
使用CLion 远程WSL调试Linux程序
打开应用,就是一个命令行的界面,这里面硬件资源是与主系统共享的,但不支持安装cuda驱动
使用CLion 远程WSL调试Linux程序

WSL中的环境配置

wsl中的基础环境

sudo apt-get install cmake gcc clang gdb build-essential

或者可以更简单的执行clion的官方给出的一个在ubuntu上面自动化配置脚本,注意:配置ssh 连接时,一定要将ssh的默认访问端口22修改为windows10中没有用到的。我这里设为8022,

#!/bin/bash
set -e

SSHD_LISTEN_ADDRESS=127.0.0.1
if [ -e "/dev/vsock" ]; then # in case of WSL2
	SSHD_LISTEN_ADDRESS=0.0.0.0
fi

SSHD_PORT=2222
SSHD_FILE=/etc/ssh/sshd_config
SUDOERS_FILE=/etc/sudoers
  
# 0. update package lists
sudo apt-get update

# 0.1. reinstall sshd (workaround for initial version of WSL)
sudo apt remove -y --purge openssh-server
sudo apt install -y openssh-server

# 0.2. install basic dependencies
sudo apt install -y cmake gcc clang gdb valgrind build-essential

# 1.1. configure sshd
sudo cp $SSHD_FILE ${SSHD_FILE}.`date '+%Y-%m-%d_%H-%M-%S'`.back
sudo sed -i '/^Port/ d' $SSHD_FILE
sudo sed -i '/^ListenAddress/ d' $SSHD_FILE
sudo sed -i '/^UsePrivilegeSeparation/ d' $SSHD_FILE
sudo sed -i '/^PasswordAuthentication/ d' $SSHD_FILE
echo "# configured by CLion"      | sudo tee -a $SSHD_FILE
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}"	| sudo tee -a $SSHD_FILE
echo "Port ${SSHD_PORT}"          | sudo tee -a $SSHD_FILE
echo "UsePrivilegeSeparation no"  | sudo tee -a $SSHD_FILE
echo "PasswordAuthentication yes" | sudo tee -a $SSHD_FILE
# 1.2. apply new settings
sudo service ssh --full-restart
  
# 2. autostart: run sshd 
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc
echo "%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a $SUDOERS_FILE
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
  sudo service ssh --full-restart
fi
EOF
  

# summary: SSHD config info
echo 
echo "SSH server parameters ($SSHD_FILE):"
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}"
echo "Port ${SSHD_PORT}"
echo "UsePrivilegeSeparation no"
echo "PasswordAuthentication yes"

CLION配置

添加Toolchains,注意Environment地方的下拉菜单选择WSL,其后面的路径,可以在windows的资源管理器中的地址复制过,AppData文件夹是系统隐藏文件,通过当前的界面上的查找,就无法看到这个文件夹。
然后配置ssh访问的账号密码等信息,也可以远程到物理节点的服务器上。
使用CLion 远程WSL调试Linux程序
将WSL链接到cmake上面,build options里面可以写上-j n来实现并行编译,加快编译的速度。
使用CLion 远程WSL调试Linux程序

远程编译运行或调试程序

新建一个cmake工程,配置Run/Debug信息,
选择GDB Remote Debug,GDB选择上面配置的WSL,点击OK。
使用CLion 远程WSL调试Linux程序
经过一段时间的配置,就可以使用了
使用CLion 远程WSL调试Linux程序
也可以在导入cmake 工程,同样的配置过程,稍等片刻,就可以正常使用
如果是makefile的工程,需要手动写makefilelist.txt文件
使用CLion 远程WSL调试Linux程序

因为今年的特殊情况,无法远程实验室的机器办公。在只有一台笔记本电脑的情况下,摸索出来这样的一套方案继续进行学习,特记录分享。


参考文献:
https://blog.csdn.net/gulang03/article/details/87863725
https://www.jetbrains.com/help/clion/how-to-use-wsl-development-environment-in-clion.html

相关标签: 利其器

上一篇: nginx

下一篇: nginx