Files
oracle/tpt/stack_helper.py
2026-03-12 21:23:47 +01:00

40 lines
974 B
Python

#!/usr/bin/env python3
# Copyright 2022 Tanel Poder. All rights reserved. More info at https://tanelpoder.com
# Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
from __future__ import print_function
import sys, os
full_stringlist = []
# parse stacks
for l in sys.stdin:
l = l.rstrip().split('<-')
l.reverse()
x = []
for f in l:
if f.startswith("__sighandler()"):
break
else:
x.append(f.split('+')[0])
s = ""
for f in x:
s += "%s/" % f
full_stringlist.append(s)
prefixlength = len(os.path.commonpath(full_stringlist))
common_funclist = os.path.commonpath(full_stringlist).split("/")
# report
if sys.argv[1] == "prefix":
for (i,f) in enumerate(common_funclist):
print("#%3d %s %s" % (len(common_funclist)-i, " "*i, f))
else:
for suffix_funcs in full_stringlist:
print(" ", suffix_funcs[prefixlength:-1].replace('/','->'))