当前位置: 首页>>代码示例>>Python>>正文


Python Wdb.run_file方法代码示例

本文整理汇总了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)
开发者ID:seletz,项目名称:wdb,代码行数:104,代码来源:__main__.py


注:本文中的wdb.Wdb.run_file方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。