DAPを使ってmrubyスクリプトをデバッグする話

masahino123.hatenablog.com

の続き。 久しぶりにデバッガを動かしてみたら、意図した通りに動かず悩んだのだが、 既に過去に遭遇していた現象で、当然の挙動だった。 すっかり忘れてしまっていたのが情けなく、メモしておく。

前回の記事は、.rbファイルではなくバイナリ化したファイルをいかにデバッグするかというお話だった。 機能的には、.rbファイルもこのやりかたでデバッグできるようになっている(ハズ)。 具体的には次のように実行した場合のtest.rb部分のデバッグ

mruby test.rb

それ、mrdbでできるよ、なんだけど、まぁそれはそれで。

この場合、前回の記事で書いた方法ではブレークポイントが設定できない。 読み直したら前回の記事でも書いてあった。

ブレークポイントを指定する.rbファイルの判定が絶対パス指定のため、パスのマッピングが必要な場合があるかもしれない。

我ながら、なんのこっちゃよくわからんな。 ブレークポイントの設定は絶対パスで指定している。 mrubyで実行中のファイル名とブレークポイント設定したファイル名を比較して、(行番号も含め)一致したら実行停止しているけど、 mruby test.rbと実行した場合、mrubyでのファイル名はtest.rbなので、単純に文字列比較しても一致しない。 mruby /foo/bar/test.rbなどと絶対パス指定で起動していれば、一致するという話。

絶対パス指定じゃなくてもマッチさせる方法あるかな? 文字列比較じゃなく、文字列を含むかどうかで判定するとか?