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))