"调试断言失败"从发布模式更改为调试模式时出错

时间:2015-12-23 11:32:53

标签: c++ visual-studio debugging release

我在发布模式下运行我的项目,我没有遇到任何问题。 而且我将模式更改为调试模式并且出现错误"调试断言失败"。

导致它的代码:

   QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
   xmlReader->readNextStartElement();

   QXmlStreamAttributes attributes;
   attributes = xmlReader->attributes();
   cout << (attributes.value("name").toString().toStdString());

在这条cout线后,我有错误按摩。

导致差异的模式之间有什么区别?

我想知道在调试模式下运行项目需要更改什么。

1 个答案:

答案 0 :(得分:1)

模式之间的区别在于发布模式

assert( expr );

编译为零。在调试模式下,它编译为:

if (!(expr))
   assert_failed( "expr" );

(以上是给人的味道,有一些细微之处)。这意味着你没有注意到发布模式下的问题(你可能会做一些事情,比如写一些未使用的内存)。墨菲定律说,当你来向大客户/你的教授演示时,你注意到这些问题。

如果你查看断言发生的行,它会告诉你它在抱怨什么。你需要解决这个问题。