Bash调试调用堆栈

时间:2016-08-08 00:17:33

标签: linux bash

我正在使用通用程序来捕获和描述错误或异常情况,而不是通常的“2> ...”错误构造。

这个想法将是一个像这个简化版本的程序:

function debug(){
    echo "Fatal Error: $PWD:$BASH_SOURCE:$LINENO $*"
    ....
    exit 1
}

然后,在此示例中使用:

[ -z "$PARAMETER" ] && debug The parameter was not provided

问题是:

  • BASH_SOURCE是正在运行的来源。如果过程'debug'是全局的,那么想法是显示调用源。
  • LINENO是执行扩展的行,没有调用地址。

注意:BASH_SOURCE [0]和BASH_SOURCE [1]在程序来源时提供“一些帮助”。

这将用于在集中的错误消息过程中通知“用户”错误。这可能包括syslog中的帖子和其他日志文件。但是,有些消息可能看起来很相似,并且知道在源代码中检测到错误的位置,可以帮助开发人员。

是否有任何方法可以在bash上获得调用堆栈

2 个答案:

答案 0 :(得分:2)

您可以使用bash内置命令“caller”。 链接 - > http://wiki.bash-hackers.org/commands/builtin/caller

答案 1 :(得分:0)

如果在脚本中添加以下行,系统将显示脚本的执行流程:

set -x