サーチ…


ブラウザを使用する

browser機能はブレークポイントのように使用できます。コードの実行は呼び出された時点で一時停止します。次に、ユーザーは変数の値を検査し、任意のRコードを実行し、行単位でコードをステップ実行できます。

コード内でbrowser()がヒットしたら、インタラクティブなインタプリタが起動します。どんなRコードも通常どおりに実行することができ、さらに以下のコマンドが存在します。

コマンド意味
c ブラウザを終了してプログラムを続行する
f 現在のループまたは関数を終了する\
n ステップオーバー(次のステートメントの評価、関数呼び出しのステップオーバー)
s ステップイン(次のステートメントの評価、関数呼び出しのステップ実行)
どこでスタックトレースを出力する
r 「再開」を起動して再起動する
Q ブラウザを終了して終了する

たとえば、次のようなスクリプトがあるとします。

toDebug <- function() {
    a = 1
    b = 2
    
    browser()
    
    for(i in 1:100) {
        a = a * b
    }
}

toDebug()

上記のスクリプトを実行すると、最初は次のようなものが表示されます。

Called from: toDebug
Browser[1]>

プロンプトと同様に対話することができますが、

Called from: toDebug
Browser[1]> a
[1] 1
Browser[1]> b
[1] 2
Browse[1]> n
debug at #7: for (i in 1:100) {
    a = a * b
}
Browse[2]> n
debug at #8: a = a * b
Browse[2]> a
[1] 1
Browse[2]> n
debug at #8: a = a * b
Browse[2]> a
[1] 2
Browse[2]> Q

browser()は、次のような機能チェーンの一部としても使用できます。

mtcars %>% group_by(cyl) %>% {browser()}

デバッグの使用

あなたはしてデバッグするための任意の関数を設定することができますdebug

debug(mean)
mean(1:3)

以降の関数呼び出しはデバッグモードになります。 undebugこの動作を無効にすることができます。

undebug(mean)
mean(1:3)

関数のデバッグモードに一度だけ入る必要があることがわかっている場合は、 debugonceの使用を検討してdebugonce

debugonce(mean)
mean(1:3)
mean(1:3)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow