Visual Studio -严格调试构建
Visual Studio - Make debug build strict
项目在调试版本中运行良好,但当我试图在发布版本中运行时,项目就陷入了无尽的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
据说调试版本比发布版本更具容忍度,这可能导致发布版本运行失败。但是我不想在调试构建完成后花费太多精力来清除所有访问违规。我想调试构建同样严格的发布。
我会尝试如下:
-
构建版本与调试信息关闭优化。事实上,它将是调试构建,但没有调试宏。
-
应用验证器。当你对句柄或临界区做了错误的操作时,它会抛出一个异常并给出解释。
-
如果没有帮助-尝试调试释放模式。只需在调试器下运行即可。根据优化,您可能会看到异常的调用堆栈,并尝试更精确地使用一些日志记录以进行进一步调试。
相关文章:
- 用于自定义调试构建的 CMake qt 输入库后缀
- GCC:在调试构建中优化的静态数据成员
- BOOST :: MUTEX版本与调试构建
- MS Visual C 释放和调试构建之间的不同行为的可能原因
- STD ::复制在调试构建中失败
- 获得MAC地址的代码似乎会损坏内存,但仅在发布构建中而不是调试构建
- 错误LNK2019:未解决的外部符号-MSVC调试构建功能模板
- 在Windows 10上使用MINGW构建的Clang的调试构建无法运行
- Windows 10 UWP桌面桥应用程序(C ):调试构建中的VCLIBS依赖关系
- 预编译HEADERS在使用Qt Creator/qmake/MinGw的调试构建中不起作用
- 调试构建C++ "delete"慢
- 调试构建和发布构建、区别和用途是什么意思
- QCreator:如何创建调试构建配置
- 如何使用调试构建 libwebsockets(即 -g 以便我可以使用 gdb)?(我在libwebsockets函数上遇到段错误,ssl_ctrl() )
- 如何将静态发布库链接到调试构建中
- Visual Studio -严格调试构建
- 调试构建hello world崩溃,取决于优化水平
- 编写一个makefile以在调试构建中使用-D_GLIBCXX_DEBUG
- 在调试构建中,数据突然变为NULL
- GCC c++ 11调试构建,发布失败