【问题标题】:Get Python stack trace while using cx_freeze使用 cx_freeze 时获取 Python 堆栈跟踪
【发布时间】:2016-11-06 08:01:46
【问题描述】:

我有一个用 Python 编写的数据采集程序,我将它作为可执行文件分发给我的合作伙伴(使用 cx_freeze),因为我不想打扰他们安装 Python 和安装所有软件依赖项。该计划已经运行良好一年了。最近程序开始崩溃(crash,not give a scripting error,即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 -q -X faulthandler 替换我的可执行部分Main.py,但这没有用。使用import faulthandlerfrom faulthandler import * 在我的cx_freeze 设置文件中导入faulthandler 没有帮助。

请指教。

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

【问题讨论】:

  • 基础 = 无;如果 sys.platform == "win32":; base = "Win32GUI";来自:cx-freeze.readthedocs.io/en/latest/…,如果windows下cmd:base="console"(法文名)
  • @Destrif 对不起,faulthandler 将如何发挥作用?
  • @Destrif 不一定是导入问题。实际上导入似乎是错误的,因为 faulthandler 通常在 Python 命令行上使用 Python Main.py -q -X faulthandler 调用。没有faulthandler,就没有任何问题。所以我的问题是关于如何在使用 cx_freeze 时获取程序的堆栈跟踪。
  • 好吧,太完美了:python 版本/Os
  • @Destrif Python 3.4 32 位在 Windows 10 上。我在 Python 3.4 环境中使用 Anaconda。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多