DebugClients/Python/DebugBase.py

branch
debugger speed
changeset 5086
6cb8be573090
parent 5085
85dfb7886fb9
child 5087
59316f14216b
equal deleted inserted replaced
5085:85dfb7886fb9 5086:6cb8be573090
342 def set_trace(self, frame=None): 342 def set_trace(self, frame=None):
343 """ 343 """
344 Public method to start debugging from 'frame'. 344 Public method to start debugging from 'frame'.
345 345
346 If frame is not specified, debugging starts from caller's frame. 346 If frame is not specified, debugging starts from caller's frame.
347 347 Because of jump optimizations it's not possible to use sys.breakpoint()
348 @param frame frame to start debugging from 348 as last instruction in a function or method.
349
350 @keyparam frame frame to start debugging from
349 @type frame object 351 @type frame object
350 """ 352 """
351 if frame is None: 353 if frame is None:
352 frame = sys._getframe().f_back 354 frame = sys._getframe().f_back # Skip set_trace method
353 355
354 # stop at erics debugger frame 356 frame.f_trace = self.trace_dispatch
355 while frame: 357 while frame is not None:
356 if not self.__skipFrame(frame): 358 # stop at erics debugger frame
359 if frame.f_back.f_code == self._dbgClient.handleLine.func_code:
357 frame.f_trace = self.trace_dispatch 360 frame.f_trace = self.trace_dispatch
361 self.botframe = frame
362 self._dbgClient.mainFrame = frame
363 break
364
358 frame = frame.f_back 365 frame = frame.f_back
359 self.botframe = frame 366
360 if self.__skipFrame(frame): 367 self.stop_everywhere = True
361 break
362
363 self.set_step()
364 sys.settrace(self.trace_dispatch) 368 sys.settrace(self.trace_dispatch)
365 sys.setprofile(self._dbgClient.callTraceEnabled) 369 sys.setprofile(self._dbgClient.callTraceEnabled)
366 370
367 def run(self, cmd, globals=None, locals=None): 371 def run(self, cmd, globals=None, locals=None):
368 """ 372 """
415 @type bool 419 @type bool
416 """ 420 """
417 # Here we only set a new stop frame if it is a normal continue. 421 # Here we only set a new stop frame if it is a normal continue.
418 if not special: 422 if not special:
419 self._set_stopinfo(self.botframe, None) 423 self._set_stopinfo(self.botframe, None)
424
420 # Disable tracing if not started in debug mode 425 # Disable tracing if not started in debug mode
421 if not self._dbgClient.debugging: 426 if not self._dbgClient.debugging:
422 sys.settrace(None) 427 sys.settrace(None)
423 sys.setprofile(None) 428 sys.setprofile(None)
424 429

eric ide

mercurial