2009-11-10 52 views
2

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

感谢

编辑:其他的问题,我该怎么再继续该计划?根据我所看到的,在我调用code.interact(local = locals())之后,它的行为与程序仍在运行,因此我无法单击“运行”按钮,只能在“暂停”或“关闭”上单击。

回答

3

如果你把

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

在你的程序,那么你将被转储到Python解释器。 (请参阅Method to peek at a Python program running right now

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

按下Ctrl-d退出Python解释器并允许程序恢复。

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 
+0

这正是我想要的,但我注意到它似乎没有调用堆栈:( – 2009-11-10 21:57:59

+1

我编辑了我的回复t o解决调用堆栈问题并使用ctrl-d恢复。 – unutbu 2009-11-11 13:02:01