#!/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())