Qt5 / c ++在调试期间生成“损坏的共享库列表”错误

时间:2014-10-02 15:04:56

标签: c++ qt gdb corruption qsqldatabase

我有一个Qt5 / C ++应用程序似乎工作正常,但在调试模式(GDB)下运行时,QT Creator控制台(stderr)会弹出此错误 - 偶尔!:

Corrupted shared library list: 0x7fffe8008e90 != 0x751e50

我找不到任何关于原因的参考,我无法弄清楚是什么触发它(其他与使用QLinkedList有关。)我尝试切换到QVector但有时候弹出相同的错误。

这是什么以及如何解决? Valgrind说没有内存腐败......这是一个虚假的报道问题吗?或者我做错了什么。


我已将上述错误追溯到下面的最后一行(第4行)。

Settings *programSettings =  Settings::instance();
QString driver=programSettings->database_driver();
driver="QMYSQL";  // Override for testing
m_db = QSqlDatabase::addDatabase(driver);

这对我没有意义......有人可以解释为什么QSqlDatabase :: addDatabase行会导致损坏吗?同样,为什么在调试时只出现错误...但在没有gdb的情况下运行时不会出现错误?

2 个答案:

答案 0 :(得分:1)

根据观看次数,似乎有很多人都有这个问题。我们将代码简化为一个简单的示例,然后重现问题。问题的根源不是用户代码,而是Qt Creator本身。我们不能做得更远 - 只要忍受它,直到Qt Creator修复程序出现。

答案 1 :(得分:0)

看起来你正在写一些不属于你自己的记忆。看起来您正在取消引用具有未初始化值的指针。在启用所有警告的情况下编译您的应用程序,并确保您了解所有警告。之后,您可能需要在最小化代码之后开始代码审核。