c++ - __do_global_ctors 段错误在项目的某处,无法找到它

标签 c++ qt constructor segmentation-fault qt5

我将一个项目从 Qt4 迁移到 Qt5,它编译了,但在它到达 main 函数之前,除了应用程序之外的所有东西都崩溃了。我知道有一个 null 值在某些时候搞砸了一些东西,也许是一个找不到的文件或什么的,但是有太多的 .cpps 和 .h 和库很难找到错误的来源而且我不能设置任何断点。我有很多调试数据,所以也许你们中的任何人都可以指导我朝着正确的方向前进。老实说,我不知道如果没有堆栈溢出我会做什么,所以提前谢谢你。

调试时我遇到不同的崩溃: enter image description here

enter image description here enter image description here

每种情况下的堆栈显示不同的崩溃,但它们都有一些共同点,就是这个 __do_global_ctors 东西,我已经研究过,显然它与构造函数有关,但我没有知道我应该寻找什么。
如果我遗漏了任何信息,请务必询问。我希望有人能启发我,我非常接近这个工作。

最佳答案

__do_global_ctors()在你的 main() 之前被调用,因为框架需要实例化 main() 的所有全局对象可能会用到。

此方法将为所有静态对象及其组件对象调用构造函数。 IE。所有静态构造函数。

从堆栈跟踪来看,段错误似乎发生在 QGlobalStatic<QMutex, [incomlpete types - see trace for details]> 的构建过程中。对象,这是有道理的。这是由 qRegisterResourceData build 的作为 qInitResources_mimetypes 的一部分.

尝试在 qrc_mimetypes.cpp 中的这个函数中放置一个断点(如果你有源代码),看看你会在哪里。或者查看有关 mimetypes 初始化的 Qt 文档,并确保您已正确指定应用程序的资源。

关于c++ - __do_global_ctors 段错误在项目的某处,无法找到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23693961/

相关文章:

c++ - AVX2的 vector 移位的AVX替代方案?

python - PyQt 防止应用程序的多个实例弹出同一个对话框

c++ - 如果我们使用参数构造函数,我们是否需要在 C++ 中提供默认构造函数?

c++ - 在 Win7 x64 上编译 Qt 应用程序的最简单方法

c++ - C++ 中的线程性能

c++ - Qt 中的 Tab 键顺序

linux - 如何在linux中打开系统日期、声音、显示属性?

c++ - new int[10]() 是有效的 C++ 吗?

android - 在适配器的构造函数中膨胀 xml 文件

包含外部库时 C++ 多重定义错误