mirror of
https://github.com/servo/servo.git
synced 2025-06-29 11:33:39 +01:00
Add mach command to setup remote debugging on Android devices.
This commit is contained in:
parent
6e844f2278
commit
4fe41c69d3
2 changed files with 58 additions and 1 deletions
|
@ -8,10 +8,12 @@
|
||||||
# except according to those terms.
|
# except according to those terms.
|
||||||
|
|
||||||
from __future__ import print_function, unicode_literals
|
from __future__ import print_function, unicode_literals
|
||||||
from os import path, listdir
|
from os import path, listdir, getcwd
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
|
import signal
|
||||||
import sys
|
import sys
|
||||||
|
import tempfile
|
||||||
import urllib2
|
import urllib2
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -265,3 +267,57 @@ class MachCommands(CommandBase):
|
||||||
"local",
|
"local",
|
||||||
self.config["android"]["lib"])
|
self.config["android"]["lib"])
|
||||||
print(subprocess.check_output([ndk_stack, "-sym", sym_path, "-dump", logfile]))
|
print(subprocess.check_output([ndk_stack, "-sym", sym_path, "-dump", logfile]))
|
||||||
|
|
||||||
|
@Command('ndk-gdb',
|
||||||
|
description='Invoke ndk-gdb 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")
|
||||||
|
def ndk_gdb(self, release, target):
|
||||||
|
env = self.build_env(target)
|
||||||
|
self.handle_android_target(target)
|
||||||
|
ndk_gdb = path.join(env["ANDROID_NDK"], "ndk-gdb")
|
||||||
|
adb_path = path.join(env["ANDROID_SDK"], "platform-tools", "adb")
|
||||||
|
sym_paths = [
|
||||||
|
path.join(
|
||||||
|
getcwd(),
|
||||||
|
"target",
|
||||||
|
target,
|
||||||
|
"release" if release else "debug",
|
||||||
|
"apk",
|
||||||
|
"obj",
|
||||||
|
"local",
|
||||||
|
self.config["android"]["lib"]
|
||||||
|
),
|
||||||
|
path.join(
|
||||||
|
getcwd(),
|
||||||
|
"target",
|
||||||
|
target,
|
||||||
|
"release" if release else "debug",
|
||||||
|
"apk",
|
||||||
|
"libs",
|
||||||
|
self.config["android"]["lib"]
|
||||||
|
),
|
||||||
|
]
|
||||||
|
env["NDK_PROJECT_PATH"] = path.join(getcwd(), "support", "android", "apk")
|
||||||
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
||||||
|
|
||||||
|
with tempfile.NamedTemporaryFile(delete=False) as f:
|
||||||
|
f.write('\n'.join([
|
||||||
|
"python",
|
||||||
|
"param = gdb.parameter('solib-search-path')",
|
||||||
|
"param += ':{}'".format(':'.join(sym_paths)),
|
||||||
|
"gdb.execute('set solib-search-path ' + param)",
|
||||||
|
"end",
|
||||||
|
]))
|
||||||
|
|
||||||
|
p = subprocess.Popen([
|
||||||
|
ndk_gdb,
|
||||||
|
"--adb", adb_path,
|
||||||
|
"--project", "support/android/apk/servoapp/src/main/",
|
||||||
|
"--launch", "com.mozilla.servo.MainActivity",
|
||||||
|
"-x", f.name,
|
||||||
|
"--verbose",
|
||||||
|
], env=env)
|
||||||
|
return p.wait()
|
||||||
|
|
|
@ -2,3 +2,4 @@ NDK_TOOLCHAIN_VERSION := 4.9
|
||||||
APP_MODULES := c++_shared servojni gstreamer
|
APP_MODULES := c++_shared servojni gstreamer
|
||||||
APP_PLATFORM := android-18
|
APP_PLATFORM := android-18
|
||||||
APP_STL:= c++_shared
|
APP_STL:= c++_shared
|
||||||
|
APP_ABI:= armeabi-v7a x86
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue