2014-09-05 119 views
3

我试图帮助调试导致python(2.7)本身崩溃的python脚本。如何调试python脚本崩溃python

  • 脚本将一些信息记录到一个文件中,并在每次运行时停止在不同的停止位置,或者至少它写出的内容位于不同的位置。
  • 该脚本已经有try \ catch's了。
  • 该脚本以前的工作没有错误
  • 这是在Window 2008服务器上,有一点点RAM和运行没有太多的CPU使用率。

所以我的问题:

  • 是否有工具或技术,可以帮助?
    • 我看到有一个我可以导入的pdb模块,但不知道这是否有助于解决这个问题。
  • 当py脚本崩溃python本身你将如何调试?

GB

+0

硬件问题?由于您使用不安全的多线程代码而导致一些模糊的竞态条件?损坏的Python安装?外部库损坏?如果它总是在不同的位置崩溃,它可以是任何... – 2014-09-05 06:49:52

回答

5

因此,有日志中没有异常?它只是在不同的地方随机退出?

要看到每一个声明,因为它的执行,使用trace模块:

python -u -m trace -t program.py 

要在调试器中运行的程序,使用pdb

python -m pdb program.py 

有了这两个,你应该能够看看它是否在程序中导致它退出。如果你没有看到任何证据或模式,那么它可能是程序之外的东西导致它死亡。

在Linux上,我也会尝试运行程序strace并观看OOM杀手。不知道在Windows中有什么类似的步骤(Windows没有OOM杀手)。

+1

我建议交换* pdb * [PuDB](https://pypi.python.org/pypi/pudb)。这是纯粹的控制台调试器和更类似于IDE的调试器之间的完美混合体,全部都在控制台环境中。在Windows *上,对于内存来说,它可能是** Resource Monitor **或更高级的[Process Monitor](http://technet.microsoft.com/zh-cn/sysinternals/bb896645)。 – khampson 2014-09-06 00:26:19