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

posted @ 2022-07-29 15:22  orangeScc  阅读(2618)  评论(0编辑  收藏  举报