NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

rdebug.py (1542B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\rdebug.py
      2 import traceback, stackless
      3 
      4 class DebugFile(object):
      5 
      6     def write(self, line):
      7         import blue
      8         blue.pyos.OutputDebugString(line)
      9 
     10     def writelines(self, lines):
     11         for line in lines:
     12             self.write(line)
     13 
     14 
     15 def Traceback(tasklet = None):
     16     if not tasklet:
     17         tasklet = stackless.getcurrent()
     18     print >> file, 'traceback for tasklet %s' % tasklet
     19     traceback.print_stack(f=tasklet.frame)
     20 
     21 
     22 def Tasklets():
     23     t = stackless.getcurrent()
     24     r = [t]
     25     while t.next and t.next != r[0]:
     26         t = t.next
     27         r.append(t)
     28 
     29     t = stackless.getmain()
     30     if t not in r:
     31         r.append(t)
     32         while t.next and t.next != stackless.getmain():
     33             t = t.next
     34             r.append(t)
     35 
     36     return r
     37 
     38 
     39 def TracebackAll():
     40     for t in Tasklets():
     41         if t != stackless.getmain():
     42             Traceback(tasklet=t)
     43 
     44 
     45 def RedirectOutput():
     46     debugFile = DebugFile()
     47     import sys
     48     sys.stdout = debugFile
     49     sys.stderr = debugFile
     50 
     51 
     52 def Quote(s):
     53     s = s.replace('\\', '\\\\')
     54     s = s.replace('"', '\\"')
     55     s = s.replace('\t', '\\t')
     56     s = s.replace('\n', '\\n')
     57     return '"' + s + '"'
     58 
     59 
     60 def GetModuleText(module = None):
     61     if module:
     62         f = module.__file__
     63     else:
     64         f = __file__
     65     f = f.replace('.pyc', '.py').replace('.pyo', '.py')
     66     return file(f).read().rstrip() + '\n'
     67 
     68 
     69 def GetModuleString(module = None):
     70     return Quote(GetModuleText(module))