博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell 调试技术,伪信号打印程序出错位置
阅读量:6846 次
发布时间:2019-06-26

本文共 1000 字,大约阅读时间需要 3 分钟。

hot3.png

#!/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

你可能感兴趣的文章
如何学好C语言
查看>>
Linux学习之CentOS(十)--虚拟机下的CentOS如何上网
查看>>
html5的postmessage实现js前端跨域访问及调用解决方案
查看>>
vscode的 ESLINT 检查vue,js文件配置说明
查看>>
实现Div层里的文字垂直居中的方法
查看>>
我的友情链接
查看>>
谁说使用Python你就写不出混乱的代码?
查看>>
网桥和交换机的区别
查看>>
使用Raspcontrol在线查看树莓派各项情况
查看>>
超强JIRA流程图
查看>>
java 导出excel表格
查看>>
android好帖子
查看>>
使用EqualsBuilder和HashCodeBuilder重写equals、hashCode方法
查看>>
合理信息安全设备的选择 选型依据分析
查看>>
操作Visual Studio 2010中的SQL Server数据库比较工具
查看>>
partition underscore
查看>>
component develope
查看>>
通向架构师的道路(二)--之apache tomcat https应用
查看>>
理解会话
查看>>
学习Linux决心书
查看>>