scripts:
[testub10.git] / scripts / dumpinstr.sh
diff --git a/scripts/dumpinstr.sh b/scripts/dumpinstr.sh
new file mode 100755 (executable)
index 0000000..0653bcc
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ $# -lt 2 ]; then
+       echo "usage: $0 <executable> <method> <args>"
+       echo "will produce <executable>.trace"
+fi
+
+EXECFILE=$1
+EXECMETHOD=$2
+
+shift 2
+
+cat <<END > $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