2012-01-16 90 views
7

我想使用Rubymine的IDE調試器來調試運行在命令shell中的ruby進程,通過「軌道控制檯」。如何將Rubymine IDE調試器附加到shell進程?

當運行Web服務器(從Rubymine內部運行)或測試套件(也可以從Rubymine運行)時,我已經從調試器中獲得了很多里程碑。

但是,如果該過程不是由Rubymine啓動的,那麼我將不知道如何附加調試器。

我使用Ubuntu上使用Sun Java 1.6.0_26版的RubyMine 3.2.4,REE的Ruby 1.8.7,而最新的調試寶石:

ruby-debug-base (0.10.4) 
ruby-debug-ide (0.4.17.beta8) 

的思考?

+1

我認爲你的問題的標題缺少一個動詞。 – 2012-01-16 21:45:10

+0

@DavidGrayson謝謝 - 你是對的。固定。 – 2012-01-16 21:53:07

回答

3

使用紅寶石遠程調試 RubyMine中的配置類型。有關詳細信息,請參閱官方RubyMine documentation

基本上你運行該腳本,如:

rdebug-ide --port <port number> -- script.rb 

,然後連接到從RubyMine的調試器指定的端口。

+0

感謝@CrazyCoder的工作,在我仔細研究了一下之後:1.從命令行啓動rdebug-ide命令,例如要調試一個'rails console' shell會話:'rdebug-ide --port 1234 - rails console'。 2.在RubyMine中,使用運行配置編輯器並使用相同的端口(此處爲1234)和設置爲工作目錄的遠程路徑創建一個新的Ruby Remote Debug配置,然後點擊調試按鈕,這會導致shell以初始化,而源可以在RubyMine中突出顯示。非常感激! – 2012-01-17 00:49:13

5

這是你如何在Rails中做到這一點:

首先,確保你有rdebug-ide安裝:

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console 

或:

gem install ruby-debug-ide --platform=ruby 

接下來,在控制檯中運行這個導軌4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console 

或者,如@ChristopherWill提到below,如果您希望調試非本地服務器,則可以傳遞--host參數。 (請閱讀他的註釋以瞭解注意事項)

這將等待遠程調試客戶端連接。

  1. 點擊Run>編輯配置中的RubyMine然後添加一個「紅寶石遠程調試」實例

  2. 使用同一端口與上述6778(如果更改上面的一個,確保端口匹配)

  3. 根文件夾和本地根文件夾是相同的,/項目/ your_rails_project

  4. 點擊Apply並關閉。

接下來,從運行和調試按鈕旁邊的列表中選擇此配置,然後單擊調試按鈕。給它幾秒鐘,控制檯將運行「軌道控制檯」,你永遠跑「rdebug-ide」

+0

謝謝,但實際上它不再適用於Rails 3.2,因爲'rails console'現在產生了一個獨立的進程,RubyMine IDE調試器還不能處理多進程調試,儘管他們應該在下一個版本的RubyMine中包含它。 – 2012-06-11 23:58:12

+0

我正在用RubyMine 4.0.3調試rails 3.2.2應用程序(ruby 1.9.3p194)。當我嘗試運行「boot.rb」(使用rdebug-ide)時,進程立即啓動並停止。當我使用上面的命令時,它適用於我。 – Abdo 2012-06-12 09:11:11

+0

你可以讓進程運行沒有問題,但我認爲你不能讓它停在斷點處,因爲'rails'可執行文件會產生一個不受監視的後臺進程。我首先在調試器中運行它的全部理由是設置斷點。 http://youtrack.jetbrains.com/issue/RUBY-10967 – 2012-06-12 17:40:57

2

我真的很想發佈一些東西,很難找到一個完整的答案在那裏,它花了我很長時間才能弄清楚。有人問如何將遠程調試附加到resque工作人員,這是最終適用於我的正確方法。這篇文章在谷歌搜索很高,很容易找到。

來自Shell服務器上(對我的我的筆記本電腦)從你的站點根目錄執行此: 中,RDebug-IDE --port 1236 --dispatcher端口26166 --host 0.0.0.0斌/耙resque:工作隊列= *

中的RubyMine IDE

配置有遠程調試: 遠程主機:127.0.0.1 遠程端口:1236 遠程根文件夾:在服務器路徑站點根 本地端口:26166 本地根路徑:路徑上你工作站到你的根文件你將設置斷點(在我的情況下,它的所有本地,所以它的所有1路徑和1個副本的文件)

像平常一樣運行你的web服務器:rails s

在你的Resque worker中設置一個斷點,然後嘗試執行你需要在你的站點上去的任何東西,讓你到達那個斷點。

1注意 - 擁有「彈簧」寶石給了我錯誤,我不得不將它評論/捆綁。

相關問題