如何调试导致python崩溃的python脚本
Posted
技术标签:
【中文标题】如何调试导致python崩溃的python脚本【英文标题】:How to debug python script that is crashing python 【发布时间】:2014-10-29 23:59:56 【问题描述】:我正在尝试帮助调试导致 python (2.7) 本身崩溃的 python 脚本。
该脚本将一些信息记录到一个文件中,并在每次运行时在不同的停止点结束,或者至少它写出的内容在不同的位置。 脚本已经有一个 try\catch 的。 该脚本之前运行正常,没有错误 这是在 Window 2008 服务器上,具有相当多的 RAM,运行时 CPU 使用量不大。所以我的问题:
是否有可以提供帮助的工具或技术? 我看到可以导入一个 pdb 模块,但不确定这是否有助于解决此问题。 当 py 脚本使 python 本身崩溃时,您将如何调试它?GB
【问题讨论】:
硬件问题?因为您使用的是不安全的多线程代码,所以出现了一些模糊的竞争条件? Python安装损坏?损坏的外部库?如果它总是在不同的位置崩溃,它可以是任何东西...... 【参考方案1】:所以日志中没有异常?它只是在不同的地方随机退出?
要查看每条语句的执行情况,请使用trace 模块:
python -u -m trace -t program.py
要在调试器中运行程序,请使用pdb:
python -m pdb program.py
通过这两个,您应该能够看到它是否是程序中导致它退出的东西。如果你没有看到任何证据或模式,那么它可能是程序之外的东西导致它死亡。
在 Linux 上,我也会尝试使用 strace
运行程序并观察 OOM 杀手或段错误。不知道在 Windows 中会有哪些类似的步骤,Windows 没有 OOM 杀手。
【讨论】:
我建议将 pdb 替换为 PuDB。它是纯控制台调试器和更像 IDE 的调试器之间的完美混合,所有这些都在控制台环境中。在 Windows 上,对于内存,它可能类似于 Resource Monitor 或更高级的 Process Monitor。以上是关于如何调试导致python崩溃的python脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何从命令行调试使用 python -m 运行的 Python 模块?
Python Cookbook(第3版)中文版:14.12 调试基本的程序崩溃错误