debugging 在jq代码中查找错误发生位置的更简单方法?

zfycwa2u  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(108)

jq是否有方法在代码中 * 发生错误的地方a给予引用?

我经常会犯一些毫无帮助的错误。下面是一个例子:

jq: error (at <stdin>:43913): Cannot index object with null

不管有没有--slurp标志,stdin的行指示符几乎总是输入的最后一行。真正有用的是注意它在运行时在代码中的什么地方失败。
$__loc__将代码片段 Package 在try/catch块中也被证明是没有帮助的,因为代码中的行往往是catch块,而不是发生错误的地方。

jq: error (at <stdin>:43913) (not a string): {"file":"<top-level>","line":68}

是否有某种方法可以简化jq脚本的调试?

我一直在做的是注解掉大块的代码,并执行二进制搜索,以查找哪些代码出现错误。感觉有更好的方法。

jgovgodb

jgovgodb1#

有时候,使用gojq(“jq的Go实现”)可以很好地了解错误。
否则,您可能会发现debug语句、$__loc__和使用debug定义的调试函数的某种组合是最有帮助的。
例如,请考虑:

def debug(msg): (msg|debug) as $debug | . ;

(The这里微妙之处在于,您可以在msg中使用"\(.)"。)
在紧要关头,命令行选项--debug-trace可能很有用。

相关问题