本文整理汇总了Python中wdb.Wdb.run_file方法的典型用法代码示例。如果您正苦于以下问题:Python Wdb.run_file方法的具体用法?Python Wdb.run_file怎么用?Python Wdb.run_file使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wdb.Wdb
的用法示例。
在下文中一共展示了Wdb.run_file方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from wdb import Wdb [as 别名]
# 或者: from wdb.Wdb import run_file [as 别名]
#.........这里部分代码省略.........
from wdb import Wdb
thread = threading.currentThread()
if getattr(thread, 'no_trace', False):
sys.settrace(None)
return
wdbr_thread = Wdb.make_server()
thread._wdbr = wdbr_thread
frame = sys._getframe().f_back
wdbr_thread.stopframe = frame
wdbr_thread.botframe = frame
while frame:
frame.f_trace = wdbr_thread.trace_dispatch
frame = frame.f_back
wdbr_thread.stoplineno = -1
def trace(frame, event, arg):
rv = wdbr_thread.trace_dispatch(frame, event, arg)
fn = frame.f_code.co_filename
if (rv is None and not
(fn == os.path.abspath(fn) or fn.startswith('<')) and not
fn.startswith(
os.path.dirname(os.path.abspath(sys.argv[0])))):
return
return trace
sys.settrace(trace)
return wdbr_thread.trace_dispatch
threading.settrace(init_new_wdbr)
# Multiprocess support
# Monkey patch threading to have callback to kill thread debugger
old_process_start = multiprocessing.Process.start
def wdb_process_start(self):
"""Monkey patched start monkey patching run"""
self.old_run = self.run
def run(self):
"""Monkey patched run"""
try:
self.old_run()
finally:
if hasattr(self, '_wdbr'):
self._wdbr.die()
from wdb._compat import bind
self.run = bind(self, run)
old_process_start(self)
multiprocessing.Process.start = wdb_process_start
# Monkey patching fork
osfork = os.fork
def tracing_fork():
import sys
import multiprocessing
from wdb import Wdb
pid = osfork()
if pid == 0:
# Doesn't work with Wdb.trace()...
sys.settrace(None)
wdbr_process = Wdb.make_server()
def trace(frame, event, arg):
process = multiprocessing.current_process()
if not hasattr(process, '_wdbr'):
process._wdbr = wdbr_process
rv = wdbr_process.trace_dispatch(frame, event, arg)
fn = frame.f_code.co_filename
if (rv is None and
(fn == os.path.abspath(fn) or fn.startswith('<')) and not
fn.startswith(
os.path.dirname(os.path.abspath(sys.argv[0])))):
return
return trace
frame = sys._getframe().f_back
wdbr_process.stoplineno = -1
wdbr_process.stopframe = frame
while frame:
frame.f_trace = wdbr_process.trace_dispatch
wdbr_process.botframe = frame
frame = frame.f_back
sys.settrace(trace)
return pid
if os.fork != tracing_fork:
os._original_fork = osfork
os.fork = tracing_fork
try:
Wdb.run_file(mainpyfile)
finally:
wdbr.quitting = True
wdbr.stop_trace(True)