该项目在调试版本中运行良好,但当我尝试在发布版本中运行时,该项目陷入了无尽的access violation
之中。
例如,第一次违规发生在:
log4cpp::PropertyConfigurator::configure(config_op->m_log4cpp);
PropertyConfigurator
需要QString
个参数
第二个:
middle_widget[0]->show();
middle_widget[0]
是一个QWidget
对象,已初始化。
configure
和show
都无法在发布版本中单步执行,我无法获得违规原因的线索。
这两个违规行为似乎都访问了同一个地方0xbaadf00d
:
Unhandled exception at 0x77ad15de in Npptrail-Empty.exe:
0xC0000005: Access violation reading location 0xbaadf00d
据说调试版本比版本构建更宽容,这可能导致版本构建运行失败。但是,在调试构建完成后,我不想做太多努力来清除所有访问冲突。我希望debug build与release一样严格。
是否可能以及如何?
答案 0 :(得分:0)
我会尝试以下方法:
使用已关闭优化的调试信息构建版本。实际上,它将是调试版本,但没有调试MACRO。有时它会有所帮助。
App Verifier。当您对句柄或关键部分执行错误时,它会引发异常并附带说明。
如果没有任何帮助 - 尝试调试发布模式。只需在调试器下运行它。根据优化,您可能会看到异常的调用堆栈,并尝试更精确地使用某些日志记录以进行进一步调试。