Sha*_*ane 41
这不会给你行号,但它会告诉你调用堆栈中发生故障的位置非常有帮助:
traceback()
Run Code Online (Sandbox Code Playgroud)
[编辑:]从命令行运行脚本时,您将不得不跳过一个或两个调用,请参阅traceback()以获取交互式和非交互式R会话
没有通常的调试嫌疑人,我不知道另一种方法可以做到这一点:
[编辑:]抱歉......刚看到你从命令行运行它.在这种情况下,我建议使用选项(错误)功能.这是一个简单的例子:
options(error = quote({dump.frames(to.file=TRUE); q()}))
Run Code Online (Sandbox Code Playgroud)
您可以根据需要在错误条件下创建精心制作的脚本,因此您应该确定调试所需的信息.
否则,如果您关注的是特定区域(例如,连接到数据库),则将它们包装在tryCatch()函数中.
Hug*_*ins 12
执行options(error=traceback)提供有关导致错误的行内容的更多信息.如果出现错误,它会导致出现回溯,对于某些错误,它会有行号,前缀为#.但它的命中或错过,很多错误都不会得到行号.
Dir*_*tel 10
R 2.10及更高版本即将提供对此的支持.Duncan Murdoch于2009年9月10日刚刚发布了关于findLineNum和setBreapoint的 r-devel :
x <- " f <- function(a, b) {
if (a > b) {
a
} else {
b
}
}"
eval(parse(text=x)) # Normally you'd use source() to read a file...
findLineNum("<text>#3") # <text> is a dummy filename used by
parse(text=)
Run Code Online (Sandbox Code Playgroud)
您可以通过设置
options(show.error.locations = TRUE)
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么该设置不是R中的默认设置?应该如此,就像其他所有语言一样。
| 归档时间: |
|
| 查看次数: |
28486 次 |
| 最近记录: |