查看当前正在运行的Python程序的方法
有没有办法在不打断一个正在运行的Python程序的情况下,了解它正在做什么?
如果不行,有没有办法让一个正在运行的Python程序崩溃,这样我至少可以得到一个堆栈跟踪(我在Ubuntu上用PyDev)?
我知道我应该使用日志,或者在调试模式下运行,或者插入语句来运行调试器……
相关问题
- 从正在运行的Python程序获取堆栈跟踪 - 这个问题非常相似,但更一般,主要是关于调试一个正在运行的Python程序。
7 个回答
4
要让一个Python程序“崩溃”,并显示出错误信息,你可以给它发送一个叫做SIGINT的信号。除非你提前设置了处理这个信号的方式,或者捕捉了KeyboardInterrupt(Python默认会安装一个SIGINT的处理程序,它会引发KeyboardInterrupt)。
至于调试,PyDev难道没有内置的调试支持吗?(通过pdb工具)
26
如果你在你的脚本中的任何地方放入
import code
code.interact(local=locals())
,Python会在那个地方启动一个Python的命令行界面,这个界面可以访问到脚本在那个时刻的所有状态。按下 ^D 可以退出这个命令行界面,然后继续执行脚本后面的内容。
你甚至可以在这个命令行界面中修改那个时刻的状态,调用函数等等。
10
如果你正在使用一个运行中的Python程序,但这个程序没有任何追踪或记录的机制,而你又想看看它内部在干什么,那么有两个选择:
在Solaris或Mac系统上,如果你使用的是系统自带的Python,可以使用dtrace工具。