系统:macOS Catalina 版本 10.15.2
xcode版本:11.3
配置好c_cpp_properties.json, tasks.json, launch.json 后, vscode无法进行debug,一debug就跑出结果,断点无效了。
在墙内寻找了一圈,有关于lldb签名的问题link,我尝试了一下,还是没有办法debug。让我很郁闷,又不想转投像CLion这样的IDE。。。
后来实在没有办法就墙外找了一下,果然国外这种问题就有了。link.
从他们一来一回的聊天记录,我发现原来居然是xcode版本的问题——我的版本太新了。苹果的东西真不能早更新。。。
所以我将xcode退回到10.3的版本。
可以先去这里下载;
先通过左侧搜索框搜索,然后把这个.xip文件下载下来。
然后卸载新版的xcode,直接安装xode10.3。
安装完成后,将在vscode的配置文件launch.json中加入"miDebuggerPath": “/Applications/Xcode.app/Contents/Developer/usr/bin/lldb-mi”,问题解决。
温馨提示,vscode11.3这个版本中并没有lldb-mi, vscode10.3中是有的,这就是苹果更新的锅。。。
为了方便大家,我这里附上配置文件(个人建议还是自己手动生成更适合自己的机器)
c_cpp_properties.json
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"macFrameworkPath": [
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"miDebuggerPath": "/Applications/Xcode.app/Contents/Developer/usr/bin/lldb-mi",
"MIMode": "lldb",
"preLaunchTask": "clang++ build active file"
}
]
}
其实,还有一种方法,使用另一种扩展(CodeLLDB)取代。
强力推荐:
首先安装扩展CodeLLDB:
然后依次配置好c_cpp_properties.json, tasks.json文件(建议手动配置,和上面一样);
后面就是最重要的不同之处:
1、点击创建
2、选择第二个(我们刚刚安装的扩张CodeLLDB)
3、生成的launch.json文件
4、很不幸,如果这时候你进行调试,就会报错:Internal debugger error: unable to find executable for '/Users/****/Doc/CplusWorkspace/
5、你需要把
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
所以把
附上最终的launch.json文件
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/${fileBasenameNoExtension}",
"terminal": "external",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
写到这里,我之所以推荐该方法是因为方法1虽然解决了debug的问题,但本身还是有bug的。方法二就很完美了!
其实,我试错了很久才解决了该问题,主要是vscode这个编辑器真的很棒!有了他,我不需要sublime,不需要pycharm,不要要clion,不需要eclipse,哈哈哈!