2

该项目在调试版本中运行良好,但是当我尝试在发布版本中运行时,该项目就陷入了无尽的access violation.
例如,第一次违规发生在:
log4cpp::PropertyConfigurator::configure(config_op->m_log4cpp); PropertyConfigurator接受QString参数。
第二个 at:
middle_widget[0]->show(); middle_widget[0]是一个QWidget对象并且已经初始化。

两者configureshow不能单步进入发布版本,我无法找到违规原因的线索。

这两种违规行为似乎都在访问同一个地方0xbaadf00d

Unhandled exception at 0x77ad15de in Npptrail-Empty.exe:   
0xC0000005: Access violation reading location 0xbaadf00d

据说调试构建比发布构建更宽容,这可能导致发布构建运行失败。但是我不想在调试构建完成后花费太多精力来清除所有访问冲突。我希望调试版本与发布版本一样严格。

有可能吗?怎么做?

4

1 回答 1

0

我会尝试以下方法:

  • 使用关闭优化的调试信息构建版本。实际上,它将是调试版本,但没有调试宏。有时它会有所帮助。

  • 应用验证器。当您对句柄或关键部分做错事时,它将引发异常并进行解释。

  • 如果没有任何帮助 - 尝试调试发布模式。只需在调试器下运行它。根据优化,您可能会看到异常的调用堆栈,并尝试更精确地使用一些日志记录以进行进一步调试。

于 2013-06-19T04:49:52.740 回答