在macOS下使用VS code进行C++调试时,碰到vector、set、map等类的内容无法正常显示,只显示为size == 0
。
在VS code的Github issues有许多讨论,大体提出了两种解决方案。
方案一
安装CodeLLDB插件,使用简单,只需将launch.json
的type
设置为lldb
即可(原生类型一般为cppdbg
或cppvsdbg
)。为了标准输入与输出,另外还需要添加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.json
的miDebuggerPath
字段指定路径/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,不能使用,暂未解决,有空再倒腾。
网友评论