macOS VSCode 调试C++ STL容器显示size==0的问题

在macOS下使用VS code进行C++调试时,碰到vector、set、map等类的内容无法正常显示,只显示为size == 0

在VS code的Github issues有许多讨论,大体提出了两种解决方案。

方案一

安装CodeLLDB插件,使用简单,只需将launch.jsontype设置为lldb即可(原生类型一般为cppdbgcppvsdbg)。为了标准输入与输出,另外还需要添加terminal字段。

    {
      "name": "(lldb) CodeLLDB plugin",
      "type": "lldb", // 使用CodeLLDB插件进行Debug
      "request": "launch",
      "preLaunchTask": "clang++ compile",
      "environment": [],
      "cwd": "${workspaceFolder}",
      "program": "${workspaceFolder}/build/${fileBasenameNoExtension}",
      "args": [],
      "stopAtEntry": false,
      "MIMode": "lldb",
      "terminal": "integrated"  // CodeLLDB插件调出Terminal重定向标准输入
    },

方案二

使用lldb-mi,在launch.jsonmiDebuggerPath字段指定路径/path/to/lldb-mi

    {
      ...
      ...
      "MIMode": "lldb",
      "miDebuggerPath": "/path/to/lldb-mi"
      ...
      ...
    },

但遗憾的是Xcode 11貌似移除了lldb-mi,只能向前使用Xcode 10,lldb-mi位于/Applications/Xcode.app/Contents/Developer/usr/bin/lldb-mi

当然也可以通过brew安装llvm的方式,获取lldb-mi

brew install llvm

但在我的MBP环境中使用brew安装的lldb-mi有BUG,不能使用,暂未解决,有空再倒腾。

Reference

VS Code Github issue#2389
VS Code Github issue#1768

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章的首要目的是,通过配置VSCode,达到全平台的一致C/C++开发体验。 对于编写C/C++的环境,我们至...
    Upppping阅读 58,431评论 18 30
  • 前面的两篇文章中,我们分别提到了工厂模式、构造函数模式和原型模式创建对象,这三种模式是最基础的创建对象的模式,接下...
    柏丘君阅读 196评论 0 0
  • 陈温吐了一口气,捏着手里的钱,瞧住尹橙,质问:“我是叫花子?” 尹橙双手摊开,“师兄,我没这么讲你,我只说刚才那个...
    李方知阅读 429评论 0 0
  • 病原:发热的病原包括细菌、 病毒、 真菌、螺旋体 、立克次体、支原体衣原体、 原虫、蠕虫等。 发热是多数感染性疾病...
    37度文化工作室阅读 152评论 0 2