インストール手順の英語版が圧縮ファイル内にありますので、 そちらも参照してください。
以下のパッケージをあらかじめインストールしてください。
Windowsの場合、cygwin版rubyとcygwinのgdb,gccならうまく動くかもしれません(未確認)
まず、圧縮ファイルをダウンロードし、解凍まで行ってください。 あとは、よくある以下の手順でインストール終了です。
$ ./configure $ make # make install
もし、ruby実行ファイルが環境変数PATH以下に存在しない場合、 configure時に、実行ファイルの場所をフルパスで指定する必要があります。
$ ./configure RUBYPATH=<ruby's full path> $ make # make install
使用手順は以下になります。
圧縮ファイル内にある、'tests/hello/test.rb'をデバッグする場合の例を以下に示します。 'test.rb'は、'hello.so'というC拡張ライブラリを使っています。
$ cp init.gdb tests/hello
$ cd tests/hello
$ gdb ruby
(gdb) source init.gdb # 重要
(gdb) run -rbidebug test.rb # 重要
(rdb:1) next
(rdb:1) list
[-2, 7] in test.rb
1 require 'hello'
2
=> 3 Hello::hello("foo")
4 num = Hello::hello("bar")
5
6 puts num
(rdb:1) step
[Switching to Thread 0xb7f646c0 (LWP 4986)]
Breakpoint 3 at 0xf2467e: file hello.c, line 9.
wrap_hello (self=3085984300, str=3085983100) at hello.c:9
9 VALUE wrap_hello(VALUE self, VALUE str){
(gdb) list
4 int hello(const char* str){
5 printf("Hello %s\n", str);
6 return 0;
7 }
8
9 VALUE wrap_hello(VALUE self, VALUE str){
10 int val = hello(RSTRING(str)->ptr);
11 return INT2FIX(val);
12 }
13
(gdb)
本ソフトウェアをインストールすることで、追加される機能を以下に示します。
| デバッガ名 | 機能 |
| gdb | switchコマンドを実行するとrdbに遷移する |
| gdb | 動的リンクされたlibruby.soの関数内でbreakpoint等によって停止しそうになったとき自動的に実行を続ける |
| rdb | switchコマンドを実行するとgdbに遷移する |
| rdb | step実行時にC拡張ライブラリの関数を呼んだ場合、gdbに自動遷移する |
emacsのgud-modeでも本ソフトを使うことができます。 emacsの方がソースコードを確認しながらデバッグできるので便利です。
ただし、事前にgdb, rdbがgud-modeで動作するようにしておく必要があります。 apt-getなどでgdb, rubyをインストールした場合は、すでにgud-modeで動作するようになっていると思います
| OS | Fedora 6 |
| gdb | ver 6.7 |
| ruby | ver 1.8.5 |
| gcc | ver 4.1 |