我有一个Qt5/C++应用程序似乎工作正常,但在调试模式(GDB)下运行时,QT Creator控制台上弹出此错误消息标准错误) - 偶尔!:Qt5/C++在调试期间生成'损坏的共享库列表'错误
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的情况下运行时不会出现?
你在linux上吗? – 2014-10-02 15:19:30
我不认为Valgrind可以保证捕获所有类别的错误。 (例如,开箱即用,它不会捕获堆栈上的数组溢出。)我不知道它是否可能会丢失导致此消息的错误。 – 2014-10-02 15:28:35
是的 - 在Linux 64位Fedora 20上运行。我有Qt Creator的调试模式集(所以所有的调试选项都应该启用) – TSG 2014-10-02 19:29:56