Release模式下调试(VS sln和cmake)
为什么有时候要用Release调试:Debug下能很好的运行,但在Release下运行就出错,检查原因就是缓冲区越界
【对于sln项目】
设置三处,就可以Release模式下调试:
1、链接器 > 调试 > 生成调试信息,是(/DEBUG)
2、C/C++ > 优化 > 优化 ,禁止(/Od)
3、C/C++ > 常规 > 调试信息格式 ,程序数据库(/Zi),注意:如果是库的话,只能(/Zi)
【对于cmake项目】
CMakeLists.txt中添加
# Release 调试配置 set(CMAKE_BUILD_TYPE Release) # 针对 MSVC 的调试配置 if(MSVC) # 调试信息 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") # 优化级别 - O1 比 O2 更易于调试 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O1") # 禁用内联 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ob0") # 帧指针 - 有助于调试 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oy-") # 链接器调试信息 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") endif()
【参考】
vs如何设置在Release下进行调试_vs release调试_Pailugou的博客-CSDN博客
Visual Studio2022编译器实用调试技巧_是个西兰花的博客-CSDN博客 ,该博客还讲了 查看临时变量、查看内存 等内容。

浙公网安备 33010602011771号