| #!/usr/bin/env python |
| # |
| # Copyright (C) 2013 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """stack symbolizes native crash dumps.""" |
| |
| import argparse |
| import sys |
| |
| import stack_core |
| import symbol |
| |
| def main(): |
| parser = argparse.ArgumentParser(description='Parse and symbolize crashes') |
| parser.add_argument('--arch', help='the target architecture') |
| parser.add_argument('--syms', '--symdir', help='the symbols directory') |
| parser.add_argument('file', |
| metavar='FILE', |
| default='-', |
| nargs='?', # Required for default. |
| help='should contain a stack trace in it somewhere the ' |
| 'tool will find that and re-print it with source ' |
| 'files and line numbers. If you don\'t pass FILE, ' |
| 'or if file is -, it reads from stdin.') |
| |
| args = parser.parse_args() |
| |
| if args.arch: |
| symbol.ARCH = args.arch |
| if args.syms: |
| symbol.SYMBOLS_DIR = args.syms |
| if args.file == '-': |
| print "Reading native crash info from stdin" |
| f = sys.stdin |
| else: |
| print "Searching for native crashes in %s" % args.file |
| f = open(args.file, "r") |
| |
| lines = f.readlines() |
| f.close() |
| |
| stack_core.ConvertTrace(lines) |
| |
| if __name__ == "__main__": |
| main() |
| |
| # vi: ts=2 sw=2 |