File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -188,6 +188,7 @@ function nhcmain_init_env() {
188188
189189 # Static variables
190190 PATH=" /sbin:/usr/sbin:/bin:/usr/bin"
191+ PS4=' >[${BASH_SOURCE##*/}:${LINENO}:${FUNCNAME[0]}()]> '
191192 SYSCONFIGDIR=" /etc/sysconfig"
192193 LIBEXECDIR=" /usr/libexec"
193194 if [[ -r /proc/sys/kernel/hostname ]]; then
@@ -208,7 +209,7 @@ function nhcmain_init_env() {
208209 FORCE_SETSID=1
209210 NHC_FD_OUT=1
210211 NHC_FD_ERR=2
211- export PATH SYSCONFIGDIR LIBEXECDIR HOSTNAME HOSTNAME_S RET LOGGER_TEXT
212+ export PATH PS4 SYSCONFIGDIR LIBEXECDIR HOSTNAME HOSTNAME_S RET LOGGER_TEXT
212213 export NHC_PID NHC_START_TS WATCHDOG_PID FAIL_CNT FORCE_SETSID NHC_FD_OUT NHC_FD_ERR
213214
214215 # Users may override this in /etc/sysconfig/nhc.
Original file line number Diff line number Diff line change @@ -115,6 +115,35 @@ function array_join() {
115115 fi
116116 fi
117117}
118+
119+ ### Show a stack trace of bash functions and file locations
120+ function bash_stack_trace() {
121+ local FRAME ARGS ARGC i
122+ local -a ARGV=( "${BASH_ARGV[@]}" )
123+
124+ for ((FRAME=1; FRAME < ${#FUNCNAME[*]}; FRAME++)); do
125+ ARGS=""
126+ if shopt -q extdebug; then
127+ ARGC=${BASH_ARGC[$FRAME]:-0}
128+ if [[ $ARGC -gt 0 ]]; then
129+ for ((i=1; i <= ARGC; i++)); do
130+ if [[ ${ARGV[ARGC-i]} == *[[:space:]]* ]]; then
131+ ARGV[ARGC-i]=\"${ARGV[ARGC-i]//\"/\\\"}\"
132+ fi
133+ ARGS+=${ARGV[ARGC-i]}', '
134+ if [[ $ARGC -eq $i ]]; then
135+ ### FIXME: BASH bug? "unset ARGV[0]" deletes the whole array!
136+ ARGV=( "${ARGV[@]:1}" )
137+ else
138+ unset ARGV[ARGC-i]
139+ fi
140+ done
141+ ARGS="${ARGS%, }"
142+ fi
143+ fi
144+ echo "[BT]: ${FUNCNAME[$FRAME]}($ARGS) at ${BASH_SOURCE[$FRAME]:-<UNK-FILE>}:${BASH_LINENO[$((FRAME-1))]:-<UNK-LINE>}"
145+ done
146+ }
118147###########################################################
119148
120149# Define regexp match check conditionally based on bash version.
You can’t perform that action at this time.
0 commit comments