使用cx_freeze时获取Python堆栈跟踪

时间:2016-07-04 14:36:02

标签: python python-3.4 stack-trace cx-freeze faulthandler

我有一个用Python编写的数据采集程序,我将其作为可执行文件分发给我的协作(使用cx_freeze),因为我不想打扰他们安装Python并安装所有软件依赖项。该计划一直运作良好一年。最近,程序开始崩溃(崩溃,没有给出脚本错误,即Python虚拟机本身崩溃)。所以我想知道什么库导致了这个问题。这个问题是随机发生的,因此很难系统地找出原因。

我了解了faulthandler,我想将它与我的cx_freeze一起使用,因为我不能确定问题是由于cx_freeze本身还是由于某些其他库而发生的。

问题:如何生成将使用faulthandler的cx_freeze可执行文件?

我尝试了什么:

我当前的cx_freeze设置脚本如下:

import sys
from cx_Freeze import setup, Executable
from GUI.Meta import *

target = Executable("Main.py",
                    #base = "Win32GUI",
                    icon = "GUI\\icon.ico",
                    compress=True,
                    targetName="Prog.exe")

setup(
    name = "My Software",
    version = SOFTWARE_VERSION,
    description = "",
    executables = [target])

我尝试用Main.py替换我的可执行部分Main.py -q -X faulthandler,但这不起作用。使用faulthandlerimport faulthandler在我的cx_freeze设置文件中导入from faulthandler import *无效。

请告知。

其他信息:我正在使用的依赖项(如果您可能知道问题的可能原因):PySide,Sympy,Numpy,H5py,PySerial,Matplotlib

1 个答案:

答案 0 :(得分:0)

我了解到我可以使用procdump。它可以从here下载。它是一个非常简单的程序,可以记录堆栈跟踪。您可以将其用于:

C:\>procdump -ma -i c:\Dumps

这将转储崩溃到该文件夹​​的任何程序的堆栈跟踪。