C++ 在Qt Creator中使用CDB中断断言
我时不时地会得到一个断言。我无法反驳这一断言 我尝试了所有的回答建议,它们要么不起作用,要么不是我想要的: 您可以为Qt发出的消息/警告安装处理程序,并自行处理它们 我不希望每次都这样做 在QtCreator中,转到工具->选项->调试器->GDB并选择“发出qFatal时停止” CDB不存在此选项 我手工编写了BreakInDebugger函数和调用该函数的assert宏 我不想碰Qt代码。此外,我还可以编辑C++ 在Qt Creator中使用CDB中断断言,c++,qt,debugging,qt-creator,windbg,C++,Qt,Debugging,Qt Creator,Windbg,我时不时地会得到一个断言。我无法反驳这一断言 我尝试了所有的回答建议,它们要么不起作用,要么不是我想要的: 您可以为Qt发出的消息/警告安装处理程序,并自行处理它们 我不希望每次都这样做 在QtCreator中,转到工具->选项->调试器->GDB并选择“发出qFatal时停止” CDB不存在此选项 我手工编写了BreakInDebugger函数和调用该函数的assert宏 我不想碰Qt代码。此外,我还可以编辑qvector.h并添加一行,这样我就可以打断: if (i >= 0 &
qvector.h
并添加一行,这样我就可以打断:
if (i >= 0 && i < d->size)
qDebug() << "oops";
if(i>=0&&isize)
qDebug()正如在中发现的,这是由于的testlib禁用了通常与断言一起出现的错误对话框。将以下应用程序参数传递给自动测试可解决此问题:
-nocrashhandler
更改改进了此功能的文档。另一个问题是关于mingw32+gdb的,那里的建议肯定对cdb不起作用。是的,我知道,我只是想澄清这不是重复的。我已经创建了。
---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Error!
Program: C:\dev\qt5-dev-debug\qtbase\lib\Qt5Cored.dll
Module: 5.8.0
File: C:\dev\qt5-dev\qtbase\src\corelib\global\qglobal.cpp
Line: 3045
ASSERT failure in QVector<T>::operator[]: "index out of range", file c:\dev\qt5-dev-debug\qtbase\include\qtcore\../../../../qt5-dev/qtbase/src/corelib/tools/qvector.h, line 433
(Press Retry to debug the application)
---------------------------
Abort Retry Ignore
---------------------------
#include <QString>
#include <QtTest>
class Untitled3Test : public QObject
{
Q_OBJECT
public:
Untitled3Test();
private Q_SLOTS:
void testCase1();
};
Untitled3Test::Untitled3Test()
{
}
void Untitled3Test::testCase1()
{
QVector<int> i;
i[0] = 0;
}
QTEST_APPLESS_MAIN(Untitled3Test)
#include "tst_untitled3test.moc"
-nocrashhandler