Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash调试调用堆栈_Linux_Bash - Fatal编程技术网

Linux Bash调试调用堆栈

Linux Bash调试调用堆栈,linux,bash,Linux,Bash,我使用一个通用过程来捕获和描述错误或异常情况,而不是通常的“2>…”错误构造 我们的想法是采用类似以下简化版本的程序: function debug(){ echo "Fatal Error: $PWD:$BASH_SOURCE:$LINENO $*" .... exit 1 } 然后,如本例所示: [ -z "$PARAMETER" ] && debug The parameter was not provided 这些问题是: BASH_SOUR

我使用一个通用过程来捕获和描述错误或异常情况,而不是通常的“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_源代码[0]和BASH_源代码[1]提供“一些帮助”

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


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

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

set -x 

您可以为此使用bash内置命令“caller”。 链接-->