Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt Creator中使用CDB中断断言_C++_Qt_Debugging_Qt Creator_Windbg - Fatal编程技术网

C++ 在Qt Creator中使用CDB中断断言

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 &

我时不时地会得到一个断言。我无法反驳这一断言

我尝试了所有的回答建议,它们要么不起作用,要么不是我想要的:

您可以为Qt发出的消息/警告安装处理程序,并自行处理它们

我不希望每次都这样做

在QtCreator中,转到工具->选项->调试器->GDB并选择“发出qFatal时停止”

CDB不存在此选项

我手工编写了BreakInDebugger函数和调用该函数的assert宏

我不想碰Qt代码。此外,我还可以编辑
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