#!/bin/sh # # Wait for a command to run and then trap it in gdb. # set -x pid=0 #timeout=$((30)) timeout=$((30*5)) tick=0 GDB=gdb waitname=$1 if [ "x$waitname" = "x" ]; then echo "$0: no program name specified" fi until [ $tick = $timeout ]; do #line=$(killall -s -0 $waitname 2>/dev/null) # Linux doesn't like -s... #line=$(killall -v -0 $waitname 2>&1) #last=$? #if [ $last = 0 ]; then #pid=$(echo $line | awk '{print $NF}') pid=$(pidof $waitname) if [ "x$pid" != "x" ]; then break fi #break #fi echo -n '.' #sleep 1 sleep 0.2 tick=$((tick+1)) done if [ $pid = 0 ]; then echo "$0: timed out waiting for $waitname" exit 1 fi echo "running gdb with pid $pid" # FreeBSD: #exec $GDB -e $waitname -p $pid # Linux: #exec $GDB --se=$waitname $pid exec $GDB $waitname $pid