LUMIERA.clone/admin/vg-run.sh
Ichthyostega a6810957b4 Install: change organisation of target and output directory variables
now supporting a PREFIX in addition to the INSTALLDIR.
The latter is intended for package building
2011-01-29 14:10:19 +01:00

51 lines
1.4 KiB
Bash

#!/bin/bash
#
# vg-run.sh - convenience wrapper script to run an executable with valgrind
# using "typical options"; output goes to a logfile, which is
# fed to less afterwards.
#
# a valgrind suppression file is generated automatically, in
# case there is an executable "vgsuppression" located in the same
# directory as the target executable
#
# Ichthyo 8/2007
#
LOGFILE=,valgrind.log
SUPPRESS=vgsuppression
MODULEDIR=modules
VALGRINDFLAGS=${VALGRINDFLAGS:---leak-check=yes --show-reachable=yes --demangle=yes}
EXECUTABLE=$1
if [[ ! -x $EXECUTABLE ]]; then
echo -e "ERROR: executable \"$EXECUTABLE\" not found.\n\n"
exit -1
fi
PATHPREFIX=${EXECUTABLE%/*}
SUPPRESS="$PATHPREFIX/$SUPPRESS"
# need to set a library search path, because valgrind doesn't handle DT_RUNPATH and $ORIGIN properly
export LD_LIBRARY_PATH=$PATHPREFIX/$MODULEDIR:$LD_LIBRARY_PATH
if [[ -x $SUPPRESS ]]; then
if [[ $SUPPRESS -nt $SUPPRESS.supp ]]; then
echo 'generating valgrind supression file...'
valgrind $VALGRINDFLAGS -q --gen-suppressions=all $SUPPRESS 2>&1 \
| awk '/^{/ {i = 1;} /^}/ {i = 0; print $0;} {if (i == 1) print $0;}' >$SUPPRESS.supp
echo 'done.'
fi
SUPPRESSIONFLAG="--suppressions=$SUPPRESS.supp"
else
echo 'no suppression.'
fi
echo "running......$@"
valgrind $VALGRINDFLAGS --log-file=$LOGFILE.%p $SUPPRESSIONFLAG $@ &
PID=$!
wait $PID
less $LOGFILE.$PID