Index: build/android/buildbot/bb_device_steps.py |
diff --git a/build/android/buildbot/bb_device_steps.py b/build/android/buildbot/bb_device_steps.py |
index f4e7f8dada4b18abb5dab35ea6e614aa1742e9c1..cc4ea22daf8a88cda6eec3c4f6cd01a208a4e0ca 100755 |
--- a/build/android/buildbot/bb_device_steps.py |
+++ b/build/android/buildbot/bb_device_steps.py |
@@ -530,6 +530,23 @@ def LogcatDump(options): |
RunCmd(['cat', logcat_file]) |
+def RunStackToolSteps(options): |
+ """Run stack tool steps. |
+ |
+ Stack tool is run for logcat dump, optionally for ASAN. |
+ """ |
+ bb_annotations.PrintNamedStep('Run stack tool with logcat dump') |
+ logcat_file = os.path.join(CHROME_OUT_DIR, options.target, 'full_log') |
+ RunCmd([os.path.join(CHROME_SRC_DIR, 'third_party', 'android_platform', |
+ 'development', 'scripts', 'stack'), |
+ '--more-info', logcat_file]) |
+ if options.asan_symbolize: |
+ bb_annotations.PrintNamedStep('Run stack tool for ASAN') |
+ RunCmd([ |
+ os.path.join(CHROME_SRC_DIR, 'build', 'android', 'asan_symbolize.py'), |
+ '-l', logcat_file]) |
+ |
+ |
def GenerateTestReport(options): |
bb_annotations.PrintNamedStep('test_report') |
for report in glob.glob( |
@@ -566,6 +583,8 @@ def MainTestWrapper(options): |
finally: |
# Run all post test steps |
LogcatDump(options) |
+ if not options.disable_stack_tool: |
+ RunStackToolSteps(options) |
GenerateTestReport(options) |
# KillHostHeartbeat() has logic to check if heartbeat process is running, |
# and kills only if it finds the process is running on the host. |
@@ -602,7 +621,10 @@ def GetDeviceStepsOptParser(): |
parser.add_option( |
'--logcat-dump-output', |
help='The logcat dump output will be "tee"-ed into this file') |
- |
+ parser.add_option('--disable-stack-tool', action='store_true', |
+ help='Do not run stack tool.') |
+ parser.add_option('--asan-symbolize', action='store_true', |
+ help='Run stack tool for ASAN') |
return parser |