HOME>リンク
 

mruby debugger 操作マニュアル


本書は、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 ------