You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by bt...@apache.org on 2020/09/27 18:10:58 UTC
[incubator-nuttx] 02/02: tools/parsecallstack: Fix the style issue
This is an automated email from the ASF dual-hosted git repository.
btashton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 09a2c37daf99649c1f9d1c88269725318707518b
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Mon Sep 21 11:15:21 2020 -0700
tools/parsecallstack: Fix the style issue
Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
tools/parsecallstack.py | 84 ++++++++++++++++++-------------------------------
1 file changed, 30 insertions(+), 54 deletions(-)
diff --git a/tools/parsecallstack.py b/tools/parsecallstack.py
index db56b00..5463af1 100755
--- a/tools/parsecallstack.py
+++ b/tools/parsecallstack.py
@@ -1,7 +1,5 @@
-#!/usr/bin/python
-# -*- coding:utf-8 -*-
-#
-# nuttx/tools/parsecallstack.py
+#!/usr/bin/env python
+# tools/parsecallstack.py
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
@@ -24,35 +22,25 @@ import argparse
def parse_args():
- parser = argparse.ArgumentParser("\n\
- parsecallstack.py -c cputype -f filename\n\
- This file can get the call stack when you get the log with the\n\
- register values from R0 to R15, together with the stack dump.\n\n\
- Then you can get a file with name callstack.cmm, run this file in\n\
- Trace32 simulator, load the symbol accoring to the indication,\n\
- the call stack will pop up.\n\n\
- Trace32 software is avaliable at: https://www.lauterbach.com\n")
+ parser = argparse.ArgumentParser("""
+ parsecallstack.py -c CPUTYPE -f FILENAME\n\
+ This file can get the call stack when you get the log with the
+ register values from R0 to R15, together with the stack dump.\n
+ Then you will get a file with name callstack.cmm, run this file
+ in Trace32, load the symbol accoring to the indication, the call
+ stack will pop up.\n
+ Trace32 software is avaliable at: https://www.lauterbach.com
+ """)
parser.add_argument("-f", "--filename", action = "store",
help = "log file with registers and stack information")
parser.add_argument("-c", "--cputype", action = "store",
- help = "It supports ARM family CPU such as:\n\
- \"CortexM0\"\n\
- \"CortexM1\"\n\
- \"CortexM3\"\n\
- \"CortexM4\"\n\
- \"CortexM7\"\n\
- \"CortexM23\"\n\
- \"CortexM33\"\n\
- \"CortexM35P\"\n\
- \"CortexR5\"\n\
- \"CortexR7\"\n\
- \"CortexA5\"\n\
- \"CortexA7\"\n\
- ")
- args = parser.parse_args()
-
- return args
+ help = '''It supports ARM family CPU such as:
+ "CortexM0" "CortexM1" "CortexM3" "CortexM4"
+ "CortexM7" "CortexM23" "CortexM33" "CortexM35P"
+ "CortexR5" "CortexR7" "CortexA5" "CortexA7"''')
+
+ return parser.parse_args()
def get_regs(filename):
@@ -87,45 +75,33 @@ def get_stackvalue(filename):
def generate_cmm(cpu, regs, stackvalue):
- dir = os.getcwd()
- filename = dir + "\\callstack.cmm"
-
+ filename = os.path.join(os.getcwd(), 'callstack.cmm')
with open(filename, mode='w') as fl:
# Select the CPU and symbol.
- fl.write("SYStem.CPU " + cpu + "\n")
+ fl.write("SYStem.CPU %d\n" % cpu)
fl.write("SYS.M UP\n")
fl.write("Data.LOAD *\n")
fl.write("\n")
# Set R0-R15.
for num in range(len(regs)):
- fl.write("Register.Set R" + str(num) + " 0x" + regs[num] +'\n')
- fl.write('\n')
+ fl.write("Register.Set R%d 0x%s\n" % num, regs[num])
+ fl.write("\n")
# Recover the value in stack.
- sp = int("0x" + stackvalue[0], 16)
+ sp = int(stackvalue[0], 16)
for num in range(len(stackvalue) - 1):
address = hex(sp + num * 4)
value = stackvalue[num + 1]
- fl.write("Data.Set ZSD:" + str(address) + " %LE %Long 0x"
- + str(value) +'\n')
- fl.write('\n')
+ fl.write("Data.Set ZSD:%d %%LE %%Long 0x%d\n" % address, value)
+ fl.write("\n")
# Show the call stack.
- fl.write("data.view %sYmbol.long " + str(hex(sp)) + '\n')
- fl.write("frame.view /Locals /Caller" +'\n')
+ fl.write("data.view %%sYmbol.long %x\n" % sp)
+ fl.write("frame.view /Locals /Caller\n")
if __name__ == "__main__":
- try:
- args = parse_args()
- filename = args.filename
- cpu = args.cputype
- if (os.path.isfile(filename)):
- regs = get_regs(filename)
- stackvalue = get_stackvalue(filename)
- generate_cmm(cpu, regs, stackvalue)
- else:
- print("The file is not exist!")
-
- except TypeError:
- print("Please provide the log file!")
+ args = parse_args()
+ regs = get_regs(args.filename)
+ stackvalue = get_stackvalue(args.filename)
+ generate_cmm(args.cpu, regs, stackvalue)