Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: sky/tools/skydb

Issue 787803006: Fix tools/android_stack_parser/stack and use it in skydb (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/android_stack_parser/stack » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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()
OLDNEW
« no previous file with comments | « no previous file | tools/android_stack_parser/stack » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698