如果我已经通过 using 进入 R 调试器options(error=recover)
,我如何才能了解我的方位并查看它在哪里丢弃了我的代码?例如:
options(error=recover)
solve(matrix(0, nrow=5, ncol=5))
# Error in solve.default(matrix(0, nrow = 5, ncol = 5)) :
# Lapack routine dgesv: system is exactly singular: U[1,1] = 0
#
# Enter a frame number, or 0 to exit
#
# 1: solve(matrix(0, nrow = 5, ncol = 5))
# 2: solve.default(matrix(0, nrow = 5, ncol = 5))
#
# Selection: 1
# Called from: top level
Browse[1]>
在这一点上,如果我点击nor return,我会再次死去并得到recover
提示,而看不到任何代码行。如果我进行堆栈跟踪(类型where
),我可以看到调用链,但看不到我实际所在的代码(在堆栈的任何级别)。 [实际上在这种solve
情况下我确实看到了一些代码,但这只是因为一个匿名函数是堆栈的一部分,所以它别无选择,只能打印其定义而不是其名称。]
有小费吗?
[编辑] 我(除其他外)对我需要弄清楚某人的包代码中发生了什么的用例感兴趣。我不控制源,所以我不能添加 a browser()
,而且我不能轻松访问源文件,所以只是一个行号不会有太大帮助。我主要只是想看看实际的代码。