Visual Studio - 严格调试构建

时间:2013-06-19 02:29:15

标签: c++ visual-studio-2010 visual-studio

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

configureshow都无法在发布版本中单步执行,我无法获得违规原因的线索。

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

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

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

是否可能以及如何?

1 个答案:

答案 0 :(得分:0)

我会尝试以下方法:

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

  • App Verifier。当您对句柄或关键部分执行错误时,它会引发异常并附带说明。

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