使用CLion 远程WSL调试Linux程序
windows10推出了一段时间的新功能Windows Subsystem Linux (WSL),内置了linux内核,这为需要在linux下面编程开发又同时需要在windows系统下面工作的人带来了便利。
在有服务节点可以使用的时候,我们能通过vnc远程连接linux系统并进行开发工作,而当没有这个环境,或者linux上没有管理员权限,不能*安装开发软件的时候,就需要远程调试来完成开发。
比起安装虚拟机,使用WSL更节省本地的资源。
安装WSL
可以按参考文献1中的地址,按说明进行
安装完成后,可以将图标固定到开始菜单中,方便以后的使用,看到一个解释是只有点开这个应用,才会启动相关的ssh 等服务
打开应用,就是一个命令行的界面,这里面硬件资源是与主系统共享的,但不支持安装cuda驱动
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访问的账号密码等信息,也可以远程到物理节点的服务器上。
将WSL链接到cmake上面,build options里面可以写上-j n来实现并行编译,加快编译的速度。
远程编译运行或调试程序
新建一个cmake工程,配置Run/Debug信息,
选择GDB Remote Debug,GDB选择上面配置的WSL,点击OK。
经过一段时间的配置,就可以使用了
也可以在导入cmake 工程,同样的配置过程,稍等片刻,就可以正常使用
如果是makefile的工程,需要手动写makefilelist.txt文件
因为今年的特殊情况,无法远程实验室的机器办公。在只有一台笔记本电脑的情况下,摸索出来这样的一套方案继续进行学习,特记录分享。
参考文献:
https://blog.csdn.net/gulang03/article/details/87863725
https://www.jetbrains.com/help/clion/how-to-use-wsl-development-environment-in-clion.html
推荐阅读
-
详解Win10 Bash/WSL调试Linux环境下的.NET Core应用程序
-
Linux应用程序使用写文件调试程序的方法
-
使用CLion 远程WSL调试Linux程序
-
Linux下使用VS Code + CMake 调试c++程序
-
解决VScode配置远程调试Linux程序的问题
-
使用WSL配合Visual Studio在本地调试linux c++程序的配置方法
-
在Linux系统中使用GDB来调试C/C++程序的方法
-
使用 VS Code 远程调试 Python 程序
-
通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序的方法
-
Linux下C程序的编辑,编译和运行以及调试(c++使用g++)