Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import skypy.paths | |
| 7 from skypy.skyserver import SkyServer | 6 from skypy.skyserver import SkyServer |
| 8 import argparse | 7 import argparse |
| 9 import json | 8 import json |
| 10 import logging | 9 import logging |
| 11 import os | 10 import os |
| 12 import pipes | 11 import pipes |
| 13 import requests | 12 import requests |
| 14 import signal | 13 import signal |
| 14 import skypy.paths | |
| 15 import StringIO | |
| 15 import subprocess | 16 import subprocess |
| 16 import sys | 17 import sys |
| 17 import time | 18 import time |
| 18 import urlparse | 19 import urlparse |
| 19 | 20 |
| 20 SRC_ROOT = skypy.paths.Paths('ignored').src_root | 21 SRC_ROOT = skypy.paths.Paths('ignored').src_root |
| 21 sys.path.insert(0, os.path.join(SRC_ROOT, 'build', 'android')) | 22 sys.path.insert(0, os.path.join(SRC_ROOT, 'build', 'android')) |
| 22 from pylib import android_commands | 23 from pylib import android_commands |
| 23 from pylib import constants | 24 from pylib import constants |
| 24 from pylib import forwarder | 25 from pylib import forwarder |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 311 time.sleep(1) | 312 time.sleep(1) |
| 312 | 313 |
| 313 def logcat_command(self, args): | 314 def logcat_command(self, args): |
| 314 TAGS = [ | 315 TAGS = [ |
| 315 'AndroidHandler', | 316 'AndroidHandler', |
| 316 'MojoMain', | 317 'MojoMain', |
| 317 'MojoShellActivity', | 318 'MojoShellActivity', |
| 318 'MojoShellApplication', | 319 'MojoShellApplication', |
| 319 'chromium', | 320 'chromium', |
| 320 ] | 321 ] |
| 321 subprocess.call(['adb', 'logcat', '-s'] + TAGS) | 322 subprocess.call(['adb', 'logcat', '-d', '-s'] + TAGS) |
|
eseidel
2015/01/13 22:58:02
This makes skydb logcat exit immediately insetead
| |
| 322 | 323 |
| 323 def gdb_attach_command(self, args): | 324 def gdb_attach_command(self, args): |
| 324 self.paths = self._create_paths_for_build_dir(self.pids['build_dir']) | 325 self.paths = self._create_paths_for_build_dir(self.pids['build_dir']) |
| 325 gdb_command = [ | 326 gdb_command = [ |
| 326 '/usr/bin/gdb', self.paths.mojo_shell_path, | 327 '/usr/bin/gdb', self.paths.mojo_shell_path, |
| 327 '--eval-command', 'target remote localhost:%s' % GDB_PORT | 328 '--eval-command', 'target remote localhost:%s' % GDB_PORT |
| 328 ] | 329 ] |
| 329 print " ".join(gdb_command) | 330 print " ".join(gdb_command) |
| 330 # We don't want python listenting for signals or anything, so exec | 331 # We don't want python listenting for signals or anything, so exec |
| 331 # gdb and let it take the entire process. | 332 # gdb and let it take the entire process. |
| 332 os.execv(gdb_command[0], gdb_command) | 333 os.execv(gdb_command[0], gdb_command) |
| 333 | 334 |
| 335 def print_crash_command(self, args): | |
| 336 logcat_cmd = ['adb', 'logcat', '-d'] | |
| 337 logcat = subprocess.Popen(logcat_cmd, stdout=subprocess.PIPE) | |
| 338 | |
| 339 stack_path = os.path.join(SRC_ROOT, | |
| 340 'tools', 'android_stack_parser', 'stack') | |
| 341 stack = subprocess.Popen([stack_path, '-'], stdin=logcat.stdout) | |
| 342 logcat.wait() | |
| 343 stack.wait() | |
| 344 | |
| 334 def main(self): | 345 def main(self): |
| 335 logging.basicConfig(level=logging.INFO) | 346 logging.basicConfig(level=logging.INFO) |
| 336 logging.getLogger("requests").setLevel(logging.WARNING) | 347 logging.getLogger("requests").setLevel(logging.WARNING) |
| 337 | 348 |
| 338 self.pids = self._load_pid_file(PID_FILE_PATH) | 349 self.pids = self._load_pid_file(PID_FILE_PATH) |
| 339 | 350 |
| 340 parser = argparse.ArgumentParser(description='Sky launcher/debugger') | 351 parser = argparse.ArgumentParser(description='Sky launcher/debugger') |
| 341 subparsers = parser.add_subparsers(help='sub-command help') | 352 subparsers = parser.add_subparsers(help='sub-command help') |
| 342 | 353 |
| 343 start_parser = subparsers.add_parser('start', | 354 start_parser = subparsers.add_parser('start', |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 355 start_parser.set_defaults(func=self.start_command) | 366 start_parser.set_defaults(func=self.start_command) |
| 356 | 367 |
| 357 stop_parser = subparsers.add_parser('stop', | 368 stop_parser = subparsers.add_parser('stop', |
| 358 help=('stop sky (as listed in %s)' % PID_FILE_PATH)) | 369 help=('stop sky (as listed in %s)' % PID_FILE_PATH)) |
| 359 stop_parser.set_defaults(func=self.stop_command) | 370 stop_parser.set_defaults(func=self.stop_command) |
| 360 | 371 |
| 361 logcat_parser = subparsers.add_parser('logcat', | 372 logcat_parser = subparsers.add_parser('logcat', |
| 362 help=('dump sky-related logs from device')) | 373 help=('dump sky-related logs from device')) |
| 363 logcat_parser.set_defaults(func=self.logcat_command) | 374 logcat_parser.set_defaults(func=self.logcat_command) |
| 364 | 375 |
| 376 print_crash_parser = subparsers.add_parser('print_crash', | |
| 377 help=('dump (and symbolicate) recent crash-stacks')) | |
| 378 print_crash_parser.set_defaults(func=self.print_crash_command) | |
| 379 | |
| 365 gdb_attach_parser = subparsers.add_parser('gdb_attach', | 380 gdb_attach_parser = subparsers.add_parser('gdb_attach', |
| 366 help='launch gdb and attach to gdbserver launched from start --gdb') | 381 help='launch gdb and attach to gdbserver launched from start --gdb') |
| 367 gdb_attach_parser.set_defaults(func=self.gdb_attach_command) | 382 gdb_attach_parser.set_defaults(func=self.gdb_attach_command) |
| 368 | 383 |
| 369 self._add_basic_command(subparsers, 'trace', '/trace', | 384 self._add_basic_command(subparsers, 'trace', '/trace', |
| 370 'toggle tracing') | 385 'toggle tracing') |
| 371 self._add_basic_command(subparsers, 'reload', '/reload', | 386 self._add_basic_command(subparsers, 'reload', '/reload', |
| 372 'reload the current page') | 387 'reload the current page') |
| 373 self._add_basic_command(subparsers, 'inspect', '/inspect', | 388 self._add_basic_command(subparsers, 'inspect', '/inspect', |
| 374 'stop the running sky instance') | 389 'stop the running sky instance') |
| 375 | 390 |
| 376 load_parser = subparsers.add_parser('load', | 391 load_parser = subparsers.add_parser('load', |
| 377 help='load a new page in the currently running sky') | 392 help='load a new page in the currently running sky') |
| 378 load_parser.add_argument('url_or_path', type=str) | 393 load_parser.add_argument('url_or_path', type=str) |
| 379 load_parser.set_defaults(func=self.load_command) | 394 load_parser.set_defaults(func=self.load_command) |
| 380 | 395 |
| 381 args = parser.parse_args() | 396 args = parser.parse_args() |
| 382 args.func(args) | 397 args.func(args) |
| 383 | 398 |
| 384 self._write_pid_file(PID_FILE_PATH, self.pids) | 399 self._write_pid_file(PID_FILE_PATH, self.pids) |
| 385 | 400 |
| 386 | 401 |
| 387 if __name__ == '__main__': | 402 if __name__ == '__main__': |
| 388 SkyDebugger().main() | 403 SkyDebugger().main() |
| OLD | NEW |