2026-03-12 20:23:15
This commit is contained in:
39
tpt/stack_helper.py
Normal file
39
tpt/stack_helper.py
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/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('/','->'))
|
||||
|
||||
Reference in New Issue
Block a user