通过 Visual Studio IDE 中的 C#,我可以随时暂停程序并观察其变量,检查我想要的任何内容。我注意到,使用 Komodo IDE,当出现崩溃并停止程序流程时,我可以执行完全相同的操作。但由于某种原因,似乎当我尝试在手动暂停程序时执行相同的操作时,无法实现相同的效果。我做错了什么或者这是不可能的吗?在后一种情况下,有人愿意解释我为什么吗?是IDE相关还是Python相关?
谢谢
编辑:其他问题,我怎样才能继续该程序?据我所知,在我调用 code.interact(local = locals()) 后,它的行为就像程序仍在运行一样,所以我无法单击“运行”按钮,只能单击“暂停”或“关闭”。
最佳答案
如果你放
import code
code.interact(local=locals())
在你的程序中,那么你将被转储到 python 解释器。 (参见Method to peek at a Python program running right now)
这与暂停 Komodo 略有不同,但也许您可以使用它来实现相同的目标。
按 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
关于python - Komodo - 在程序暂停时观察变量并执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1711193/