scripts:
[testub10.git] / scripts / dumpinstr.sh
1 #!/bin/sh
2
3 if [ $# -lt 2 ]; then
4         echo "usage: $0 <executable> <method> <args>"
5         echo "will produce <executable>.trace"
6 fi
7
8 EXECFILE=$1
9 EXECMETHOD=$2
10
11 shift 2
12
13 cat <<END > $EXECFILE.tmp
14
15 set step-mode on
16
17 file $EXECFILE
18 break $EXECMETHOD
19
20 run $*
21
22 while 1==1
23
24 if \$pc != \$pc
25 printf "==== ?\\n"
26 end
27
28 printf "\\n====BEGIN $EXECMETHOD\\n"
29
30 printf "==== "
31 x/i \$pc
32
33 up
34 set \$nfp = \$fp
35 down
36
37 while \$fp != \$nfp
38 stepi
39 printf "==== "
40 x/i \$pc
41 end
42
43 printf "\\n====END $EXECMETHOD\\n"
44
45 continue
46
47 end
48
49 quit
50
51 END
52
53 gdb < $EXECFILE.tmp > $EXECFILE.trace 2>/dev/null
54
55 mv $EXECFILE.trace $EXECFILE.output
56
57 awk -- '\
58 /^====BEGIN/ {ll = ("begin " $2);} \
59 /^==== / {print ll; ll = (" " substr($0, 5));} \
60 /^====END/ {print "end", $2;}
61 ' $EXECFILE.output > $EXECFILE.trace
62
63 echo instructions: `grep "^  " $EXECFILE.trace | wc -l`
64 echo trace output: $EXECFILE.trace
65
66 rm $EXECFILE.tmp $EXECFILE.output