c++ - 在 clion 中使用 MSVC 工具链时无法调试“iostream”相关代码
问题描述
我是 C++ 开发的新手,我发现我无法在 iostream 相关类中放置断点,如果我强制单步调用 iostream 函数,basic_streambuf::xsgetn
我将得到一个我完全没有兴趣阅读的反汇编视图。
我正在使用带有工具链的 clion Visual Studio
。有没有办法用这些类进行正常调试?
顺便说一下,如何使用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()
注意:这将静态链接运行时,因此可执行文件大小会更大,这需要 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")
推荐阅读
- laravel - Laravel如何将内部集合数据提取到父级
- javascript - 有没有办法从网站的源代码以编程方式运行 javascript 函数
- spring-boot - 带有 gmail SMTP 的 JavaMail - 如何处理不存在的电子邮件地址
- javascript - 如何在我的 div 中有一个滚动条而不是在我的窗口中?
- git - 为什么即使在 git 上合并 2 个分支后 2 个文件也不同?
- python - 用于从 S3 下载文件的模拟 boto3 响应
- typescript - 如何在 typescript 中公开 API 返回的类型
- sql-server - 是否有任何理由同时使用具有增量 PK SerialID 的非集群 36 NVARCHAR id?
- laravel - 通过不同命名路由调用的视图文件中的链接
- reactjs - 不同选定数组的可重用 React Map 方法