2012-01-16 102 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注意 - 拥有“弹簧”宝石给了我错误,我不得不将它评论/捆绑。

相关问题