shell 调试技术,伪信号打印程序出错位置

#!/bin/sh

HOME_DIR=/home/xxx
CROSSTOOL_INSTALL_DIR=${HOME_DIR}/crosstool_install

# 必须要设置,可以根据FUNCNAME查到函数调用栈
# Inherit the fault handler in subshells and functions
set -E
#设置捕捉信号,ERR 当一条命令返回非零状态时(代表命令执行不成功)
trap die ERR

#trap 'echo "fun: ${FUNCNAME[0]} " ' DEBUG
#trap 'echo "LINENO: ${LINENO} " ' DEBUG
die()
{
 local ret=$?
 local depth
 #echo " Error: [FILE: $0 LINE: $1] exited with status $ret "
 #打印调用函数栈
 #echo " backtrace: ${FUNCNAME[@]} "
 for((depth=1; ${BASH_LINENO[$((${depth}-1))]}>0; depth++));
 do
        #file="${BASH_SOURCE[${depth}]#./}"
  file="${BASH_SOURCE[${depth}]}"
        func="${FUNCNAME[${depth}]}"
        line="${BASH_LINENO[${depth}-1]:-?}"
        echo "Backtrace: ${file}[${func}() <${line}>]"
    done
 #死循环等待ctrl + c
 while true
 do
  sleep 1
 done
}

CREATE_MAKE_DIR()
{
 #echo "test fun: ${FUNCNAME[@]} "
    if [[ -d ${CROSSTOOL_INSTALL_DIR} ]]
 then
 echo -e "${CROSSTOOL_INSTALL_DIR} is exit,no create"
 return 0
 fi
 #出错位置
 return 1;
}

#创建编译目录
CREATE_MAKE_DIR

验证打印:

215909_ovE8_1387344.png

打印错误位置

215910_mIFp_1387344.png

 

 

转载于:https://my.oschina.net/biliangzu/blog/652179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值