"Debug Assertion Failed" 从发布模式更改为调试模式时出错
"Debug Assertion Failed" error when changing from release mode to debug mode
我 运行 我的项目处于发布模式,我没有遇到任何问题。
然后我将模式更改为调试模式,但出现错误 "debug assertion failed"。
这是导致它的代码:
QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
xmlReader->readNextStartElement();
QXmlStreamAttributes attributes;
attributes = xmlReader->attributes();
cout << (attributes.value("name").toString().toStdString());
在这条 cout 行之后,我得到了错误信息。
导致差异的模式之间可能有什么差异?
我想知道我需要为 运行 处于调试模式的项目更改什么。
不同模式的区别在于发布模式
assert( expr );
编译为空。在调试模式下,它编译成类似的东西:
if (!(expr))
assert_failed( "expr" );
(以上为提味,有细微之处)。这意味着您没有注意到释放模式下的问题(您可能做了一些事情,比如覆盖一些未使用的内存)。墨菲定律说,当您向大客户/您的教授进行演示时,您 会 注意到问题。
如果您查看出现断言的行,它会告诉您它在抱怨什么。你需要解决这个问题。
我 运行 我的项目处于发布模式,我没有遇到任何问题。 然后我将模式更改为调试模式,但出现错误 "debug assertion failed"。
这是导致它的代码:
QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
xmlReader->readNextStartElement();
QXmlStreamAttributes attributes;
attributes = xmlReader->attributes();
cout << (attributes.value("name").toString().toStdString());
在这条 cout 行之后,我得到了错误信息。
导致差异的模式之间可能有什么差异?
我想知道我需要为 运行 处于调试模式的项目更改什么。
不同模式的区别在于发布模式
assert( expr );
编译为空。在调试模式下,它编译成类似的东西:
if (!(expr))
assert_failed( "expr" );
(以上为提味,有细微之处)。这意味着您没有注意到释放模式下的问题(您可能做了一些事情,比如覆盖一些未使用的内存)。墨菲定律说,当您向大客户/您的教授进行演示时,您 会 注意到问题。
如果您查看出现断言的行,它会告诉您它在抱怨什么。你需要解决这个问题。