Skip silent sources on session-archive -- fixes #7699
[ardour.git] / gtk2_ardour / arprof
index 05a469cb1763d38a773af6bf3f8dd1bed6ec2a36..1b66a856efad327c462e26fbd58c4b0bebdfdfa6 100755 (executable)
@@ -1,9 +1,32 @@
 #!/bin/sh
 
-if [ gprofhelper.c -nt gprofhelper.so ] ; then 
-    echo "Recompiling gprof helper ..."
-    gcc -shared -nostdlib -fPIC gprofhelper.c -o gprofhelper.so -lpthread -ldl || exit 1
-fi
+# Ardour profiler using callgrind
+# intended for use with the 'Dummy' backend engine.
+#
+# inspect data with kcachegrind
+# see http://valgrind.org/docs/manual/cl-manual.html and
+# http://log.fundamental-code.com/2013/09/07/profiling-realtime-code
 
-. ardev_common.sh
-LDPRELOAD=./gprofhelper.so $EXECUTABLE $*
+TOP=`dirname "$0"`/..
+. $TOP/build/gtk2_ardour/ardev_common_waf.sh
+LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
+export ARDOUR_RUNNING_UNDER_VALGRIND=TRUE
+
+
+# depending on options, there can be many files (one per thread,
+# one per process cycle,..) dump them in a dedicated place.
+mkdir -p /tmp/ardour_profile/
+
+## some options to drop in
+#  --zero-before="ARDOUR::AudioEngine::process_callback*" \
+#  --dump-after="ARDOUR::AudioEngine::process_callback*" \
+## and/or
+#  --toggle-collect="ARDOUR::AudioEngine::process_callback*" \
+
+exec valgrind --tool=callgrind \
+  --dump-instr=yes --collect-jumps=yes\
+  --separate-threads=yes \
+  --collect-systime=yes --collect-bus=yes \
+  --callgrind-out-file=/tmp/ardour_profile/ardour-%p.log \
+       --toggle-collect="ARDOUR::AudioEngine::process_callback*" \
+  $TOP/$EXECUTABLE --novst "$@"