Komodo - 暂停程序时观察变量并执行代码
在Visual Studio这个开发环境里,我可以随时暂停一个程序,查看它的变量,想看什么就看什么。我发现,在Komodo这个开发环境里,当程序崩溃并停止运行时,我也可以做同样的事情。但是奇怪的是,当我手动暂停程序时,似乎就无法做到这一点。我是不是做错了什么,还是说这根本就不可能?如果是后者,谁能告诉我为什么呢?这是和开发环境有关,还是和Python有关呢?
谢谢
补充问题:那我该怎么继续运行程序呢?我看到在调用code.interact(local = locals())之后,程序的表现就像还在运行一样,所以我不能点击“运行”按钮,只能点击“暂停”或“关闭”。
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