-
- def getFrameXML(self, base_frame):
- doc = getDOMImplementation().createDocument(None, "stack", None)
- top_element = doc.documentElement
-
- stack = []
- frame = base_frame
- while frame is not None:
- if((frame.f_code.co_filename.count('DebuggerHarness.py') == 0) or _DEBUG_DEBUGGER):
- stack.append(frame)
- frame = frame.f_back
- stack.reverse()
- self.message_frame_dict = {}
- for f in stack:
- self.addFrame(f,top_element, doc)
- return doc.toxml()
-
- def addFrame(self, frame, root_element, document):
- frameNode = document.createElement('frame')
- root_element.appendChild(frameNode)
-
- code = frame.f_code
- filename = code.co_filename
- frameNode.setAttribute('file', str(filename))
- frameNode.setAttribute('line', str(frame.f_lineno))
- message = self._adb.frame2message(frame)
- frameNode.setAttribute('message', message)
- #print "Frame: %s %s %s" %(message, frame.f_lineno, filename)
- self.message_frame_dict[message] = frame
- self.addDict(frameNode, "locals", frame.f_locals, document, 2)
- self.addNode(frameNode, "globals", "", document)
-
- def getRepr(self, varName, globals, locals):
- try:
- return repr(eval(varName, globals, locals))
- except:
- return 'Error: Could not recover value.'
-
- def addNode(self, parent_node, name, value, document):
- item_node = document.createElement("dict_nv_element")
- item_node.setAttribute('value', self.saferepr(value))
- item_node.setAttribute('name', str(name))
- parent_node.appendChild(item_node)
-