【问题标题】:Debugging, I am trying to find where in this code these errors coming from调试,我试图在这段代码中找到这些错误来自哪里
【发布时间】:2021-12-30 14:48:58
【问题描述】:

尝试从我必须调试的脚本中诊断此输出。

make[1]: Entering directory '/home/dwulf/sifchain/sifchain-validators'
/bin/sh: 1: Syntax error: Unterminated quoted string
make[1]: *** [Makefile:59: sifnode-standalone-boot] Error 2
make[1]: Leaving directory '/home/dwulf/sifchain/sifchain-validators'
make: *** [Makefile:62: sifnode-standalone-wizard] Error 2

是否有调试器工具可以查找未终止的引号字符串来查找此错误?

【问题讨论】:

  • "是否有调试器工具来查找未终止的引号字符串以查找此错误?" - 只需在错误消息中注明的行打开 Makefile。如果您想知道如何调试由 CMake 项目 生成的文件中的错误,那么不太可能有这样的工具。很可能,通过查看这一行,您将很容易理解,您的CMakeLists.txt 的哪一部分是错误的。

标签: bash debugging cmake makefile string-search


【解决方案1】:

如果还没有,也许可以将 /bin/sh 链接到 /bin/bash。 Bash 对语法错误更加冗长。还可以尝试在 Makefile 文件中查找声明 /bin/sh 或执行它的行并将-x 添加到其中。除此之外,如果您在能够识别 Bash 语法的良好编辑器中找到该错误脚本并查找一些不一致的突出显示,则可以打开该脚本。

【讨论】:

    【解决方案2】:

    您可以进行二进制搜索以快速定位:在代码中间添加一个 echo cmd 以打印调试消息。如果它在错误消息之前打印,则错误位于脚本的后半部分。否则,就是上半场。因此,您已经消除了一半的搜索问题。现在,对剩下的一半做同样的事情(在一半的中间添加另一个回声)并根据需要重复多次。

    【讨论】: