機略戦記

Maneuver warfare

プログラム実行中のある時点で処理を止め、止めた位置のコンテキストを維持したまま対話的にコードを実行したい(Rubyのbinding.pryみたいな事がしたい)

結論

止めたい位置でbrowser()を実行する。

例:

このようなスクリプトがあったとする。

a <- 1

止めたい位置にbrowser()を挿入する。

a <- 1
browser()

実行時にconsoleが起動し、対話的にコードを実行できる。

Browse[1]> a
[1] 1

説明

browser()が実行された箇所で参照できる変数や関数が自由にいじれる。

これはデバッグに大変便利。