Add an option to run art tests with strace.

Bug: 19894268
Change-Id: I0a315a30e4e7d6d497b21205dc2a2b18b2170328
diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk
index 38973f7..ee6c2ef 100644
--- a/test/Android.run-test.mk
+++ b/test/Android.run-test.mk
@@ -615,6 +615,9 @@
   else
     run_test_options += --build-with-javac-dx
   endif
+  ifeq ($(ART_TEST_WITH_STRACE),true)
+    run_test_options += --strace
+  endif
   ifeq ($(ART_TEST_RUN_TEST_ALWAYS_CLEAN),true)
     run_test_options += --always-clean
   endif
diff --git a/test/run-test b/test/run-test
index f5fff09a..bdf680b 100755
--- a/test/run-test
+++ b/test/run-test
@@ -117,6 +117,7 @@
 output="output.txt"
 build_output="build-output.txt"
 cfg_output="graph.cfg"
+strace_output="strace-output.txt"
 lib="libartd.so"
 run_args="--quiet"
 build_args=""
@@ -137,6 +138,7 @@
 basic_verify="false"
 gc_verify="false"
 gc_stress="false"
+strace="false"
 always_clean="no"
 never_clean="no"
 have_dex2oat="yes"
@@ -235,6 +237,10 @@
         run_args="${run_args} --gdb"
         dev_mode="yes"
         shift
+    elif [ "x$1" = "x--strace" ]; then
+        strace="yes"
+        run_args="${run_args} --invoke-with strace --invoke-with -o --invoke-with $tmp_dir/$strace_output"
+        shift
     elif [ "x$1" = "x--zygote" ]; then
         run_args="${run_args} --zygote"
         shift
@@ -750,6 +756,11 @@
         echo '#################### diffs'
         diff --strip-trailing-cr -u "$expected" "$output" | tail -n 2000
         echo '####################'
+        if [ "$strace" = "yes" ]; then
+            echo '#################### strace output'
+            tail -n 2000 "$tmp_dir/$strace_output"
+            echo '####################'
+        fi
         echo ' '
     fi