Files
android_development/scripts/stack
Brigid Smith ea0a835d4d Turning stack_core into a class to make it compatible with adbs.
This includes the fairly large change of refactoring stack_core.py into
a class so that its behavior is compatible with adbs.  Additionally, if
the ABI line does not come before lines that require it to determine
proper widths (registers, stack), then it will assume that the ABI is
32 bit and not 64.

Change-Id: I6ad84a55337d86d25f7f8197048dc93868b0a01a
2014-07-01 11:25:44 -07:00

78 lines
2.0 KiB
Python
Executable File

#!/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 getopt
import sys
import stack_core
import symbol
def PrintUsage():
"""Print usage and exit with error."""
# pylint: disable-msg=C6310
print
print " usage: " + sys.argv[0] + " [options] [FILE]"
print
print " --arch=arm|x86"
print " the target architecture"
print
print " FILE should contain a stack trace in it somewhere"
print " the tool will find that and re-print it with"
print " source files and line numbers. If you don't"
print " pass FILE, or if file is -, it reads from"
print " stdin."
print
# pylint: enable-msg=C6310
sys.exit(1)
def main():
try:
options, arguments = getopt.getopt(sys.argv[1:], "",
["arch=",
"help"])
except getopt.GetoptError, unused_error:
PrintUsage()
for option, value in options:
if option == "--help":
PrintUsage()
elif option == "--arch":
symbol.ARCH = value
if len(arguments) > 1:
PrintUsage()
if not arguments or arguments[0] == "-":
print "Reading native crash info from stdin"
f = sys.stdin
else:
print "Searching for native crashes in %s" % arguments[0]
f = open(arguments[0], "r")
lines = f.readlines()
f.close()
stack_core.ConvertTrace(lines)
if __name__ == "__main__":
main()
# vi: ts=2 sw=2