From ef6620543626c371684a99ded5e0a928ea654ed3 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 2 Aug 2018 17:01:28 -0400 Subject: [PATCH] mach: Add ndk-stack command for android crash logs. --- python/servo/devenv_commands.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/python/servo/devenv_commands.py b/python/servo/devenv_commands.py index c6a3f8527ba..ff961df9033 100644 --- a/python/servo/devenv_commands.py +++ b/python/servo/devenv_commands.py @@ -14,6 +14,7 @@ from time import time import sys import urllib2 import json +import subprocess from mach.decorators import ( CommandArgument, @@ -227,3 +228,26 @@ class MachCommands(CommandBase): with cd(self.context.topdir): return self.call_rustup_run(["cargo", "fetch"], env=self.build_env()) + + @Command('ndk-stack', + description='Invoke the ndk-stack tool with the expected symbol paths', + category='devenv') + @CommandArgument('--release', action='store_true', help="Use release build symbols") + @CommandArgument('--target', action='store', default="armv7-linux-androideabi", + help="Build target") + @CommandArgument('logfile', action='store', help="Path to logcat output with crash report") + def stack(self, release, target, logfile): + if not path.isfile(logfile): + print(logfile + " doesn't exist") + return -1 + env = self.build_env(target=target) + ndk_stack = path.join(env["ANDROID_NDK"], "ndk-stack") + sym_path = path.join( + "target", + target, + "release" if release else "debug", + "apk", + "obj", + "local", + "armeabi-v7a") + print(subprocess.check_output([ndk_stack, "-sym", sym_path, "-dump", logfile]))