是否有一种方法可以让jq在发生错误的代码中给出的引用?
我经常以没有帮助的错误告终。下面是一个例子:
jq: error (at <stdin>:43913): Cannot index object with null
不管有没有——slurp标志,stdin的行指示符几乎总是输入的最后一行。真正有帮助的是注意它在运行时在代码的哪个地方失败了。
用$__loc__
包装try/catch块中的代码片段也被证明是没有帮助的,因为代码中的行往往是catch块,而不是发生错误的地方。
jq: error (at <stdin>:43913) (not a string): {"file":"<top-level>","line":68}
是否有一些方法可以使调试jq脚本更容易?
我一直在做的是注释掉大块的代码,并执行二进制搜索哪些代码得到错误。感觉有更好的办法。
有时,使用gojq (" jq"的Go实现)可以很好地了解错误。
否则,您可能会发现debug
语句、$__loc__
和使用debug
定义的调试函数的一些组合是最有帮助的。
考虑,例如:
def debug(msg): (msg|debug) as $debug | . ;
(这里的微妙之处在于您可以在msg
中使用"(.)"
)
必要时,命令行选项--debug-trace
可能很有用。