Для отладки функции foo
в файле foo.R
foo <- function() {
a <- c(2, 3)
}
можно написать "драйверный" файл
source("foo.R")
debug(f)
f()
Это может быть тривиально расширено для многих таких функций в той же области.
Отладка функции bar()
внутри тела foo
немного утомительна
foo <- function() {
bar <- function() {
a <- c(2, 3)
}
bar()
}
можно начать с того же файла драйвера (на практике это тестовый файл), загрузить bar()
, не запуская его, набрать debug(bar)
в приглашении отладки, а затем запустить bar()
. Мне интересно, есть ли лучший способ многократного закрытия.
Есть ли способ указать в драйвере / тестовом файле, что я хочу отлаживать внутреннюю функцию bar
, что-то вроде debug(foo::bar)
?
Предоставляет ли R стандартный синтаксис для обращения к внутренним функциям (например, вложенным функциям, замыканиям и т. Д.)?
Связанные вопросы:
trace()
- хорошее место для поиска. Вы также можете изучить что-то вродеsetBreakpoint()
, но в нем используется номер строки, а не имена функций. - person MrFlick   schedule 01.03.2018trace(foo, quote(debug(bar)), at=3)
, но вы должны установитьat=
в некоторую точку после определения функции и до ее вызова, так что это не круто. - person MrFlick   schedule 01.03.2018