DebugClients/Python3/DebugBase.py

branch
debugger speed
changeset 5086
6cb8be573090
parent 5085
85dfb7886fb9
child 5087
59316f14216b
equal deleted inserted replaced
5085:85dfb7886fb9 5086:6cb8be573090
360 def set_trace(self, frame=None): 360 def set_trace(self, frame=None):
361 """ 361 """
362 Public method to start debugging from 'frame'. 362 Public method to start debugging from 'frame'.
363 363
364 If frame is not specified, debugging starts from caller's frame. 364 If frame is not specified, debugging starts from caller's frame.
365 365 Because of jump optimizations it's not possible to use sys.breakpoint()
366 @param frame frame to start debugging from 366 as last instruction in a function or method.
367
368 @keyparam frame frame to start debugging from
367 @type frame object 369 @type frame object
368 """ 370 """
369 if frame is None: 371 if frame is None:
370 frame = sys._getframe().f_back 372 frame = sys._getframe().f_back # Skip set_trace method
371 373
372 # stop at erics debugger frame 374 frame.f_trace = self.trace_dispatch
373 while frame: 375 while frame is not None:
374 if not self.__skipFrame(frame): 376 # stop at erics debugger frame
377 if frame.f_back.f_code == self._dbgClient.handleLine.__code__:
375 frame.f_trace = self.trace_dispatch 378 frame.f_trace = self.trace_dispatch
379 self.botframe = frame
380 self._dbgClient.mainFrame = frame
381 break
382
376 frame = frame.f_back 383 frame = frame.f_back
377 self.botframe = frame 384
378 if self.__skipFrame(frame): 385 self.stop_everywhere = True
379 break
380
381 self.set_step()
382 sys.settrace(self.trace_dispatch) 386 sys.settrace(self.trace_dispatch)
383 sys.setprofile(self._dbgClient.callTraceEnabled) 387 sys.setprofile(self._dbgClient.callTraceEnabled)
384 388
385 def run(self, cmd, globals=None, locals=None): 389 def run(self, cmd, globals=None, locals=None):
386 """ 390 """

eric ide

mercurial