2

使用 Visual Studio IDE 中的 c#,我可以随时暂停程序并观察其变量,检查我想要的任何内容。我注意到,使用 Komodo IDE,当某些东西崩溃并停止程序流程时,我可以做同样的事情。但是由于某种原因,当我手动暂停程序时尝试做同样的事情时,似乎无法实现同样的效果。我做错了什么还是不可能?在后一种情况下,有人愿意解释一下为什么吗?是IDE相关还是Python相关?

谢谢

编辑:其他问题,我该如何继续该程序?据我所知,在我调用 code.interact(local = locals()) 之后,它的行为就像程序仍在运行一样,所以我不能点击“运行”按钮,只能点击“暂停”或“关闭”。

4

1 回答 1

3

如果你把

import code
code.interact(local=locals())

在您的程序中,您将被转储到 python 解释器。(请参阅查看当前正在运行的 Python 程序的方法

这与暂停 Komodo 有点不同,但也许您可以使用它来实现相同的目标。

按 Ctrl-d 退出 python 解释器并允许您的程序恢复。

您可以使用 traceback 模块检查调用堆栈:

import traceback
traceback.extract_stack()

例如,这是一个打印调用堆栈的装饰器:

def print_trace(func):
    '''This decorator prints the call stack
    '''
    def wrapper(*args,**kwargs):
        stacks=traceback.extract_stack()
        print('\n'.join(
            ['  '*i+'%s %s:%s'%(text,line_number,filename)
             for i,(filename,line_number,function_name,text) in enumerate(stacks)]))
        res = func(*args,**kwargs)
        return res
    return wrapper

像这样使用它:

@print_trace
def f():
    pass
于 2009-11-10T21:47:34.863 回答