diff --git a/testrunner/.gitignore b/testrunner/.gitignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/testrunner/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/testrunner/run_command.py b/testrunner/run_command.py
index a98a943..ead80f1 100755
--- a/testrunner/run_command.py
+++ b/testrunner/run_command.py
@@ -145,7 +145,20 @@
       print subproc.communicate()[0]
     return subproc.returncode
   else:
+    # Need the full path to valgrind to avoid other versions on the system.
     subproc = subprocess.Popen(["/usr/bin/valgrind", "-q", full_path],
                                stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
     subproc.wait()
     return subproc.returncode
+
+
+def HasValgrind():
+  """Check that /usr/bin/valgrind exists.
+
+  We look for the fullpath to avoid picking up 'alternative' valgrind
+  on the system.
+
+  Returns:
+    True if a system valgrind was found.
+  """
+  return os.path.exists("/usr/bin/valgrind")
diff --git a/testrunner/runtest.py b/testrunner/runtest.py
index a87f9b5..05d29ec 100755
--- a/testrunner/runtest.py
+++ b/testrunner/runtest.py
@@ -369,10 +369,13 @@
       if run_command.RunHostCommand(f) != 0:
         logger.Log("%s... failed" % f)
       else:
-        if run_command.RunHostCommand(f, valgrind=True) == 0:
-          logger.Log("%s... ok\t\t[valgrind: ok]" % f)
+        if run_command.HasValgrind():
+          if run_command.RunHostCommand(f, valgrind=True) == 0:
+            logger.Log("%s... ok\t\t[valgrind: ok]" % f)
+          else:
+            logger.Log("%s... ok\t\t[valgrind: failed]" % f)
         else:
-          logger.Log("%s... ok\t\t[valgrind: failed]" % f)
+          logger.Log("%s... ok\t\t[valgrind: missing]" % f)
 
     # Run on the device
     logger.Log("\nRunning on target")
@@ -380,9 +383,15 @@
       full_path = os.path.join(os.sep, "system", "bin", f)
 
       # Single quotes are needed to prevent the shell splitting it.
-      status = self._adb.SendShellCommand("'%s >/dev/null 2>&1;echo -n $?'" %
+      output = self._adb.SendShellCommand("'%s 2>&1;echo -n exit code:$?'" %
                                           full_path)
-      logger.Log("%s... %s" % (f, status == "0" and "ok" or "failed"))
+      success = output.endswith("exit code:0")
+      logger.Log("%s... %s" % (f, success and "ok" or "failed"))
+      # Print the captured output when the test failed.
+      if not success or self._options.verbose:
+        pos = output.rfind("exit code")
+        output = output[0:pos]
+        logger.Log(output)
 
       # Cleanup
       self._adb.SendShellCommand("rm %s" % full_path)
