Поиск…


Использование браузера

Функция browser может использоваться как точка останова: выполнение кода приостанавливается в том месте, которое вызывается. Затем пользователь может затем проверить значения переменных, выполнить произвольный R-код и пройти через код по строкам.

Как только browser() попадет в код, начнется интерактивный интерпретатор. Любой R-код можно запускать как обычно, и, кроме того, присутствуют следующие команды,

команда Имея в виду
с Выйти из браузера и продолжить программу
е Завершить текущий цикл или функцию \
N Step Over (оценить следующий оператор, перейдя через вызовы функций)
s Step Into (оценивать следующий оператор, вступая в вызовы функций)
где Трассировка стека печати
р Вызов «возобновить» перезапуск
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(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