bdrb-gdb-rdb (0.0.1) | 2007-12-09 14:53 |
インストール手順の英語版が圧縮ファイル内にありますので、 そちらも参照してください。
以下のパッケージをあらかじめインストールしてください。
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 |