Rebol告诉错误和行,但它没有说明在什么源文件中,有没有办法从系统变量或其他方式获取此信息(不仅是起始脚本)?
答案 0 :(得分:2)
您可以通过重载DO函数来实现这一点(假设所有脚本都使用DO而不是LOAD或READ加载到内存中)来跟踪错误发生之前执行的最后一个脚本(仅当系统/选项/安静被转换时才需要)您正在加载的库关闭,因此您没有看到每个已加载脚本的DO本机日志行。)
do: func [value /args arg /next][
if file? value [print ["DOing script:" value]]
case [
args [system/words/do/args value arg]
next [system/words/do/next value]
;-- args + next is possible, but never used in practice
]
]
在REBOL中,准确地将运行时错误链接到源代码并不总是很简单。一旦加载到内存中,就无法告知任何代码块的来源(文件或URL)。要么在加载阶段之前找到一种方法来捕获它,要么在控制台中使用详细跟踪输出(使用TRACE函数或通常更好,使用精心放置的PRINT和/或PROBE)。