在 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")
我是 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")