在Bash中显示通话堆栈

时间:2018-08-02 12:16:52

标签: linux bash trace

首先,我不知道这是否是琐碎和常识;我不知道,所以在这里问。

我正在运行一个第三方应用程序,试图确定一个我需要找出调用堆栈的问题。

当我调用Bash脚本时,它会调用许多其他脚本和二进制文件,处理内容并退出。

我需要的是一种准确找出它调用了哪些脚本和二进制文件的方法。 pstree显示一个堆栈,但仅显示当前正在执行的进程。

2 个答案:

答案 0 :(得分:2)

使用bash -x运行脚本,它将在标准错误时产生输出,以显示执行的每个命令。

答案 1 :(得分:0)

function stacktrace { 
   local i=1
   while caller $i | read line func file; do 
      echo >&2 "[$i] $file:$line $func(): $(sed -n ${line}p $file)"
      ((i++))
   done
}

来自https://gitlab.com/kyb/autorsync/-/blob/master/utils.bash#L84

相关问题