/usr/share/pyshared/jsb/utils/trace.py is in jsonbot 0.84.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | # jsb/utils/trace.py
#
#
""" trace related functions """
## basic imports
import sys
import os
## defines
stopmarkers = ['waveapi', 'jsb', 'myplugs', 'python2.5', 'python2.6', 'python2.7', 'python27', 'runtime', 'api', 'google', 'versions']
## calledfrom function
def calledfrom(frame):
""" return the plugin name where given frame occured. """
try:
filename = frame.f_back.f_code.co_filename
plugfile = filename.split(os.sep)
if plugfile:
mod = []
for i in plugfile[::-1]:
mod.append(i)
if i in stopmarkers: break
modstr = '.'.join(mod[::-1])[:-3]
if 'handler_' in modstr: modstr = modstr.split('.')[-1]
except AttributeError: modstr = None
del frame
return modstr
## callstack function
def callstack(frame):
""" return callstack trace as a string. """
result = []
loopframe = frame
marker = ""
while 1:
try:
filename = loopframe.f_back.f_code.co_filename
plugfile = filename.split(os.sep)
if plugfile:
mod = []
for i in plugfile[::-1]:
mod.append(i)
if i in stopmarkers: marker = i ; break
modstr = '.'.join(mod[::-1])[:-3]
if 'handler_' in modstr: modstr = modstr.split('.')[-1]
if not modstr: modstr = plugfile
result.append("%s:%s" % (modstr, loopframe.f_back.f_lineno))
loopframe = loopframe.f_back
except: break
del frame
return result
## where function
def where():
return callstack(sys._getframe(0))
## whichmodule function
def whichmodule(depth=1):
""" return filename:lineno of the module. """
try:
frame = sys._getframe(depth)
plugfile = frame.f_back.f_code.co_filename[:-3].split('/')
lineno = frame.f_back.f_lineno
mod = []
stop = False
for i in plugfile[::-1]:
if stop: break
mod.append(i)
for j in stopmarkers:
if j in i: stop = True
modstr = '.'.join(mod[::-1]) + ':' + str(lineno)
if 'handler_' in modstr or "python" in modstr: modstr = modstr.split('.')[-1]
except AttributeError: modstr = None
del frame
return modstr
## whichplugin function
def whichplugin(depth=1):
""" return filename:lineno of the module. """
try:
frame = sys._getframe(depth)
plugfile = frame.f_back.f_code.co_filename[:-3].split('/')
lineno = frame.f_back.f_lineno
mod = []
for i in plugfile[::-1]:
mod.append(i)
if i in stopmarkers: break
modstr = '.'.join(mod[::-1])
if 'handler_' in modstr: modstr = modstr.split('.')[-1]
except AttributeError: modstr = None
del frame
return modstr
|