アップデート:
この質問は@TylerRinkerのものとほぼ同じであるように見えるため、私は個人的にこの質問を重複としてマークしました。ただし、この特定の質問にはまだ回答がないと考えています。私はdebug/debugonce
それらが異なるツールであることを気に入っていますが (非常に便利ではありますが)、browser
コンテキストを制御する方法については引き続き興味があります。
__________________________________________________
元の質問:
browser
デバッグするときは、別のコンテキスト内からコンテキストにステップインすると簡単で、多くの場合役に立ちますbrowser
。ネストされたレベルが反復ループから呼び出された場合、終了して前のコンテキストに戻るには、反復ごとにステップ実行する必要があります。すべてのコンテキスト からのQ
出口による終了。 browser
質問は:
下位のコンテキストですべての反復を手動で進める必要なく、終了するコンテキストを指定する方法はありますか?
以下の例では、 100 回Browse [1]
ヒットせずに に戻ることを意味します。c
私が使用する 2 つは、
(1) 反復回数を変更するか、
(2) を使用Q
し、元の関数を再度呼び出してから、以前の場所に戻ります。
どちらも「素晴らしい」または「良い」イベントではありません。
例:
outerFunc <- function() {
# < ... cropped .. >
browser()
# < ... cropped .. >
}
outerFunc()
lapply(seq(100), function(i) browser(text=paste("i is #", i)))
これはウォークスルーです
> outerFunc()
Called from: outerFunc()
Browse[1]> lapply(seq(100), browser)
Called from: lapply(seq(100), browser)
Browse[2]> c
Called from: lapply(seq(100), browser)
Browse[2]> c
Called from: lapply(seq(100), browser)
Browse[2]> c
Called from: lapply(seq(100), browser)
Browse[2]> Q # <~~~~~~ `Q` quits all contexts
>