【发布时间】:2013-10-21 10:13:43
【问题描述】:
有一个多线程程序通过基于 COM 端口的通信和远程 (IP) 视频流与设备同时运行。该程序还使用 OpenCV 库来处理数据。
问题在于它在没有任何信号的情况下关闭(既没有捕获运行时错误,也没有捕获任何其他错误;日志文件也没有任何有用的东西)。设置了最顶层的应用程序错误事件处理程序,但仍然没有任何程序崩溃的迹象。它会在一段时间后关闭。
最大的困难是它可以在我们所有的 PC 上连续几天正常工作。但在客户 PC 上失败,因此测试过程非常缓慢。客户在不同的国家(亚洲本地化,而我们的是欧洲),但该程序是在支持 Unicode 的情况下构建的。
到目前为止,我们已经对本地化问题和防病毒活动进行了一些假设......但它没有给出任何结果。
程序是用 MinGW 4.4.x C++ 和 wxWidgets 2.9.3 编写的
任何可能来源的建议将不胜感激。
【问题讨论】:
-
所有的关闭都发生在相似的时间之后吗?
-
不,病例发生在不同的时间(10 分钟、30 分钟、1、1.5 小时)之后。但所有病例都发生在前 1.5 小时内。可能有一些内存泄漏,但我的电脑上没有。但实际上,我没有检查它是否存在与本地化因素有关的泄漏
-
您的飞机需要一个黑匣子。您应该创建一个具有大量日志记录的版本,以便通过查看它生成的最后一个日志条目来更好地定位崩溃。查看它们后,您可以进一步完善它们,以获得有关崩溃前发生的更详细的信息。
-
我希望你用亚洲本地化来测试它。
-
@LightnessRacesinOrbit 是对的。在大量记录和任何其他调查之前,您的首要任务应该是重现崩溃。您希望看到您的软件崩溃。向客户询问操作系统版本和其他相关数据,并准确重现他们的环境。在之前的一家公司中,在极端情况下,我们说服客户将他们的计算机寄给我们几天以进行调查,但首先您应该尽可能地模仿他们的环境。
标签: c++ multithreading crash