如何调试/跟踪 bash 函数?

如何调试/跟踪 bash 函数?

我有一个 bash 脚本myscript.sh,里面有很多函数。要运行一个函数,我会写

source myscript.sh; myfunction

如何调试这样的功能?

答案1

只需在要调试的部分之前添加这些行即可。

set -v -x -e

并禁用它。

set +v +x +e

答案2

在脚本中启用调试并使用functrace.

set -x
set -o functrace

答案3

您还应该能够在 Bash 中使用:

$ set -xT

这使得函数跟踪和

$ set +xT

禁用。

另外,参考另一个发布的答案,我不建议使用 -v 进行调试(详细模式),除非您正在检查脚本/shell 命令集的语法。有时有用的另一种(通用)解决方案是-n结合使用该选项-x。这将“运行”脚本/命令,而无需实际执行运行命令的最后一步。这通常可以让您在 shell 扩展等中发现困难的错误,而不会造成不必要的混乱。

相关内容