From e9f79a2e999502b86c733115d31729fbd435cbf2 Mon Sep 17 00:00:00 2001 From: jaseg Date: Tue, 22 Aug 2017 20:13:10 +0200 Subject: Add profiling script --- fw/profile.gdb | 5 +++++ fw/profile.sh | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 fw/profile.gdb create mode 100644 fw/profile.sh diff --git a/fw/profile.gdb b/fw/profile.gdb new file mode 100644 index 0000000..fd26540 --- /dev/null +++ b/fw/profile.gdb @@ -0,0 +1,5 @@ +set pagination off +target remote localhost:3333 +while(1) + continue +end diff --git a/fw/profile.sh b/fw/profile.sh new file mode 100644 index 0000000..b209a14 --- /dev/null +++ b/fw/profile.sh @@ -0,0 +1,26 @@ +#!/bin/sh +NLOOPS=1000 +SLEEP=0.1 + +[ $# -lt 1 ] && echo "ERROR: Not enough arguments" && exit 2 +elffile="$1" + +trap "exit" SIGINT + +logfile=$(mktemp) + +arm-none-eabi-gdb -x profile.gdb "$elffile" > "$logfile" 2>/dev/null& +gdbpid=$! +trap "kill -TERM $gdbpid; rm $logfile" EXIT +echo "Gathering..." +for i in $(seq 1 $NLOOPS); do + echo "$i/$NLOOPS" + kill -INT $gdbpid + sleep $SLEEP +done +kill -TERM $gdbpid +trap "rm '$logfile'" EXIT + +egrep -o '\w+ \(.*\) at .*' "$logfile" |cut -d' ' -f1|sort|uniq -c|sort -n +echo 'Total:' $(egrep -c '\w+ \(.*\) at .*' "$logfile") + -- cgit