科莫多 - 在程序暂停时观察变量并执行代码

时间:2009-11-10 21:07:41

标签: python komodo komodoedit

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

由于

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

1 个答案:

答案 0 :(得分:3)

如果你把

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

在你的程序中,然后你将被转储到python解释器。 (见Method to peek at a Python program running right now

这与暂停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