查看当前正在运行的Python程序的方法

17 投票
7 回答
5180 浏览
提问于 2025-04-15 15:27

有没有办法在不打断一个正在运行的Python程序的情况下,了解它正在做什么?

如果不行,有没有办法让一个正在运行的Python程序崩溃,这样我至少可以得到一个堆栈跟踪(我在Ubuntu上用PyDev)?

我知道我应该使用日志,或者在调试模式下运行,或者插入语句来运行调试器……

相关问题

7 个回答

4

要让一个Python程序“崩溃”,并显示出错误信息,你可以给它发送一个叫做SIGINT的信号。除非你提前设置了处理这个信号的方式,或者捕捉了KeyboardInterrupt(Python默认会安装一个SIGINT的处理程序,它会引发KeyboardInterrupt)。

至于调试,PyDev难道没有内置的调试支持吗?(通过pdb工具)

26

如果你在你的脚本中的任何地方放入

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

,Python会在那个地方启动一个Python的命令行界面,这个界面可以访问到脚本在那个时刻的所有状态。按下 ^D 可以退出这个命令行界面,然后继续执行脚本后面的内容。

你甚至可以在这个命令行界面中修改那个时刻的状态,调用函数等等。

10

如果你正在使用一个运行中的Python程序,但这个程序没有任何追踪或记录的机制,而你又想看看它内部在干什么,那么有两个选择:

撰写回答