Index: sky/tools/skydb |
diff --git a/sky/tools/skydb b/sky/tools/skydb |
index ff906784fa7b2396051e73ed64664dafc4d62012..ad4ceed1be8ea01783139381461be3df935693cb 100755 |
--- a/sky/tools/skydb |
+++ b/sky/tools/skydb |
@@ -3,7 +3,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-from skypy.paths import Paths |
+import skypy.paths |
from skypy.skyserver import SkyServer |
import argparse |
import json |
@@ -17,7 +17,8 @@ import sys |
import time |
import urlparse |
-sys.path.insert(0, os.path.join(Paths('ignored').src_root, 'build', 'android')) |
+SRC_ROOT = skypy.paths.Paths('ignored').src_root |
+sys.path.insert(0, os.path.join(SRC_ROOT, 'build', 'android')) |
from pylib import android_commands |
from pylib import constants |
from pylib import forwarder |
@@ -52,13 +53,13 @@ def gn_args_from_build_dir(build_dir): |
class SkyDebugger(object): |
def __init__(self): |
- self.paths = None |
self.pids = {} |
+ self.paths = None |
def _server_root_for_url(self, url_or_path): |
path = os.path.abspath(url_or_path) |
- if os.path.commonprefix([path, self.paths.src_root]) == self.paths.src_root: |
- server_root = self.paths.src_root |
+ if os.path.commonprefix([path, SRC_ROOT]) == SRC_ROOT: |
+ server_root = SRC_ROOT |
else: |
server_root = os.path.dirname(path) |
logging.warn( |
@@ -116,7 +117,7 @@ class SkyDebugger(object): |
# FIXME: This doesn't work for android |
if args.gdb: |
- shell_command = ['gdb', '--args'] + shell_command |
+ shell_command = ['gdb'] + shell_command |
return shell_command |
@@ -136,8 +137,11 @@ class SkyDebugger(object): |
return sky_server |
def start_command(self, args): |
+ # skypy.paths.Paths takes a root-relative build_dir argument. :( |
+ build_dir = os.path.abspath(args.build_dir) |
+ root_relative_build_dir = os.path.relpath(build_dir, SRC_ROOT) |
# FIXME: Lame that we use self for a command-specific variable. |
- self.paths = Paths(args.build_dir) |
+ self.paths = skypy.paths.Paths(root_relative_build_dir) |
self.stop_command(None) # Quit any existing process. |
self.pids = {} # Clear out our pid file. |
@@ -195,11 +199,8 @@ class SkyDebugger(object): |
logging.info('%s (%s) already gone.' % (name, pid)) |
def stop_command(self, args): |
- try: |
- self._send_command_to_sky('/quit') |
- except: |
- pass |
- # Kill the mojo process for good measure. :) |
+ # TODO(eseidel): mojo_shell crashes when attempting graceful shutdown. |
+ # self._send_command_to_sky('/quit') |
self._kill_if_exists('mojo_shell_pid', 'mojo_shell') |
self._kill_if_exists('sky_server_pid', 'sky_server') |
@@ -274,6 +275,16 @@ class SkyDebugger(object): |
return False |
time.sleep(1) |
+ def logcat_command(self, args): |
+ TAGS = [ |
+ 'AndroidHandler', |
+ 'MojoMain', |
+ 'MojoShellActivity', |
+ 'MojoShellApplication', |
+ 'chromium', |
+ ] |
+ subprocess.call(['adb', 'logcat', '-s'] + TAGS) |
+ |
def main(self): |
logging.basicConfig(level=logging.INFO) |
logging.getLogger("requests").setLevel(logging.WARNING) |
@@ -301,6 +312,10 @@ class SkyDebugger(object): |
help=('stop sky (as listed in %s)' % PID_FILE_PATH)) |
stop_parser.set_defaults(func=self.stop_command) |
+ logcat_parser = subparsers.add_parser('logcat', |
+ help=('dump sky-related logs from device')) |
+ logcat_parser.set_defaults(func=self.logcat_command) |
+ |
self._add_basic_command(subparsers, 'trace', '/trace', |
'toggle tracing') |
self._add_basic_command(subparsers, 'reload', '/reload', |