Aptana StudioでRubyをデバッグ

AptanaからRubyのデバッグができる。

 

まずはRubyのソースファイルを開いてブレークポイントを作成する。

行番号部分をダブルクリックすると、ブレークポイントが作成される。

この例だとputs “b”の位置にブレークポイントを設定している。

 

ブレークポイントを設定したら、早速、デバッグモードでRubyを実行する。

次のキーを押すとRubyがデバッグモードで実行される

Alt+Shift+D, R

(Altキー、Shiftキーを押しながらDを押した後、全てのキーを一度はなしてから、Rキーを押す)

 

Rubyスクリプトのデバッグができる・・・

はずが、エラーが発生する。

 

やはりRuby、一筋縄ではデバッグさせてくれない。

設定が必要なのだ。

 

と、いうことで、今回はAptana環境でRubyをデバッグするために必要な設定の手順をまとめる。

ちなみに、今回紹介する手順は、ほとんどEclipse(Aptana3) で Ruby1.9.3 をデバッグするで書かれていることをまねたものだ。

私は自力で調べる自信が無い。筆者に感謝。(彼は一体どうやってこんな情報を調べたのか・・・)

結局何ができればデバッグ実行ができるようになるのか

ruby-debug-ide19というgemをインストールできれば、AptanaでRubyをデバッグ実行できるようになる。

この記事の最初のほうに貼ってあるエラーメッセージのキャプチャには

「May need to install ‘ruby-debug-ide’ gem」

と書かれているが、これはRuby1.8をデバッグしたい場合にインストールが必要なgemで、Ruby1.9をデバッグしたい場合にはruby-debug-ide19をインストールする必要がある。

これは、gem listコマンドで確認することができた。

K:\home\tmp8\test2>gem list –remote ruby-debug-ide

*** REMOTE GEMS ***

ruby-debug-ide (0.4.16)
ruby-debug-ide19 (0.4.12)

ruby-debug-ide19をインストール

ruby-debug-ide19というgemのインストールが必要であるということが分かったので、早速インストールを試みる。

K:\home\tmp8\test2>gem install ruby-debug-ide19
INFO: gem install -y is now default and will be removed
INFO: use –ignore-dependencies to install only the gems you list
Temporarily enhancing PATH to include DevKit…
Building native extensions. This could take a while…
ERROR: Error installing ruby-debug-ide19:
ERROR: Failed to build gem native extension.

C:/Ruby193/bin/ruby.exe extconf.rb
checking for rb_method_entry_t.body in method.h… no
checking for vm_core.h… no
C:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.5/lib/ruby_core_source.
rb:39: Use RbConfig instead of obsolete and deprecated Config.
checking for rb_method_entry_t.body in method.h… no
checking for vm_core.h… yes
checking for iseq.h… yes
checking for insns.inc… yes
checking for insns_info.inc… yes
checking for eval_intern.h… yes
creating Makefile

成功しない。

gemファイルを手動ダウンロード

ruby-debug-ide19をインストールするためには、まず以下2つのgemを手動ダウンロードしてインストールする必要がある。

(何故これら2つなのか?は私にはさっぱり不明。なぜだー。というかどうやって調べる。)

手動ダウンロードしたgemをインストール

K:\home\tmp7>gem install linecache19-0.5.13.gem

Temporarily enhancing PATH to include DevKit…
Building native extensions. This could take a while…
Successfully installed linecache19-0.5.13
1 gem installed
Installing ri documentation for linecache19-0.5.13…
Installing RDoc documentation for linecache19-0.5.13…

K:\home\tmp7>gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=C:/Ruby193/include/ruby-1.9.1/ruby-1.9.3-p194

Temporarily enhancing PATH to include DevKit…
Building native extensions. This could take a while…
Successfully installed ruby-debug-base19-0.11.26
1 gem installed
Installing ri documentation for ruby-debug-base19-0.11.26…
Installing RDoc documentation for ruby-debug-base19-0.11.26…

--with-ruby-includeオプションで指定しているパスは、インストールしてあるRubyのパスに合わせて適切に修正が必要。

「C:\Ruby193\include\ruby-1.9.1\ruby-1.9.3-p0」

というフォルダがある場合は

--with-ruby-include=C:/Ruby193/include/ruby-1.9.1/ruby-1.9.3-p0

となる。(ruby-1.9.3-p194なのかruby-1.9.3-p0なのかといった違い)

ruby-debug-ide19を再びインストール

K:\home\tmp7>gem install ruby-debug-ide19
Fetching: ruby-debug-ide19-0.4.12.gem (100%)
Successfully installed ruby-debug-ide19-0.4.12
1 gem installed
Installing ri documentation for ruby-debug-ide19-0.4.12…
Installing RDoc documentation for ruby-debug-ide19-0.4.12…

今度は成功する。

デバッグ実行を確認

ruby-debug-ide19のインストールができたら

再びAptanaから

Alt+Shift+D, R

キーを押して、デバッグ実行してみる。

 

パースペクティブが切り替わり、見事にブレークポイントを設定した行で命令が停止されている。

(クリックで拡大)

実はまだ代入文がデバッグできない

さて、先ほどデバッグを試したコードは、問題無くデバッグできた。

それはこんなコードだった。

puts “a”
puts “b”
puts “c”

しかし、こういった代入文が含まれるRubyコードのデバッグはできない。

a = 1
b = 2
c = 3

このコードを[Alt+Shift+D, R]でデバッグ実行すると、うまくブレークしてくれずに、このような表示が出力される。

Fast Debugger (ruby-debug-ide 0.4.9) listens on :61360
Exception in DebugThread loop: undefined method is_binary_data?' for "1":String

 

原因は、String#is_binary_data?メソッドがRuby1.9から廃止されたためらしい。

ここ参考→Aptana 3 ruby debugger - Exception in DebugThread loop: undefined method is_binary_data?’

 

上記ページに書かれているように、String#is_binary_data?メソッドを自分で追加してみると、確かにデバッグはうまく動作する。

 

class String
def is_binary_data?
( self.count( “^ -~”, “^\r\n” ).fdiv(self.size) >
0.3 || self.index( “\x00” ) ) unless empty?
end
end

a = 1
b = 2 # ←ブレークポイントセット
c = 3

 

ただし、デバッグしたい対象のプログラムで毎回String#is_binary_data?メソッドを定義するというのは現実的ではない。

インストールしたruby-debug-ide.rbのソースの末尾にString#is_binary_data?メソッドを追加するのがお手軽。

 

ruby-debug-ideのソースファイルはどこにあるのか?
私の環境のruby-debug-ide.rbがあったパスはここ。
→「C:\Ruby193\lib\ruby\gems\1.9.1\gems\ruby-debug-ide19-0.4.12\lib\ruby-debug-ide.rb」

あとはruby1.9のマイナーバージョンとruby-debug-ideのバージョンによってフォルダ名が多少変わってくるため適切な位置を探してほしい。

 

 

これでやっときちんと使えるデバッグ環境ができたと思う。

お疲れ様。

“Aptana StudioでRubyをデバッグ” への1件のコメント

  1. […] 以前、Aptana StudioでRubyをデバッグという記事で、Aptana Studio上で、Rubyをデバッグするための方法について紹介しました。 […]

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=353