首先,我不知道这是否是琐碎和常识;我不知道,所以在这里问。
我正在运行一个第三方应用程序,试图确定一个我需要找出调用堆栈的问题。
当我调用Bash脚本时,它会调用许多其他脚本和二进制文件,处理内容并退出。
我需要的是一种准确找出它调用了哪些脚本和二进制文件的方法。 pstree显示一个堆栈,但仅显示当前正在执行的进程。
答案 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