vmm: Collect and report scheduler stats
[akaros.git] / scripts / bt-akaros.sh
1 #!/bin/bash
2 # Barret Rhoden (brho@cs.berkeley.edu)
3 #
4 # Resolves functions from an Akaros user backtrace.
5 # Pipe a backtrace (echo "huge-copy-paste" | ./thisfile.sh) to it.
6 # Be sure to set your environment paths for the SOLIBS and BIN
7
8 : ${SOLIBS_PREFIX:=~/akaros/ros-kernel/kern/kfs/lib/}
9 : ${SO_REGEX:=.*so$}
10 : ${BIN_PREFIX:=~/akaros/ros-kernel/kern/kfs/bin/}
11
12 # takes the path to the binary and offset (offset in hex), prints name of the
13 # function where the offset is in the binary.  basically a wrapper for
14 # addr2line.
15 function print_func()
16 {
17         addr2line -e $1 -fC $2 | xargs
18 }
19
20 while read line
21 do
22         binary=`echo $line | cut -f 6 -d ' '`
23         lib_off=`echo $line | cut -f 9 -d ' '`
24         app_off=`echo $line | cut -f 3 -d ' '`
25         if [[ $binary == "" ]]
26         then
27                 break
28         fi
29         echo -n $line " "
30         if [[ $binary =~ $SO_REGEX ]]
31         then
32                 # could also do addr=$(print_func $lib $off)
33                 print_func $SOLIBS_PREFIX/$binary $lib_off
34         else
35                 print_func $BIN_PREFIX/$binary $app_off
36         fi
37 done