设为首页 - 加入收藏 焦点技术网
热搜:java
当前位置:首页 >

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

2016-04-04 09:53:28.0 java  
导读:shell 使用信号机制打印执行错误位置,无法做到打印函数栈。。。

#!/bin/sh

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

#set -x #启动"-x"选项
#设置捕捉信号,ERR 当一条命令返回非零状态时(代表命令执行不成功)
trap 'die ${LINENO} ' ERR

#trap 'echo "fun: ${FUNCNAME[0]} " ' DEBUG
#trap 'echo "LINENO: ${LINENO} " ' DEBUG
die()
{
 echo " Error: [FILE: $0 LINE: $1] exited with status $?"
 #打印调用函数栈
 #echo " backtrace: ${FUNCNAME[@]} "
 
 #死循环等待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

验证打印:

打印错误位置

(编辑: biliangzu)

网友评论
相关文章