在 clion 中使用 MSVC 工具链时无法调试 iostream 相关代码

Cant debug `iostream` related code when using MSVC toolchain in clion

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

我正在使用带 Visual Studio 工具链的 clion。有没有办法用那些 classes 正常调试?

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

经过几天的挖掘。事实证明,将以下内容添加到 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()

注意:这将 link 静态运行,因此可执行文件的大小会大很多,这需要 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")