OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import logging | 5 import logging |
6 import os | 6 import os |
| 7 import signal |
7 import subprocess | 8 import subprocess |
8 import sys | 9 import sys |
9 import tempfile | 10 import tempfile |
10 | 11 |
11 from profile_chrome import controllers | 12 from profile_chrome import controllers |
12 from profile_chrome import ui | 13 from profile_chrome import ui |
13 | 14 |
14 from pylib import android_commands | 15 from pylib import android_commands |
15 from pylib import constants | 16 from pylib import constants |
16 from pylib.perf import perf_control | 17 from pylib.perf import perf_control |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 required_libs, | 164 required_libs, |
164 use_symlinks=False) | 165 use_symlinks=False) |
165 perfhost_path = os.path.abspath(support_binaries.FindPath( | 166 perfhost_path = os.path.abspath(support_binaries.FindPath( |
166 'perfhost', 'linux')) | 167 'perfhost', 'linux')) |
167 | 168 |
168 ui.PrintMessage('\nNote: to view the profile in perf, run:') | 169 ui.PrintMessage('\nNote: to view the profile in perf, run:') |
169 ui.PrintMessage(' ' + self._GetInteractivePerfCommand(perfhost_path, | 170 ui.PrintMessage(' ' + self._GetInteractivePerfCommand(perfhost_path, |
170 perf_profile, symfs_dir, required_libs, kallsyms)) | 171 perf_profile, symfs_dir, required_libs, kallsyms)) |
171 | 172 |
172 # Convert the perf profile into JSON. | 173 # Convert the perf profile into JSON. |
173 perf_script_path = os.path.join(constants.DIR_SOURCE_ROOT, | 174 perf_script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), |
174 'tools', 'telemetry', 'telemetry', 'core', 'platform', 'profiler', | 175 'third_party', 'perf_to_tracing.py') |
175 'perf_vis', 'perf_to_tracing.py') | |
176 json_file_name = os.path.basename(perf_profile) | 176 json_file_name = os.path.basename(perf_profile) |
177 with open(os.devnull, 'w') as dev_null, \ | 177 with open(os.devnull, 'w') as dev_null, \ |
178 open(json_file_name, 'w') as json_file: | 178 open(json_file_name, 'w') as json_file: |
179 cmd = [perfhost_path, 'script', '-s', perf_script_path, '-i', | 179 cmd = [perfhost_path, 'script', '-s', perf_script_path, '-i', |
180 perf_profile, '--symfs', symfs_dir, '--kallsyms', kallsyms] | 180 perf_profile, '--symfs', symfs_dir, '--kallsyms', kallsyms] |
181 if subprocess.call(cmd, stdout=json_file, stderr=dev_null): | 181 if subprocess.call(cmd, stdout=json_file, stderr=dev_null): |
182 logging.warning('Perf data to JSON conversion failed. The result will ' | 182 logging.warning('Perf data to JSON conversion failed. The result will ' |
183 'not contain any perf samples. You can still view the ' | 183 'not contain any perf samples. You can still view the ' |
184 'perf data manually as shown above.') | 184 'perf data manually as shown above.') |
185 return None | 185 return None |
186 | 186 |
187 return json_file_name | 187 return json_file_name |
OLD | NEW |