首页 > 解决方案 > 在 clion 中使用 MSVC 工具链时无法调试“iostream”相关代码

问题描述

我是 C++ 开发的新手,我发现我无法在 iostream 相关类中放置断点,如果我强制单步调用 iostream 函数,basic_streambuf::xsgetn我将得到一个我完全没有兴趣阅读的反汇编视图。

我正在使用带有工具链的 clion Visual Studio。有没有办法用这些类进行正常调试?

顺便说一下,如何使用lldb来获取实际值unique_ptr,现在我用ptr._Mypair._Myval2的是看起来真的很难看....

标签: c++debuggingcmakeclion

解决方案


经过几天的挖掘。事实证明,将以下内容添加到 CMakeLists.txt 解决了问题

if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
    message(STATUS " MSVC DEBUG RUNTIME")
    # enable debugging of runtime library
    set_property(TARGET archive_patcher_cpp PROPERTY
            MSVC_RUNTIME_LIBRARY "MultiThreadedDebug")
endif()

注意:这将静态链接运行时,因此可执行文件大小会更大,这需要 cmake 3.15 或更高版本。

参考:https ://cmake.org/cmake/help/v3.15/prop_tgt/MSVC_RUNTIME_LIBRARY.html

对于低于 3.15 的 cmake:

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")

推荐阅读