【问题标题】:Qt GUI has stopped workingQt GUI 已停止工作
【发布时间】:2011-07-14 00:38:00
【问题描述】:

我正在为 Windows 开发一个应用程序,使用 Windows XP 机器进行开发。该应用程序在 Windows XP 上运行正常,没有任何内存泄漏。但是,在 Windows 7 Home Premium 机器上运行会给我带来问题,但只是有时。

我正在开发一个使用 OpenCV 和 OpenGL 的 Qt 应用程序,它只在 W7 中从网络摄像头播放视频一段时间后崩溃。错误如下:

Problem signature:
Problem Event Name: APPCRASH
Application Name:   QtRIC.exe
Application Version:    0.0.0.0
Application Timestamp:  4e6ff3a5
Fault Module Name:  MSVCR90.dll
Fault Module Version:   9.0.30729.4940
Fault Module Timestamp: 4ca2ef57
Exception Code: c0000005
Exception Offset:   00024651
OS Version: 6.1.7601.2.1.0.768.3
Locale ID:  1033
Additional Information 1:   0a9e
Additional Information 2:   0a9e372d3b4ad19135b953a78882e789
Additional Information 3:   0a9e
Additional Information 4:   0a9e372d3b4ad19135b953a78882e789

我已阅读other questions 表明问题出在 Windows 注册表上,但我不确定如何解决此问题。它只是在这个版本的 Windows 7 中崩溃(有时)。谢谢!

【问题讨论】:

  • 相当大胆的声明,您的应用没有内存泄漏
  • @hexa,也许,至少我检查了我的部分代码,我找不到任何内存泄漏。它也会在某些时候在 XP 中崩溃,或者增加使用的内存,这不会发生。无论如何,谢谢。
  • 上次我在 Qt 应用程序中使用 OpenGL 时,我在追踪纹理内存泄漏时获得了很多乐趣,事实证明这是发生的,因为当我释放 no 时我不在正确的 GL 上下文中- 更长时间需要的纹理,因此无纹理调用并没有删除我认为的纹理。不知道这是否与您的问题有关,但我想我会提到它。
  • 谢谢杰里米。一开始我在内存​​泄漏和 OpenGL 方面也遇到了一些问题(同样的,上下文有问题),但是程序的内存使用量一直保持不变,它适用于 XP。我想(也许我错了,如果是,请纠正我)如果程序有一些内存泄漏,它会增加两个操作系统的内存。
  • @Frank,它在我用于开发的计算机 (XP) 上运行良好,所以我不知道如何进行回溯。

标签: c++ qt opencv


【解决方案1】:

c0000005 是访问冲突,00024651 是 MSVCR90.dll 中的偏移量。您得到的是偏移量,而不是绝对地址,因为您不知道也不关心 DLL 在内存中的加载位置。 MSVCR90.dll 的 PDB 会告诉您这是什么功能。

您可以在 XP 机器上调试您的程序。检查它是否具有相同的 DLL,以及它的加载位置。 (VS中的调试窗口)。然后添加偏移量(它是十六进制),并在反汇编中检查内存地址。假设 MSVCR90.dll 的 PDB 已加载,VS 会告诉您该地址处的函数。您可能需要向上滚动一下。

【讨论】:

  • 抱歉回复晚了,糟糕的一周。我在XP机器上调试了程序;问题是试图写入 00000000 的访问冲突。无论如何,调用的函数没有告诉我任何信息,我不知道如何将问题回溯到根函数。我还在 Windows 7 机器上调试了该程序,但是......在这种情况下它也不会崩溃。仍然不确定出了什么问题。 PS:它只是在某些情况下在 W7 机器中有时会崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2016-04-26
  • 2014-10-10
  • 2016-12-14
  • 2018-02-03
  • 1970-01-01
相关资源
最近更新 更多