CLion使用远程Linux调试程序
背景
有A,B两台电脑,A是MAC OS系统,B是ubuntu系统,项目最终需要在B上面编译、部署。但是希望能在A上面写代码,同时A上面调试、运行希望能用B的环境,并且可以将整个workspace里面的东西互相同步。
准备阶段
首先需要做一些基本准备来保证使用过程中出现的各种问题
SSH免密登录
A电脑登录B电脑免密登录,方便通过SSH连接B电脑查看。
#复制A电脑的`public_key`到粘贴板
cat ~/.ssh/id_rsa.pub | pbcopy
#复制到B电脑的 ~/.ssh/authorized_keys 里面并保存
#此处B电脑需要安装ssh并开启支持ssh的服务
##查看22端口是否启动,如果已经启动则不需要安装
lsof -i:22
##安装ssh,安装后需要重启
sudo apt-get install openssh-server openssh-client
##开启并检测
service ssh start
ssh localhost
lsof -i:22
设置B电脑合盖不休眠
#编辑文件
sudo vim /etc/systemd/logind.conf
#HandlePowerKey按下电源键后的行为,默认power off
#HandleSleepKey 按下挂起键后的行为,默认suspend
#HandleHibernateKey按下休眠键后的行为,默认hibernate
#HandleLidSwitch合上笔记本盖后的行为,默认suspend(改为ignore;即合盖不休眠)在原文件中,还要去掉前面的#
#设置
HandleLidSwitch=ignore
#重启
service systemd-logind restart
CLion配置
Clion配置remote host来支持在本地进行远程Linux程序调试
配置SSH连接
配置Remote Host
点击+
配置remote host并且把配置的拖拽到最上面
配置上传代码目录
配置A电脑项目所在目录对应的B电脑上的目录
配置toolchain
设置使用远程的上面配置的toolchain
上传代码
同步A电脑本地代码到B电脑,然后A电脑上就可以像在B环境一样调试项目
环境测试
在远程服务器 /root/test.txt
编写一个文件,内容随意,如 hello, 192.168.3.149
。
然后在本地编写以下代码:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
vector<string> &readLines(const string &filename) {
vector<string>* lines = new vector<string>();
ifstream file;
file.open(filename.c_str(), ios::in);
if (file.is_open()) {
string strLine;
while (!file.eof()) {
getline(file, strLine);
lines->push_back(strLine);
}
}
file.close();
cout << lines->size() << endl;
return *lines;
}
int main() {
for(auto line: readLines("/root/test.txt")){
cout << line << endl;
}
return 0;
}
当程序执行以后,如果一切正常,那么可以在本地看到hello, 192.168.3.149
总结
通过Remote Hosting的配置,能够极大的方便远程服务器的开发,因为一般服务器没有界面,不像图形化界面机器上开发那么容易,同时即便是windows环境下也可以很方便的实现对Linux系统的开发过程。
参考
1.https://blog.csdn.net/weixin_43145361/article/details/107460448
2.https://blog.csdn.net/weixin_43537379/article/details/118655273
本文来自博客园,作者:orangeScc,转载请注明原文链接:https://www.cnblogs.com/ashScc/p/16532390.html