很多时候我们需要在一台机器上进行开发,在另一台机器上进行调试部署。比如有如下场景:
- 在win环境下开发Linux程序
- 在PC上开发程序,但是最终需要在服务器上调试部署
但上述问题的本质都是远程开发调试,有许许多的解决方案,常见的方法如下:
- 直接通过Xshell等软件,通过ssh访问服务器,然后vim开发
- 通过vscode本地开发,通过winSCP同步到远服务器。后面vscode直接推出了ssh remote远程插件,更为方便
- 如果服务器提供图形化界面,可以直接使用vscode等有Linux版本的编辑软件
- 使用VisualStudio+插件的方式。VisualStudio本身自带远程开发的功能,也有很要用的插件,比如VisualGDB
上述方法自己都熟练使用过,但或多或少的都有问题。
- vim只是一个编辑器,你当然可以通过配置插件的方式拓展其功能,但不论配置的插件有多么强大,都很难于IDE相提并论。vim所缺失的部分就只能靠自己长期练习来弥补,综合效率(学习效率和使用效率)并不高。
- VisualStudio是一款非常好的软件,是少有的几个可以完全驾驭C++的IDE,技术成就非常高。但体量太大,而且除了C和C++很少用作其他语言的IDE
- VSCode写很好,很轻量级,配合ssh 远程插件可以很少地实现远程开发。但是VSCode更接近一款编辑器,在远程调试等方面还是有许多困难
那有没有一套完美的解决方案呢?
我个人认为可以直接使用JetBrains全家桶,JetBrains有如下优点:
- 首先JetBrains支持多种语言:C/C++、Java、Python、Go...
- 虽然支持多种语言,但是语言无关的部分(调试、部署...)都是一样的,这意味着你的均摊学习成本很低
- JetBrain还是跨平台的,在win上可以执行,也可以在支持图形化界面的Linux上执行
- JetBrain的生态也很好,基本上你遇到的问题别人早就遇到过了,能够很快解决问题,或制定方案。这其实从一个侧面反映出了JetBrain的确很优秀,否则是不可能有这么多人选择它的
言归正传,下面着重介绍怎样使用JetBrain来实现远程调试。
- 首先正常创建或者打开你的项目
- File->Settings->Build,Exceution,Deployment->Toolchains: 点击加号来增加远程部署配置文件,如下图所示
从选项表就可以看出来,能够想得到的远程开发场景基本都支持:Remote Host是直接在远程服务器上开发,WSL是在win10的WSL Linux系统中开发。后者很轻量级非常适合在win环境下开发Linux程序。下面以Remote Host为例进一步讲解:
虽然有很多选项,但实际上只需点击Credentials的设置符号,在里面设置好你的远程主机ssh信息:
其他的信息,JetBrain会自动在远程主机上进行探测。如果有多个版本的编译器,并有特殊需求才需要进行修改,点击OK,完事。
JetBrain还支持一键切换部署,如下图所示,有两个远程主机,默认是VMwareRemoteUbuntu:
点击标注的箭头进行调整,第一个是默认的,也就是在运行和调试时真正使用的远程主机。通过这种方式可以随时修改远程主机。
最后简单介绍一下,如何直接将已有项目导入到JetBrains,直接Open相应的文件夹,选中CMakeLists.txt->右键->Reload即可