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博客 ,该博客还讲了 查看临时变量、查看内存 等内容。

posted @ 2023-08-07 09:30  夕西行  阅读(1480)  评论(0)    收藏  举报