Ped*_*dro 32 c++ debugging visual-studio-2010 release-mode visual-c++
我必须调试一个c ++项目,但由于一个依赖项无法在调试模式下编译,到目前为止我还无法修复该问题,我想尝试在发布模式下调试项目.
目前应用程序由于空指针而崩溃,但我没有导致错误的代码.由于在发布模式中显然忽略了断点,我想知道找出错误的最佳方法是什么.
Ed *_* S. 66
在VS中,右键单击您的项目,选择"属性".
单击C/C++节点.将调试信息格式设置为C7兼容(/ Z7)或程序数据库(/ Zi).
展开"链接器"并单击"常规"节点.将启用增量链接设置为否(/ INCREMENTAL:NO).
选择"调试"节点.将生成调试信息设置为是(/ DEBUG).
选择"优化"节点.将参考设置为是(/ OPT:REF).
if/OPT:指定了REF,/ OPT:默认情况下ICF处于打开状态.
这是直接从微软的文档中删除的:
我一直这样做,几乎从不在调试模式下调试.如您所知,发布版本中发生的许多错误可能不会出现在调试版本中(几乎可以肯定是调用UB引起的错误).
此外,我正在研究一个使用大量图像处理并对大图像执行大量压缩/解压缩的项目.使用慢速调试构建简直是不切实际的.
您不能总是只更改项目设置并重新编译.
有时您有一个要调试的已发布版本,或者客户端发送的转储文件.
在使用优化的发行版中编译C++项目时,调试器有时不会显示正确的对象信息.
局部变量通常是第一个去的,很多时候,这个对象的信息会丢失给调试器.
原因是编译器使用可用的硬件寄存器来保存信息,并使用优化来避免分配局部变量.
我已经建议了一种在这里找到缺失信息的方法: