X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=usttrace;h=94404dde6d56e0bba1ef9aee9f299d328ba9f361;hb=cf1da69dd47917f75147ab38f6041ad0fe66d952;hp=6ffc988c4d52b4620325f536b4049803a9d1c2a7;hpb=d169a27dd79a872d5c44f0547a2bb33bb8402b80;p=ust.git diff --git a/usttrace b/usttrace index 6ffc988..94404dd 100755 --- a/usttrace +++ b/usttrace @@ -54,9 +54,12 @@ function usage () { echo " -m Instrument malloc calls." 2>/dev/stderr echo " -f Also trace forked processes." 2>/dev/stderr echo " -s Use system-wide daemon instead of creating one for this session." 2>/dev/stderr + echo " -S Specify the subbuffer size." 2>/dev/stderr + echo " -N Specify the number of subbuffers." 2>/dev/stderr + echo " -o Output directory of the trace." 2>/dev/stderr } -while getopts ":hlLmfsW" options; do +while getopts ":hlLmfsWS:N:o:" options; do case $options in l) arg_preload_libust=1;; L) arg_ld_std_ust=1;; @@ -64,6 +67,9 @@ while getopts ":hlLmfsW" options; do f) arg_preload_fork=1;; s) arg_syswide_daemon=1;; W) where=1;; + S) export UST_SUBBUF_SIZE=$OPTARG;; + N) export UST_SUBBUF_NUM=$OPTARG;; + o) OUTPUT_DIR=$OPTARG;; h) usage; exit 0;; \?) usage @@ -96,9 +102,20 @@ then fi # Create directory for trace output -DATESTRING="$(hostname)-$(date +%Y%m%d%H%M%S%N)" -OUTDIR="$BASE_TRACE_DIR/$DATESTRING" -mkdir -p "$OUTDIR" +if [ -n "$OUTPUT_DIR" ]; then + OUTDIR=$OUTPUT_DIR +else + DATESTRING="$(hostname)-$(date +%Y%m%d%H%M%S%N)" + OUTDIR="$BASE_TRACE_DIR/$DATESTRING" +fi + +# Check if directory exist +if [ ! -d "$OUTDIR" ]; then + mkdir -p $OUTDIR + if [ $? -eq 1 ]; then + exit 1 + fi +fi # Choose ustd socket path USTDSOCKPATH="/tmp/ustd-sock-$$" @@ -128,27 +145,54 @@ fi if [ "$arg_preload_libust" = "1" ]; then - if [ -n "${LIBUST_PATH%libust.so}" ] ; then - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + if [ -n "${LIBUST_PATH%libust.so}" ]; + then + if [ -n "$LD_LIBRARY_PATH" ]; + then + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + else + export LD_LIBRARY_PATH="${LIBUST_PATH%libust.so}" + fi + fi + if [ -n "$LIBUST_PATH" ]; + then + if [ -n "$LD_PRELOAD" ]; + then + export LD_PRELOAD="$LD_PRELOAD:$LIBUST_PATH" + else + export LD_PRELOAD="$LIBUST_PATH" + fi fi - export LD_PRELOAD="$LD_PRELOAD:$LIBUST_PATH" fi - if [ "$arg_ld_std_ust" = "1" ]; + if [ "$arg_ld_std_ust" = "1" ] && [ -n "${LIBUST_PATH%libust.so}" ]; then - if [ -n "$${LIBUST_PATH%libust.so}" ] ; then - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + if [ -n "$LD_LIBRARY_PATH" ]; + then + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + else + export LD_LIBRARY_PATH="${LIBUST_PATH%libust.so}" fi fi - if [ "$arg_preload_malloc" = "1" ]; + if [ "$arg_preload_malloc" = "1" ] && [ -n "$LIBMALLOCWRAP_PATH" ]; then - export LD_PRELOAD="$LD_PRELOAD:$LIBMALLOCWRAP_PATH" + if [ -n "$LD_PRELOAD" ]; + then + export LD_PRELOAD="$LD_PRELOAD:$LIBMALLOCWRAP_PATH" + else + export LD_PRELOAD="$LIBMALLOCWRAP_PATH" + fi fi - if [ "$arg_preload_fork" = "1" ]; + if [ "$arg_preload_fork" = "1" ] && [ -n "$LIBINTERFORK_PATH" ]; then - export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH" + if [ -n "$LD_PRELOAD" ]; + then + export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH" + else + export LD_PRELOAD="$LIBINTERFORK_PATH" + fi fi # Execute the command