#!/bin/bash # This file is part of mutrace. # # Copyright 2009 Lennart Poettering # # mutrace is free software: you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # mutrace is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with mutrace. If not, see . if ! TEMP=`getopt -o +ardh --long hash-size:,frames:,locked-min:,owner-changed-min:,contended-min:,max:,trap,help,all,debug-info -n mutrace -- "$@"` ; then exit 1 fi eval set -- "$TEMP" debug_info=0 while : ; do case $1 in --hash-size) export MUTRACE_HASH_SIZE="$2" shift 2 ;; --frames) export MUTRACE_FRAMES="$2" shift 2 ;; --locked-min) export MUTRACE_LOCKED_MIN="$2" shift 2 ;; --owner-changed-min) export MUTRACE_OWNER_CHANGED_MIN="$2" shift 2 ;; --contended-min) export MUTRACE_CONTENDED_MIN="$2" shift 2 ;; --max) export MUTRACE_MAX="$2" shift 2 ;; --trap) export MUTRACE_TRAP=1 shift 1 ;; -r|--track-rt) export MUTRACE_TRACK_RT=1 shift 1 ;; -d|--debug-info) debug_info=1 shift 1 ;; -a|--all) export MUTRACE_LOCKED_MIN=0 export MUTRACE_OWNER_CHANGED_MIN=0 export MUTRACE_CONTENDED_MIN=0 export MUTRACE_MAX=0 shift 1 ;; -h|--help) cat <&2 exit 1 ;; esac done shift $(($OPTIND-1)) if [ x"$1" = x ] ; then echo "Please specify an application to profile!" >&2 exit 1 fi if [ x"$LD_PRELOAD" = x ] ; then export LD_PRELOAD="libmutrace.so" else export LD_PRELOAD="$LD_PRELOAD:libmutrace.so" fi if [ x"$debug_info" = x1 ] ; then export LD_PRELOAD="$LD_PRELOAD:libmutrace-backtrace-symbols.so" fi exec "$@"