我正在Qt中开发一个应用程序,我在解决应用程序时遇到问题,以找出因运行时错误导致应用程序崩溃的错误。数组访问超出范围或错误指针访问的错误。
QT Creator只是不会识别此运行时错误。我只有退出代码,有时在应用程序输出中有一个断言失败消息。类似的东西:
ASSERT failure in QList<T>::operator[]: "index out of range", file c:/Qt/2010.05/qt/include/QtCore/../../src/corelib/tools/qlist.h, line 463
如何找到进行此访问的位置? 我尝试在我的应用程序可执行文件上运行gdb,但在应用程序退出时出现错误代码(在上面的例子中为03),没有回溯(没有可用的堆栈)。
我安装了VS,有时它会要求调试异常(不是这种情况:/)但即便如此,也不会识别mingw32调试符号,只能给我一个看似错误的视图。
理想情况下,在发生崩溃我的应用程序的断言之前,我会有QT Creator转储堆栈。有什么提示吗?
答案 0 :(得分:2)
如果您在调试时遇到问题,请尝试为Qt的调试/警告消息创建自己的message handling function,并在该函数中添加断点。然后,只要打印了其中一条消息,您的程序就应该停止。