Rebol:我如何知道执行多个文件(如库)时错误的来源

时间:2009-12-11 10:04:28

标签: rebol

Rebol告诉错误和行,但它没有说明在什么源文件中,有没有办法从系统变量或其他方式获取此信息(不仅是起始脚本)?

1 个答案:

答案 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)。