如何在 SSH 下遠程使用 IDE 編譯和調試?

環境是這樣的:

C++ 開發

本地機 SSH 到跳板機 SSH 到運行機。

本地機,有 admin 許可權的 Windows

跳板機,無 admin 許可權的 Linux,無 IDE

運行機,無 admin 許可權的 Linux,無 IDE

跳板機和運行機不允許裝 IDE,不支持x11和sftp

問題:

團隊里的老手都是用 vim 和 gdb 開發、調試,我是新人,有點強迫症,深知 vim 和 gdb 是個坑,需要花較長時間搭建最好的環境。

請問有沒有辦法用本地機的 IDE 調試和編譯在運行機的項目?


請跟我默念一句: 人生苦短, JetBrains大法好!

JetBrains的 IDE 的理念: 所有的開發工作, 都只需要打開JetBrains家的 IDE, 且僅需要打開它!

JetBrains 家的 IDE 跨平台, 支持 C,C++, Java, Python, PHP, Ruby, 等主流開發語言.

滿足題主需求的 IDE 是 Clion.

https://www.jetbrains.com/clion/

如下配圖說明:

1. 本機 Mac 下打開 PyCharm.

2. 打開 FTP 插件, 連接阿里雲主機(centos 6).

3. 打開 SSH 插件, 連接阿里雲主機.

4. FTP 插件, 用於打開遠程代碼文件, 作編輯,修改,以及同步操作.

5. SSH 插件, 遠程運行,調試.

至於 Clion, IDEA, RubyMine, PHPStorm, 所有操作體驗,類似.

適合場景:

1. 題主的C,C++嵌入式開發, 經常 看到很多人是 Windows 下用 source insight, 虛擬機配置 samba, 掛載到 windows 里作編輯, 看他們編輯的無比蛋疼.

2. web 伺服器端開發. 偶爾會遇到我這裡截圖的場景, 需要在公網雲主機上寫一些測試代碼, 利用公網, 本地改改改, 再上傳, 很蛋疼, 雲主機上通常是沒配置的 vim, 用起來無比不爽. 所以,還是老朋友 pycharm給力.

廣告時間:

你要用終端? 自帶插件!

你要連資料庫? sql,還是 nosql, 插件都有!

你要 SSH 登錄, 插件有!

你要 FTP 登錄, 插件有!

你要用 git,svn,hg, 插件全支持!

你想作 git 提交,查看提交日誌,插件有!

你要用 docker, vagrant, 有有有!

其他黑科技, 請慢慢發覺...

篇外:

這年頭, 還是有很多二逼喜歡炫耀用 vim 開發, 其實, 很多二逼不知道: 同樣是用 vim, 大神手裡的 Vim 和 二逼手裡的完全不一樣.

大神手裡的 Vim 已經配置的跟 IDE 沒差.

而很多二逼的 Vim 沒任何配置, 吭哧吭哧的在那跟用記事本寫代碼差不多, 還自我感覺良好.

Vim 有很多牛逼的功能,只是上手難度有點高.

IDE 就是降低了門檻,讓你輕鬆愉快的使用很多牛逼的功能.

前陣子某個技術群, 有2B 說: 所有收費的 IDE 都是垃圾, 實在懶得噴.

歸根到底: 就是見識淺.

JetBrains 家的 IDE, 有太多強大的功能, 真正良心.

另外, 我猜測 eclipse, Visual Studio 應該有類似的功能, 感興趣的童鞋,可以自行探索.

再次默念:

JetBrains大法好!

JetBrains大法好!

JetBrains大法好!


之前 @到處挖坑蔣玉成 告訴我用 vs ssh 到 Linux 上開發的教程

Visual C++ for Linux Development

這個,裡面圖文都有,而且大多還是 GIF,你只要保證你的 Linux 上有 gdb 和 gdbserver 就好了。

然後 windows 上 vs 比起 jb 家的 clion 快多少,也就不用我說了 = =


除非SSH的目標機器可以給你許可權下載代碼下來,然後在你的Win機器本機編譯與運行。不過我覺得你們的代碼應該是編譯目標平台應該是Linux,所以你即使下載後來,也最多是拿一個IDE作為代碼閱讀器與編輯器,你沒有辦法編譯運行產生效果。也許你會想出來Win機器上再開一個虛擬機,那你還不如直接SSH到目標機器上,而且如果你們組的許可權做的很好的話,說不定你能下載代碼的許可權僅限於你這一塊兒的組件代碼,而非全部代碼(比如我曾經所在的組,我只能訪問到C++編譯器前端的代碼,編譯器後端的代碼對我就是不可見的)。

另外,既然你都SSH了,你就接受這種命令行的工作方式吧,我幾乎從來沒有見過SSH上去後有IDE的,而其實這也是IDE無法適應的情況之一。你可以不選擇VI,你可以選擇Emacs(本人就是Emacs黨),但是GDB的話,目前幾乎沒有替代品。同時我想說的是,你都不試一下,怎麼就知道是坑呢?就算真的這是坑,反正就這個了,你只有接受,不然...(自己補充吧)


gdbserver + Eclipse CDT


沒用過IDE的可以嘗試下IDE的,vim文本編輯是高效,看代碼就不好用了。看代碼的時間比寫代碼的時間多吧?前面陳碩推薦的eclipse就很好,比codeblocks好用。

但vim gdb都得會,入門也不難,還是要花時間學學的。都會了之後再在合適的場合下用合適的工具。


jEdit的sshConsole插件可以在你使用FTP插件的SFTP模式遠程編輯源代碼文件後編譯代碼時即時捕捉遠程錯誤輸出,使用Console插件分析錯誤信息,並且使用ErrorList插件來輸出錯誤結果,ErrorList提供了點擊錯誤信息定位到源代碼具體位置的功能。


X11 Forwarding 怎麼都感覺不靠譜

如果要圖形界面的話,直接用 xrdp 吧,不過你們團隊允許用這種東西嗎?


1、本地機安裝運行xming,運行putty,設置putty的Enable X11 forwarding

2、跳板機上解壓一個eclipse cdt,目錄無所謂,哪有許可權哪方便就丟哪,我這解壓到/opt目錄,修改自己主目錄下的.profile文件,添加eclipse的執行文件目錄到PATH環境中

3、putty用ssh登錄到跳板機,直接輸入命令eclipse 運行

4、至於eclipse的remote gdb就直接貼網上的了

linux下用eclipse和gdbserver遠程調試嵌入式linux上(目標機)的程序_BBKK_新浪博客

5、默認的xming顯示出來的界面可能字體會比較小,修改啟動參數,在後面加-dip 100

6、有時會需要開多個session,或者還得用putty連開發板,這樣用putty會開很多個窗口出來,推薦一個mtputty,可以把putty當作標籤顯示,切換方便很多,看起來也舒服很多

7、再繼續就是本地和跳板之間的文件共享傳輸了,在跳板機上配置samba伺服器,本地直接映射網路硬碟,訪問跳板機跟訪問本地硬碟一樣方便,如果開機夠快而且伺服器從不關機的,還可以勾選登陸時重連


samba共享映射到本地分區,netbeans設置好編譯主機即可


推薦使用tmux + emacs


linux還admin。。linux應該說root


在eclipse marketplace里安裝remote system explorer,這個就是效果,不錯吧。。

前面有人說jetbrain大法好,,我表示不服,,論流行度,eclipse應該甩它街了吧

前面有人說用samba,不好,windows文本文件到linux就變成了可執行了,屬主還是nobody..


eclipse cdt和vs 2015都有遠程Linux開發插件,可以遠程調試


雖然早已不用NB, 但netbeans remote c/c++, 是見過的最完整的遠程SSH開發C/C++方案,原生主機開發的體驗,10年前就有了好么。


正好學學vim或者emacs不好么


gdb還是學學吧,以後等你線上core了之後,你要是說不會看core。

哈哈哈哈,估計你就被case study了


你要想學好,gdb 你是繞不過去,繞過了,其實 vim 不是個事。

你這個問題和 vim 一點關係都沒有,也和 idea/emacs 沒關係


推薦閱讀:

Linux的前景如何?
linux的epoll_wait以及epoll_ctl是否線程安全?
有哪些 Linux 逆向相關的學習資料推薦?
Pwn2Own 有Unix/Linux系統的機器被攻破么?
Linux 為何不把圖形用戶界面寫入內核?

TAG:Linux | C | Eclipse | 後台開發 |