#!/bin/sh if [ $# -lt 2 ]; then echo "usage: $0 " echo "will produce .trace" fi EXECFILE=$1 EXECMETHOD=$2 shift 2 cat < $EXECFILE.tmp set step-mode on file $EXECFILE break $EXECMETHOD run $* while 1==1 if \$pc != \$pc printf "==== ?\\n" end printf "\\n====BEGIN $EXECMETHOD\\n" printf "==== " x/i \$pc up set \$nfp = \$fp down while \$fp != \$nfp stepi printf "==== " x/i \$pc end printf "\\n====END $EXECMETHOD\\n" continue end quit END gdb < $EXECFILE.tmp > $EXECFILE.trace 2>/dev/null mv $EXECFILE.trace $EXECFILE.output awk -- '\ /^====BEGIN/ {ll = ("begin " $2);} \ /^==== / {print ll; ll = (" " substr($0, 5));} \ /^====END/ {print "end", $2;} ' $EXECFILE.output > $EXECFILE.trace echo instructions: `grep "^ " $EXECFILE.trace | wc -l` echo trace output: $EXECFILE.trace rm $EXECFILE.tmp $EXECFILE.output