本書は、mrubyデバッガ(mrdb)の操作方法について記載したものです。
|
使用方法 |
2.1 ビルド方法
githubよりmrubyデバッガを含むmrubyソースコードを入手し、ソースコードをmakeします。
$ git clone https://github.com/Kumikomi-Ruby/forum-mruby.git mruby
$ cd mruby
$ make
ビルドによって生成された実行ファイルはmruby/binに格納されるため、必要に応じてパスを通して下さい。
$ echo "export PATH=\$PATH:MRUBY_ROOT/bin" >> ~/.bashrc
$ source ~/.bashrc
※MRUBY_ROOTはmrubyソースコード格納ディレクトリ
mrubyデバッガ(mrdb)を実行できることを確認します。
$ mrdb --version
mruby 1.1.0 (2014-11-19)
2.2 基本操作
2.2.1. mrubyスクリプト(rbファイル)のデバッグ
mrubyデバッガにデバッグ対象のmrubyスクリプトファイルを指定することで、mruby(Ruby)スクリプトのデバッグが開始されます。
$ mrdb [オプション] ファイル名
例: sample.rbをデバッグする
$ mrdb sample.rb
mrubyデバッガが起動されると下記のようなプロンプトが表示され、コマンド入力待ちとなります。 mrubyデバッガでは以下のデバッグコマンドが利用可能です。
- runコマンド(プログラムの実行)
- stepコマンド(プログラムのステップ実行)
- continueコマンド(プログラムの継続実行)
- breakコマンド(ブレイクポイントの設定)
- deleteコマンド(ブレイクポイントの削除)
- disableコマンド(ブレイクポイントの無効化)
- enableコマンド(ブレイクポイントの有効化)
- info breakpointsコマンド(ブレイクポイント一覧表示)
- printコマンド(式の評価)
- evalコマンド(式の評価)
- listコマンド(ソースコードの表示)
- helpコマンド(ヘルプ表示)
- quitコマンド(mrubyデバッガの終了)
各コマンドの詳細については 3. コマンド使用 を参照して下さい。
2.2.2. バイナリ(mrbファイル)のデバッグ
mrubyデバッガは、mrubyバイナリファイル(mrbファイル)のデバッグも可能です。 バイナリのデバッグは以下の手順で行います。
2.2.2.1. デバッグコンパイル mrubyコンパイラでコンパイルする際にデバッグオプション(-g)を指定してコンパイルを行います。
$ mrbc -g sample.rb
注意: -gオプション指定なしでコンパイルしたmrubyバイナリファイルはデバッグ操作が行えません。
mrubyバイナリをデバッグする場合には、-bオプションを指定してmrubyデバッガを起動します。
$ mrdb -b sample.mrb
3.コマンド仕様
- breakコマンド
指定した行番号、メソッドにブレイクポイントを設定する。
break [file:]lineno
b [file:]lineno
break [class:]method
b [class:]method
引数 |
内容 |
file |
ファイル名(.rb) |
lineno |
行番号 |
class |
クラス名 |
method |
メソッド名 |
指定された[file:]lineno,または[class:]methodにブレイクポイントを設定します。ブレイクポイントが設定できた場合はブレイクポイントの情報を、ブレイクポイントが設定できなかった場合はエラーを表示します。
設定したブレイクポイントには番号(1から開始)を付与します。番号は1から順にインクリメントされます。deleteコマンドにより削除されたブレイクポイントの番号は欠番となり、同一番号は付与しません。
同一箇所に対する複数のブレイクポイント設定は可能です。クラス名,メソッド名の有効/無効チェックは実施していません。無効な行番号が設定された場合、以降の有効な行番号にブレイクポイントを設定します。以降に有効な行番号が存在しない場合はエラー表示します。
*C言語で実装されたメソッドはmrdbではデバッグできません。GDB等を使用してください。
Example:
(ファイル)行番号を指定する例
> break sample.rb:3
Breakpoint 1: file sample.rb, line 3.
(クラス)メソッドを指定する例
> break Sample_class:sample_method
Breakpoint 1: class Sample_class, method sample_method
- continueコマンド
停止中のプログラムの実行を再開する.
continue [N]
c [N]
引数 |
内容 |
N |
次回停止するブレークポイントの指定 |
ブレークポイント等で停止したプログラムの実行を再開する.
N を引数として与えた場合は,実行再開後の N-1 個のブレークポイントを無視し,N 個 目のブレークポイントで停止する.
N を省略した場合は,実行を再開し,最初のブレークポイントで停止する.すなわち,N を省略した場合は, N=1 と解釈される.
プログラムの末尾に到達した状態で実行すると,以下のメッセージが表示され,プログラムの実行を再開することはできない.The program is not running.
- deleteコマンド
指定したブレイクポイントを削除する
delete [breakpointno]
d [breakpointno]
引数 |
内容 |
breakpointno |
ブレイクポイント番号 |
breakpointnoで指定したブレイクポイントを削除します。番号の指定が無い場合は,全てのブレイクポイントを削除します。 スペース区切りで番号を指定することで,複数ブレイクポイントを削除することも可能です。
- info breakpointコマンド
info breakpoints [breakpointno]
i b [breakpointno]
breakpointnoで指定したブレイクポイントの情報を表示します。番号の指定が無い場合は,全てのブレイクポイントの情報を表示します。 スペース区切りで番号を指定することで,複数ブレイクポイントの情報を表示することも可能です。
・すべてのブレイクポイントを表示する例
>info breakpoints
・指定されたブレイクポイント番号のブレイクポイントを表示
>info breakpoints 1 3
- printコマンド
print [expr]
p [expr]
expr:評価する式
与えられた式を現在のコンテキストで評価します。 式が与えられなかった場合はエラーを表示します。
表示する値にはプリント番号(1から開始)を付与します。番号は1から順にインクリメントされます。
式の評価時に例外が発生した場合は、発生した例外情報を表示し、デバッグを継続します。
--- to be continued ------
|