| #!/usr/bin/env python |
| # |
| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ |
| This executable script symbolizes proto perfetto traces. |
| """ |
| |
| import os |
| import optparse |
| import sys |
| |
| import symbolize_trace |
| import flag_utils |
| import display_in_browser |
| |
| |
| def _CreateOptionParser(): |
| parser = optparse.OptionParser(description=('Symbolizes proto perfetto trace.' |
| ' Takes a proto trace file as input.'), |
| usage='%prog [options] <proto_trace_file>', |
| prog='tools/tracing/symbolize_trace', |
| conflict_handler='resolve') |
| |
| parser.add_option_group(flag_utils.GeneralOptions(parser)) |
| parser.add_option_group(flag_utils.SymbolizeOptions(parser)) |
| |
| return parser |
| |
| def main(): |
| parser = _CreateOptionParser() |
| options, args = parser.parse_args() |
| |
| flag_utils.SetupLogging(options.verbosity) |
| |
| # Argument error checking |
| trace_file = None |
| if not args: |
| raise Exception('Proto trace file argument is required. Please pass the ' |
| 'trace file to symbolize.') |
| elif len(args) > 1: |
| raise Exception('Too many arguments passed. Pass only one proto trace file.') |
| else: |
| trace_file = args[0] |
| |
| # Symbolize Trace |
| symbolize_trace.SymbolizeTrace(trace_file=trace_file, options=options) |
| |
| if options.view: |
| # Only symbolizes proto traces, so trace format must be proto. |
| display_in_browser.DisplayInBrowser(options.output_file) |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |