VSCode 在 macOS下无法调试C/C++ (LLDB)

目录

  • 问题描述
  • 解决方法
  • 后记

问题描述

系统: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文件下载下来。
VSCode 在 macOS下无法调试C/C++ (LLDB)_第1张图片
然后卸载新版的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:
VSCode 在 macOS下无法调试C/C++ (LLDB)_第2张图片
然后依次配置好c_cpp_properties.json, tasks.json文件(建议手动配置,和上面一样);
后面就是最重要的不同之处:
1、点击创建
VSCode 在 macOS下无法调试C/C++ (LLDB)_第3张图片
2、选择第二个(我们刚刚安装的扩张CodeLLDB)
VSCode 在 macOS下无法调试C/C++ (LLDB)_第4张图片
3、生成的launch.json文件
VSCode 在 macOS下无法调试C/C++ (LLDB)_第5张图片
4、很不幸,如果这时候你进行调试,就会报错:Internal debugger error: unable to find executable for '/Users/****/Doc/CplusWorkspace/
5、你需要把替换成你的编译程序的名字,显然,你每编译一个项目就要修改它显然不合适,所以我们想到了之前tasks.json里面有:

"args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],

所以把替换成${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,哈哈哈!

你可能感兴趣的:(C++)