comparison pydershell/pydershell.py @ 16:a78570a423ea

Show code excerpts in js stack tracebacks
author Atul Varma <varmaa@toolness.com>
date Mon, 07 Sep 2009 00:33:56 -0700
parents 351525e95a45
children 1d62177c5c27
comparison
equal deleted inserted replaced
15:351525e95a45 16:a78570a423ea
106 while js_stack: 106 while js_stack:
107 script = js_stack['script'] 107 script = js_stack['script']
108 function = js_stack['function'] 108 function = js_stack['function']
109 if script: 109 if script:
110 frameinfo = dict(filename = script.filename, 110 frameinfo = dict(filename = script.filename,
111 lineno = js_stack['lineno'], 111 lineno = js_stack['lineno'],
112 name = '<module>') 112 name = '<module>')
113 elif function and not function.is_python: 113 elif function and not function.is_python:
114 frameinfo = dict(filename = function.filename, 114 frameinfo = dict(filename = function.filename,
115 lineno = js_stack['lineno'], 115 lineno = js_stack['lineno'],
116 name = function.name) 116 name = function.name)
117 else: 117 else:
118 frameinfo = None 118 frameinfo = None
119 if frameinfo: 119 if frameinfo:
120 lines.insert(0, STACK_LINE % frameinfo) 120 lines.insert(0, STACK_LINE % frameinfo)
121 try:
122 filelines = open(frameinfo['filename']).readlines()
123 line = filelines[frameinfo['lineno'] - 1].strip()
124 lines.insert(1, " %s" % line)
125 except Exception:
126 pass
121 js_stack = js_stack['caller'] 127 js_stack = js_stack['caller']
122 lines.insert(0, "Traceback (most recent call last):") 128 lines.insert(0, "Traceback (most recent call last):")
123 return '\n'.join(lines) 129 return '\n'.join(lines)
124 130
125 class JSRuntime(object): 131 class JSRuntime(object):