概述
特么真心属于手贱,将 Mac 电脑的操作系统进行了升级,升级为 Catalina,导致了一堆问题。VSCode 编写的 C++ 代码无法再进行断点调试,这就属于其中之一。真心欲哭无泪,又不知道如何倒退 OS 版本。经过一通 Google,最终在大神的分享下解决了问题。
问题现象
在 C++ 代码中,加上断点,想调试。而实际效果就行运行,就是断点根本不起作用了。
问题原因
通过查找 VSCode 的官方文档,VSCode 给出了一个模糊的回答,可能是因为 Mac 原来使用的 lldb 给删除了。有兴趣可以看这个 https://code.visualstudio.com/docs/cpp/config-clang-mac。文档上提到了一个 Issue 3829,https://github.com/microsoft/vscode-cpptools/issues/3829,有兴趣自己看。
解决方法
使用官方提供的 CodeLLDB。
安装 CodeLLDB 插件
在 VSCode 插件里,找到 CodeLLDB,如下图。安装这个插件。
离线安装包
我在 VSCode 插件中安装的时候,说不能安装,好像是签名还是什么,当时没有截图。要求我下载 vsix 离线安装包。
很简单,下载这个离线安装包,然后在插件中选择“从 VSIX 安装”即可。如下图。
修改 launch.json
在 launch.json 文件中,添加以下内容。
{
"name": "clang++ build and debug active file",
"type": "lldb",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"cwd": "${workspaceFolder}",
"preLaunchTask": "clang++ build active file"
}
修改 tasks.json
在 tasks.json 文件中,添加以下内容。
{
"label": "clang++ build active file",
"type": "shell",
"command": "clang++",
"args": [
"${fileBasename}",
"-o",
"${fileBasenameNoExtension}.out",
"-g"
],
"group": {
"kind": "build",
"isDefault": true
}
}
然后选择 clang++ build active file 这个选项,进行调试就好了。
彩蛋
原来 Mac 下 VSCode 一直没法显示 STL 变量的数据,现在用了 CodeLLDB 后,竟然可以显示 STL 变量的数据了,也算是一个福利吧。