R Language
отладка
Поиск…
Использование браузера
Функция 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)