mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
super log for direct!
This commit is contained in:
parent
3b2a2af619
commit
f684291847
@ -31,7 +31,7 @@ __all__ = ['enumerate', 'unique', 'indent', 'nonRepeatingRandomList',
|
|||||||
'printStack', 'printReverseStack', 'listToIndex2item', 'listToItem2index',
|
'printStack', 'printReverseStack', 'listToIndex2item', 'listToItem2index',
|
||||||
'pandaBreak','pandaTrace','formatTimeCompact','DestructiveScratchPad',
|
'pandaBreak','pandaTrace','formatTimeCompact','DestructiveScratchPad',
|
||||||
'deeptype','getProfileResultString','StdoutCapture','StdoutPassthrough',
|
'deeptype','getProfileResultString','StdoutCapture','StdoutPassthrough',
|
||||||
'Averager', 'getRepository', 'formatTimeExact', ]
|
'Averager', 'getRepository', 'formatTimeExact', 'startSuperLog', 'endSuperLog' ]
|
||||||
|
|
||||||
import types
|
import types
|
||||||
import string
|
import string
|
||||||
@ -2484,6 +2484,25 @@ def safeRepr(obj):
|
|||||||
except:
|
except:
|
||||||
return '<** FAILED REPR OF %s instance at %s **>' % (obj.__class__.__name__, hex(id(obj)))
|
return '<** FAILED REPR OF %s instance at %s **>' % (obj.__class__.__name__, hex(id(obj)))
|
||||||
|
|
||||||
|
def safeReprTypeOnFail(obj):
|
||||||
|
global dtoolSuperBase
|
||||||
|
if dtoolSuperBase is None:
|
||||||
|
_getDtoolSuperBase()
|
||||||
|
|
||||||
|
global safeReprNotify
|
||||||
|
if safeReprNotify is None:
|
||||||
|
_getSafeReprNotify()
|
||||||
|
|
||||||
|
if isinstance(obj, dtoolSuperBase):
|
||||||
|
return type(obj)
|
||||||
|
|
||||||
|
try:
|
||||||
|
return repr(obj)
|
||||||
|
except:
|
||||||
|
return '<** FAILED REPR OF %s instance at %s **>' % (obj.__class__.__name__, hex(id(obj)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def fastRepr(obj, maxLen=200, strFactor=10, _visitedIds=None):
|
def fastRepr(obj, maxLen=200, strFactor=10, _visitedIds=None):
|
||||||
""" caps the length of iterable types, so very large objects will print faster.
|
""" caps the length of iterable types, so very large objects will print faster.
|
||||||
also prevents infinite recursion """
|
also prevents infinite recursion """
|
||||||
@ -3781,6 +3800,7 @@ def pandaBreak(dotpath, linenum, temporary = 0, cond = None):
|
|||||||
filename = root + "\\src"
|
filename = root + "\\src"
|
||||||
for d in dirs[1:]:
|
for d in dirs[1:]:
|
||||||
filename="%s\\%s"%(filename,d)
|
filename="%s\\%s"%(filename,d)
|
||||||
|
print filename
|
||||||
globalPdb.set_break(filename+".py", linenum, temporary, cond)
|
globalPdb.set_break(filename+".py", linenum, temporary, cond)
|
||||||
|
|
||||||
class Default:
|
class Default:
|
||||||
@ -3788,6 +3808,33 @@ class Default:
|
|||||||
# useful for keyword arguments to virtual methods
|
# useful for keyword arguments to virtual methods
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
superLogFile = None
|
||||||
|
def startSuperLog():
|
||||||
|
global superLogFile
|
||||||
|
|
||||||
|
if(not superLogFile):
|
||||||
|
superLogFile = open("c:\\temp\\superLog.txt", "w")
|
||||||
|
def trace_dispatch(a,b,c):
|
||||||
|
if(b=='call' and a.f_code.co_name != '?' and a.f_code.co_name.find("safeRepr")<0):
|
||||||
|
vars = dict(a.f_locals)
|
||||||
|
if(vars.has_key('self')):
|
||||||
|
del vars['self']
|
||||||
|
if(vars.has_key('__builtins__')):
|
||||||
|
del vars['__builtins__']
|
||||||
|
for i in vars:
|
||||||
|
vars[i] = safeReprTypeOnFail(vars[i])
|
||||||
|
superLogFile.write( "%s(%s):%s:%s\n"%(a.f_code.co_filename.split("\\")[-1],a.f_code.co_firstlineno, a.f_code.co_name, vars))
|
||||||
|
|
||||||
|
return trace_dispatch
|
||||||
|
sys.settrace(trace_dispatch)
|
||||||
|
|
||||||
|
def endSuperLog():
|
||||||
|
global superLogFile
|
||||||
|
if(superLogFile):
|
||||||
|
sys.settrace(None)
|
||||||
|
superLogFile.close()
|
||||||
|
superLogFile = None
|
||||||
|
|
||||||
def isInteger(n):
|
def isInteger(n):
|
||||||
return type(n) in (types.IntType, types.LongType)
|
return type(n) in (types.IntType, types.LongType)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user