The CallStack function prints stacks to the log. Unfortunately, our stack script defaults to arm, so if the data is actually arm64, we'll do nothing. Modify the script to parse the input trying to determine the abi before processing the rest of the lines. At the very least, we'll be able to correctly choose between arm and arm64. The only downside, is that, the old method could take dumps from different abis, but no one I know does this. Bug: 26569638 Change-Id: I5935b82fe0af1e788b0d3edc535b9f0cbb7d1b28
78 lines
2.0 KiB
Python
Executable File
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|arm64|mips|mips64|x86|x86_64"
|
|
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
|