更容易找到jq代码中发生错误的地方?



是否有一种方法可以让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可能很有用。

相关内容

  • 没有找到相关文章

最新更新