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 from skypy.skyserver import SkyServer | 6 from skypy.skyserver import SkyServer |
7 import argparse | 7 import argparse |
8 import json | 8 import json |
9 import logging | 9 import logging |
10 import os | 10 import os |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 if not urlparse.urlparse(args.url_or_path).scheme: | 313 if not urlparse.urlparse(args.url_or_path).scheme: |
314 # The load happens on the remote device, use the remote port. | 314 # The load happens on the remote device, use the remote port. |
315 remote_sky_server_port = self.pids.get('remote_sky_server_port', | 315 remote_sky_server_port = self.pids.get('remote_sky_server_port', |
316 self.pids['sky_server_port']) | 316 self.pids['sky_server_port']) |
317 url = SkyServer.url_for_path(remote_sky_server_port, | 317 url = SkyServer.url_for_path(remote_sky_server_port, |
318 self.pids['sky_server_root'], args.url_or_path) | 318 self.pids['sky_server_root'], args.url_or_path) |
319 else: | 319 else: |
320 url = args.url_or_path | 320 url = args.url_or_path |
321 self._send_command_to_sky('/load', url) | 321 self._send_command_to_sky('/load', url) |
322 | 322 |
| 323 def stop_profiling_command(self, args): |
| 324 self._send_command_to_sky('/stop_profiling') |
| 325 # We need to munge the profile to replace foo.mojo with libfoo.so so |
| 326 # that pprof knows this represents an SO. |
| 327 with open("sky_viewer.pprof", "r+") as profile_file: |
| 328 data = profile_file.read() |
| 329 profile_file.seek(0) |
| 330 profile_file.write(re.sub(r'(\w+)\.mojo', r'lib\1_library.so', data)
) |
| 331 profile_file.truncate() |
| 332 |
323 def _command_base_url(self): | 333 def _command_base_url(self): |
324 return 'http://localhost:%s' % self.pids['sky_command_port'] | 334 return 'http://localhost:%s' % self.pids['sky_command_port'] |
325 | 335 |
326 def _send_command_to_sky(self, command_path, payload=None): | 336 def _send_command_to_sky(self, command_path, payload=None): |
327 url = 'http://localhost:%s%s' % ( | 337 url = 'http://localhost:%s%s' % ( |
328 self.pids['sky_command_port'], command_path) | 338 self.pids['sky_command_port'], command_path) |
329 if payload: | 339 if payload: |
330 response = requests.post(url, payload) | 340 response = requests.post(url, payload) |
331 else: | 341 else: |
332 response = requests.get(url) | 342 response = requests.get(url) |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 gdb_attach_parser.set_defaults(func=self.gdb_attach_command) | 510 gdb_attach_parser.set_defaults(func=self.gdb_attach_command) |
501 | 511 |
502 self._add_basic_command(subparsers, 'trace', '/trace', | 512 self._add_basic_command(subparsers, 'trace', '/trace', |
503 'toggle tracing') | 513 'toggle tracing') |
504 self._add_basic_command(subparsers, 'reload', '/reload', | 514 self._add_basic_command(subparsers, 'reload', '/reload', |
505 'reload the current page') | 515 'reload the current page') |
506 self._add_basic_command(subparsers, 'inspect', '/inspect', | 516 self._add_basic_command(subparsers, 'inspect', '/inspect', |
507 'stop the running sky instance') | 517 'stop the running sky instance') |
508 self._add_basic_command(subparsers, 'start_profiling', '/start_profiling
', | 518 self._add_basic_command(subparsers, 'start_profiling', '/start_profiling
', |
509 'starts profiling the running sky instance (Linux only)') | 519 'starts profiling the running sky instance (Linux only)') |
510 self._add_basic_command(subparsers, 'stop_profiling', '/stop_profiling', | 520 |
511 'stios profiling the running sky instance (Linux only)') | 521 stop_profiling_parser = subparsers.add_parser('stop_profiling', |
| 522 help='stops profiling the running sky instance (Linux only)') |
| 523 stop_profiling_parser.set_defaults(func=self.stop_profiling_command) |
512 | 524 |
513 load_parser = subparsers.add_parser('load', | 525 load_parser = subparsers.add_parser('load', |
514 help='load a new page in the currently running sky') | 526 help='load a new page in the currently running sky') |
515 load_parser.add_argument('url_or_path', type=str) | 527 load_parser.add_argument('url_or_path', type=str) |
516 load_parser.set_defaults(func=self.load_command) | 528 load_parser.set_defaults(func=self.load_command) |
517 | 529 |
518 args = parser.parse_args() | 530 args = parser.parse_args() |
519 args.func(args) | 531 args.func(args) |
520 | 532 |
521 self._write_pid_file(PID_FILE_PATH, self.pids) | 533 self._write_pid_file(PID_FILE_PATH, self.pids) |
522 | 534 |
523 | 535 |
524 if __name__ == '__main__': | 536 if __name__ == '__main__': |
525 SkyDebugger().main() | 537 SkyDebugger().main() |
OLD | NEW |