優れた問題は次のとおりです。rubymineはrubyプログラムを実行できますが、デバッグできません。リモートデバッグもできません。
>> DIALOG: Connecting to debugger using 10 seconds
約10秒後
>> DIALOG: Cannot connect to the debugged process at port 57000 [a random port]
>>> Dumping and destroying...
>>> Error Output:
>>> Fast Debugger(ruby-debug-ide 0.4.17.beta14, ruby-debug-base19 0.11.30.pre10) listens on 127.0.0.1:57000
>> Please try increase timeout settings...(a long bullshit)
私はruby-debug-ideとruby-debug-base19のコードを読んで根本的な原因を見つけようとしています。
- ruby-debug-ideは、127.0.0.1でTCPServerバインドを開始し、ポート57000でリッスンするDebugThread(@control_thread)を開始しました。
- ruby-debug-ideは、クライアントがtcpサーバーに接続し、「開始」コマンドを送信するのを待機しています。
run_prog_script
- できます
telnet 127.0.0.1 57000
。デバッグスレッドは次のように述べています。127.0.0.1から接続しています...telnetに「start\n」という単語を入れると、rdebug-ideが実際のプログラムを起動します。 - Rubymineはそれに接続しておらず、「start」コマンドを送信していません。(idea.logに出力が見つからないため)
私はidea.logを掘り下げます:
Fast Debugger (ruby-debug-ide 0.4.17.beta14, ruby-debug-base 0.11.30.pre10) listens on 127.0.0.1:59598
at org.rubyforge.debugcommons.RubyDebuggerProxy.a(RubyDebuggerProxy.java:647)
at org.rubyforge.debugcommons.RubyDebuggerProxy.d(RubyDebuggerProxy.java:619)
at org.rubyforge.debugcommons.RubyDebuggerProxy.getCommandSocket(RubyDebuggerProxy.java:381)
at org.rubyforge.debugcommons.RubyDebuggerProxy.b(RubyDebuggerProxy.java:151)
at org.rubyforge.debugcommons.RubyDebuggerProxy.attach(RubyDebuggerProxy.java:112)
at org.jetbrains.plugins.ruby.ruby.debugger.impl.RubyDebugProcess.attachToProxy(RubyDebugProcess.java:190)
次に、debug-commonsコードを読みます(rubymineほど正確ではありません。https://github.com/ruby-debug/debug-commons-java/blob/master/src/org/rubyforge/debugcommons/RubyDebuggerProxy.javaを参照してください。
private Socket attach() throws RubyDebuggerException {
int port = debugTarget.getPort();
String host = debugTarget.getHost();
Socket socket = null;
for (int tryCount = (timeout*2), i = 0; i < tryCount && socket == null; i++) {
try {
socket = new Socket(host, port);
...
}
}
}
rubymineはdebug-commonslibを使用してローカルホストでソケット接続を開くことができないようです。これ以上掘り下げることはできません:(
ところで、以下のコマンドでシェルでルビーデバッグセッションを開始します:
rdebug-ide --port 51202 --path / to / my / script
ルビミンもソケットに接続できません。
*別のruby-debug-xxxgemを使用したり、ruby-debugなどの他のgemを削除したりする必要があると言わないでください。これらの解決策を試しました。*
私は以下のグループで試しました:
グループ1:
- ルビミン4.0.3
- ruby-debug-base19-0.11.29
- ruby-debug-ide-0.4.16
グループ2:
- ルビミン4.5.x
- ruby-debug-base19-0.11.30.pre10
- ruby-debug-ide-0.4.17.beta14
私のラップトップはOSXLionを搭載したMacAirです