【问题标题】:Cant debug `iostream` related code when using MSVC toolchain in clion在 clion 中使用 MSVC 工具链时无法调试 `iostream` 相关代码
【发布时间】:2020-07-30 11:31:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ debugging cmake clion


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      相关资源
      最近更新 更多