1

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

4

1 回答 1

2

您可以通过重载 DO 函数(假设所有脚本都使用 DO 而不是 LOAD 或 READ 加载到内存中)来跟踪错误发生之前执行的最后一个脚本(仅当 system/options/quiet 被您正在加载的库,因此您看不到每个加载脚本的 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)。

于 2010-04-14T21:52:48.310 回答